当前位置: 首页 > wzjs >正文

博彩网站开发者犯法吗seo外链论坛

博彩网站开发者犯法吗,seo外链论坛,花店网页模板html,海外版tiktok官网入口- 第 89 篇 - Date: 2025 - 04 - 06(发博客时间) Author: 郑龙浩/仟墨 【蓝桥第27场月赛】 蓝桥第27场月赛 - 赛后总结 记笔记时间: 2025 -03 -26 文章目录 蓝桥第27场月赛 - 赛后总结1 抓猪拿国一题目问题描述输入格式输出格式 思路代码 2 蓝桥字符题目问题描述输入格式输出…

- 第 89 篇 -
Date: 2025 - 04 - 06(发博客时间)
Author: 郑龙浩/仟墨
【蓝桥第27场月赛】

蓝桥第27场月赛 - 赛后总结

记笔记时间: 2025 -03 -26

文章目录

  • 蓝桥第27场月赛 - 赛后总结
  • 1 抓猪拿国一
    • 题目
      • 问题描述
      • 输入格式
      • 输出格式
    • 思路
    • 代码
  • 2 蓝桥字符
    • 题目
      • 问题描述
      • 输入格式
      • 输出格式
      • 输入样例
      • 输出样例
      • 说明
    • 思路
    • 代码
  • 3 蓝桥大使
    • 题目
      • 问题描述
      • 输入格式
      • 输出格式
      • 输入样例
      • 输出样例
      • 说明
    • 思路
    • 代码
  • 4 拳头对决
  • 5 未来竞赛
    • 题目如下:
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 说明
    • 思路
    • 代码
  • 6 备份比赛数据
    • 题目
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 样例说明
    • 思路
    • 代码

1 抓猪拿国一

题目

问题描述

蓝桥杯赛场上,选手小王脑洞大开,跑去问裁判:“裁判,蓝桥杯要是改成‘蓝桥抓猪大赛’,得抓多少头猪才能拿国一啊?”裁判愣了愣,但为了显摆幽默,淡定答道:“好说!想拿国一,从第一届开始,每届抓的猪数得是这一届的届数加上前面所有届数的总和。比如,第一届抓 11 头,第二届抓 1+2=31+2=3 头,第三届抓 1+2+3=61+2+3=6 头 …… 今年是第十六届蓝桥杯,你自己算算吧!”

现在,请你帮小王算算,要拿国一,总共得抓多少头猪?

输入格式

无。

输出格式

输出一个整数,表示答案。

思路

很水的一道题,累加即可

代码

#include <iostream>
using namespace std;
int main()
{ios_base::sync_with_stdio(false);cin.tie(nullptr); cout.tie(nullptr);// 请在此输入您的代码int num = 0;for (int i = 1; i <= 16; i++) {num += i;}cout << num;return 0;
}

2 蓝桥字符

题目

问题描述

蓝桥杯官方近日收到了一份神秘的包裹,里面包含一个 U 盘和一张纸条,纸条上仅写有一个由小写字母组成的字符串 SS。经过初步检查,U盘内存储的内容似乎与即将到来的蓝桥杯大赛有关,但 U 盘被加密,无法直接访问。根据情报提供方的提示,U盘的密码与字符串 SS 中特定子序列的出现次数密切相关。

具体来说,密码等于字符串 SS 中子序列 lan 的出现次数。这里的子序列是指从字符串 SS 中按顺序选取字符(不一定连续)组成的新字符串。

为了帮助蓝桥杯官方顺利解开 U 盘的密码,你需要编写一个程序,计算字符串 SS 中子序列 lan 的出现次数。

输入格式

输入为一个由小写字母组成的字符串 SS,长度不超过 105105。

输出格式

输出一个整数,表示字符串 SS 中子序列 lan 的出现次数。

输入样例

lanlan

输出样例

4

说明

在字符串 lanlan 中,子序列 lan 出现了 44 次。具体来说,可以选取以下位置的字符:

  1. 第 1、2、31、2、3 个字符(l, a, n
  2. 第 1、2、61、2、6个字符(l, a, n
  3. 第 1、5、61、5、6 个字符(l, a, n
  4. 第 4、5、64、5、6 个字符(l, a, n

思路

  1. 变量含义
    • l:记录当前可用的 ‘l’ 数量。
    • a:记录当前可用的 “la” 子序列数量。
    • n:记录当前可用的 “lan” 子序列数量。
  2. 如何计算
    • 遇到 ‘l’:l++(新的子序列起点)。
    • 遇到 ‘a’:a += l(每个 ‘l’ 可与当前 ‘a’ 组成 “la”)。
    • 遇到 ‘n’:n += a(每个 “la” 可与当前 ‘n’ 组成 “lan”)。

代码

#include <bits/stdc++.h>
using namespace std;
string arr;
int l = 0, a = 0, n = 0;
int main()
{ios_base::sync_with_stdio(false);cin.tie(nullptr); cout.tie(nullptr);// 请在此输入您的代码cin >> arr;for (char i : arr) {if (i == 'l')l++;else if (i == 'a')a += l;else if (i == 'n')n += a;}cout << n << '\n';return 0;
}

3 蓝桥大使

题目

问题描述

小蓝和小桥是某学校的蓝桥大使,他们的主要任务是作为宣传人员在校内宣传蓝桥杯比赛。蓝桥杯是一项全国性的编程竞赛,吸引了众多学生参与。为了扩大比赛的影响力,学校决定在每个班级进行宣传,而小蓝和小桥则负责这项工作。

学校共有 nn 个班级,每个班级都需要进行宣传。小蓝和小桥可以选择去不同的班级宣传,但为了公平起见,他们决定尽量平均分配任务。具体来说:

  • 小蓝将去 ⌊n2⌋⌊2n⌋)个班级宣传。
  • 小桥将去剩下的 n−⌊n2⌋n−⌊2n⌋个班级宣传。

对于第 ii 个班级:

  • 如果小蓝去宣传,他将获得 AiA**i 元的酬劳。
  • 如果小桥去宣传,她将获得 BiB**i 元的酬劳。

小蓝和小桥希望最大化他们总共获得的酬劳,请你帮他们计算总酬劳最大值是多少?

输入格式

第一行包含一个整数 n(1≤n≤105)n(1≤n≤105),表示班级的数量。

接下来 nn 行,每行包含两个整数 Ai,Bi(1≤Ai,Bi≤109)A**i,B**i(1≤A**i,B**i≤109),分别表示小蓝和小桥去第 ii 个班级宣传时获得的酬劳。

输出格式

输出一个整数表示答案。

输入样例

5
10 20
30 40
100 60
90 80
100 110

输出样例

360

说明

小蓝去第 3,43,4 个班级宣传,小桥去第 1,2,51,2,5 个班级宣传,总共可以获得 100+90+110+20+40=360100+90+110+20+40=360 元。

思路

首先,先将小蓝ai - 小桥bi的值存入一个数组ci,也就是存储差值

然后,对这个差值进行从大到小的排序 --> 实际上可以理解为: ai - bi 存入 ci 然后对 c 进行排序,排序后就是哪个班级对于ai酬劳较大,哪个在前,

这样的话,只需要将前边一半的班级(ai酬劳肯定大于bi)给a即可,然后其余的给b

最后进行累加操作,将前边那一半排好序的班级给a,其余给b

代码

// 蓝桥大使 方法2
// // 思路:
// 首先,先将小蓝ai - 小桥bi的值存入一个数组ci,也就是存储差值
// 然后,对这个差值进行从大到小的排序
// ---> 实际上可以理解为: ai - bi 存入 ci 然后对 c 进行排序,排序后就是哪个班级对于ai酬劳较大,哪个在前,
// 这样的话,只需要将前边一半的班级(ai酬劳肯定大于bi)给a即可,然后其余的给b
// 最后进行累加操作,将前边那一半排好序的班级给a,其余给b
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int a[N], b[N]; // 小蓝 小桥
int n; // 班级数量
int main( void ) {cin >> n; // 输入班级数量vector <pair <int, int>> c(n); // 存储 a - b 的差值long long sum = 0; // 存储总报酬// 输入a与b在每个教室的报酬for (int i = 0; i < n; i ++) {cin >> a[i] >> b[i];c[i] = {{a[i] - b[i]}, i}; // 存入键  与 值  ---> 也就是差值 与 第几个教室}sort (c.rbegin(), c.rend()); // 对a与b在每个教室报酬的差值进行排序,从打到小排  --> 按照差值进行排序,随带着教室序列也进行了排序int n2 = n / 2; // n 的一半for (int i = 0; i < n; i ++){if (i < n2)sum += a[c[i].second]; // 将排序以后的教室的编号依次赋值if (i >= n2)sum += b[c[i].second]; }cout << sum << '\n';return 0;
}

4 拳头对决


没做明白

5 未来竞赛

题目如下:

问题描述

时间飞逝,转眼间来到了5025年,蓝桥杯大赛已经成为全球瞩目的盛事,吸引了来自世界各地的顶尖选手。每个国家和地区都派出了自己的精英队伍,准备在这场科技盛宴中大显身手。

本次大赛共有 NN 位参赛者,第 ii 位参赛者的编号位 ii,来自编号为 AiA**i 的国家。比赛机房的电脑从左到右依次编号为 11 到 NN,每位参赛者将在与自己编号相同的电脑上进行比赛。为了确保比赛的公平性,蓝桥杯官方决定对部分参赛者的电脑进行抽样监控。然而,监控方式必须满足以下条件:

  1. 监控的电脑数量不能为零。
  2. 同一个国家或地区的参赛者最多只能有两台电脑被监控,不能过多集中监控某个国家的选手。
  3. 如果同一个国家或地区的两台电脑被监控,它们之间的距离不能超过 DD。这里的距离定义为两台电脑编号之差的绝对值。

由于可能的监控方式实在太多,官方一时难以计算,于是他们向你求助,希望你能帮忙计算出所有合法的监控方式数量。

由于结果可能非常庞大,请将答案对 109+7109+7 取模后输出。

输入格式

第一行输入两个整数 N,D(1≤D<N≤105)N,D(1≤D<N≤105) 表示参赛者数量以及选取的距离要求。

第二行输入 NN 个整数 A1,A2,A3,⋯,AN(1≤Ai≤109)A1,A2,A3,⋯,A**N(1≤A**i≤109) 表示每位参赛者的国家编号。

输出格式

输出一个整数表示答案,由于答案可能很大,你需要对 109+7109+7 取模后输出。

样例输入

5 2
1 2 1 2 2 

样例输出

23

说明

对于样例,可能的监控方案有 [1,2,3,4],[1,2,4][1,2,3,4],[1,2,4],但 [1,2,3,5][1,2,3,5] 不合法,因为 22 号参赛者与 55 号参赛者来自同一国家且两人电脑距离为 33,不符合要求。

思路

有一个关键的技巧,我确实此前不知道,第一次知道:取模运算也有分配律

(a * b) ≡ c (mod m),则
(a mod m * b mod m) ≡ c (mod m)

也就是说(由AI解释)

虽然 (a mod m * b mod m) ≡ a*b (mod m),但这不意味着 (a mod m * b mod m) 的数值等于 a*b,而是它们的余数在模 m 下等价

  • 示例
    a=7, b=8, m=5
    (7 mod 5) = 2, (8 mod 5) = 3
    2*3 = 66 mod 5 = 1
    7*8 = 5656 mod 5 = 1
    虽然 6 ≠ 56,但 6 ≡ 56 ≡ 1 (mod 5)

这道题在刚开始的时候,我理解错了。

这道题是一个 二分查找 的题

首先利用 map 将所有的队员按照国家进行分类

需要灵活的使用 map <int, vector <int, int>> arr

map 存储的是键值对,且键是有顺序的,而这里的值是一个vector数组,存储的是每个国家所有的参赛成员.

利用map可以直接将每个国家的参赛成员进行分类,而map就是国家编号就是参赛者的编号.

也就是利用 map可以直接对其进行分类.

接下来就是如何找到监控电脑的所有方案,并且记录其方案数量

假如有两个国家,编号为 1 和 2

  • 首先对国家编号为 1 的所有参赛成员进行分组(也就是确定方案数)

    分组可以分为三类,如下

    • 不检查任何一个参赛成员 –> 方案数为 1
    • 只检查一个参赛成员 –> 方案数为 成员个数
    • 检查两个参赛成员 --> 需要使用二分查找来确定方案数

    将如上三种情况进行累加,得出国家1的所有方案数量

  • 然后对国家编号为 2 的所有成员也进行分组(也就是确定方案数)

    方法和国家1相同,得出国家 2的所有方案数量

  • 最后 将国家1的方案数与国家2的方案数相乘 –> 得出来的就是总的方案数量

  • 最最后,按照题目要求对结果进行取余即可,打印的时候 - 1,减去所有成员都不检查的情况

最难的地方就是: 只检查两个参赛成员的时候,方案数为多少

二分搜索或双指针都可以,我用的二分

  • 首先,对该国家的每个成员进行遍历

  • 然后,在每层的循环中(假设当前循环的成员为i),使用二分(假设二分中待定的成员用j表示),确定下来最后一个满足距离限制 D (为两个成员的最大距离)的成员j

    然后,j - i就确定了 与 i结合进行分组的分组数量为多少

代码

// 5_未来竞赛
// 算法:二分
// DATE:2025 - 3 - 26
// Author: 郑龙浩/仟濹
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7; // 题目要求的取模的除数
int num, D; // 参赛人数 距离要求
long long cnt = 0; // 国家的存储方案数量
long long cnt2 = 1; // 总方案数量
map <int, vector <int>> arr; // 键是国家编号 值vector是不同国家的成员编号
int main()
{ios_base::sync_with_stdio(false);cin.tie(nullptr); cout.tie(nullptr);cin >> num >> D; // 输入参赛人数 距离要求// 在输入的同时,就已经利用 map 对输入的成员按照国家编号进行了分组for (int i = 1; i <= num; i++) {int t; // 暂存国家编号 ---> 键cin >> t;arr[t].push_back(i); // 将 成员编号为 n 的人存入自己的国家i}// 进入循环,确定该国家检查的方案数量// 遍历map,并且将键设为 key,将值设为 vecfor (auto &[key, vec] : arr) {int n; // 表示该国家的成员总个数,或者说是是该国家的第n个成员,注:最后一个的编号不是n,而是vec[n]n = vec.size();// 只检查1个成员的方案数 + 不检查任何成员的方案数(百分百为1)cnt = n + 1; // 同时检查两个成员的方案数量for (int i = 0; i < n - 1; i++) {// 二分搜索int left = i + 1, right = n - 1; // 设置查找范围int mid;int ans = i;  // 初始化为 i,若未找到则贡献为 0while (left <= right) {mid  = (left + right) / 2;// 两个参赛者的距离 <= 设限距离,可以继续尝试更大的距离,所以,第二个参赛者可以再往后确定 --> 左边界向右移动到中间,就可以继续查找距离i更远的成员了if (vec[mid] - vec[i] <= D) {left = mid + 1;ans = mid;} else // // 两个参赛者的距离 <= 设限距离,可以继续尝试更大的距离,所以,第二个参赛者可以再往后确定 --> 右边界向左移动到中间,就可以继续查找距离i更近的成员了right = mid - 1;}cnt += ans - i; // ans - i 表示有多少个成员与i组合符合设定的距离限制}// 经过上面的循环,已经计算出了国家i 的方案数量,让所有的国家的方案数量相乘即可cnt2 = (cnt2 * cnt) % mod;}cout << (cnt2 - 1) % mod;return 0;
}

6 备份比赛数据

题目

问题描述

蓝桥杯大赛的组委会最近遇到了一个棘手的问题。他们有 N 台电脑需要备份比赛数据,每台电脑所需的备份时间分别为 A1,A2,…,AN分钟。

备份必须按编号顺序依次进行,即先第 1 台,再第 2 台,依此类推。每台电脑的备份需要工作人员持续操作,且必须安排在同一天内完成。例如,如果某台电脑的备份需要 5 分钟,那这 5 分钟必须安排在同一天,不能拆分到两天。如果当天剩余时间不足以完成某台电脑的备份,那就只能推迟到第二天进行。

每台电脑备份完成后,系统需要等待 Bi 分钟才能开始下一台的备份。这段等待时间不需要工作人员操作,且可以跨天进行。例如,如果第 1 台电脑的备份在第 1 天结束时完成,且 B1=10 分钟,那么第 2 台电脑的备份只需在第 2 天开始后等待 10 分钟就能进行。

现在,组委会希望尽量缩短每天的工作时间,以便工作人员能尽早下班休息。但上级有要求,所有电脑的备份必须在最多 T 天内完成。对此,请你帮助蓝桥杯组委会计算出每天最少需要安排的工作时间 M(M 最大不可超过 3600),以便所有电脑的备份能在 T 天内顺利完成。如果无论如何都无法满足条件,请直接输出 −1。

输入格式

第一行包含两个整数 N和 T(1≤N,T≤10^5),分别表示电脑的数量和最多允许的天数。

第二行包含 NN 个整数 A1,A2,…,AN(1≤Ai≤3600),表示每台电脑的备份时间。

第三行包含 NN 个整数 B1,B2,…,BN(1≤Bi≤3600),表示每台电脑备份完成后需要等待的时间。

输出格式

输出一个不超过 3600 的整数 M,表示每天最少需要安排的工作时间,以确保所有电脑的备份任务能在 TT 天内完成。若无法满足条件,则输出 −1−1。

样例输入

3 2
1 2 3
2 2 2

样例输出

5

样例说明

每天工作时间为 55 分钟时,备份任务将按以下方式进行:

  • 第 11 天:
    • 第 11 台电脑的备份需要 11 分钟(第 0∼10∼1 分钟)。
    • 等待 B1=2B1=2 分钟(第 1∼31∼3 分钟)。
    • 第 22 台电脑的备份需要 22 分钟(第 3∼53∼5 分钟)。
  • 第 22 天:
    • 等待 B2=2B2=2 分钟(第 0∼20∼2 分钟)。
    • 第 33 台电脑的备份需要 33 分钟(第 2∼52∼5 分钟)。

所有备份任务可在 22 天内完成。

思路

算法:二分答案

最难的地方是 check() 函数怎么写,细节太多了,容易写错,需要好多的判断。

这是一个典型得二分题,需要二分搜索合适的每天最少需要安排的工作时间

当工作时间M可以满足条件,则更大的工作时间也肯定可以满足条件,此时应该尝试更小的工作时间

当工作时间M不满足条件,则更小的工作时间肯定也不满足条件,则需要尝试更大的工作时间

  • 工作时间M的范围为: 1 ~ 3600

  • 如何确定?–> check 怎么写

    如果剩余时间不足以完成当前电脑的备份,则备份时间 Ai 要跨天进行,即推迟到下一天备份

    备份完成后,判断等待时间 Bi 是否可以在当天完成等待,若不能则需要将等待时间分到下一天

    如果当天剩余时间不足以满足当前电脑的备份时间,则需要将 该电脑的 所有 备份时间 推迟到下一天备份

    如果当天剩余时间不足以满足当前电脑的等待时间,则可以将 该电脑的 部分 等待时间 分到下一天等待,也就是这个等待时间是可以分割的,而备份时间是必须在同一天

  • 根据如上规则去写check,计算出需要总天数,然后用这个总天数与 设限天数 T相比,如果 < T,返回True, 则表示可以尝试更小的工作时间;如果 > T,返回 False,则表示可以尝试更大的工作时间

代码

没做出来

http://www.dtcms.com/wzjs/92690.html

相关文章:

  • 深圳知名的网站公司简介百度网盘在线观看资源
  • 黄冈建设局网站首页百度云群组
  • 奉贤网站建设哪家好企业网站的优化建议
  • 做的很好的淘宝客网站东莞网
  • 河北网站开发报价关键词怎么选择技巧
  • 网上网站建设教程软文发稿平台
  • 尖草坪网站建设广告关键词有哪些
  • 广州免费公司注册整站优化 mail
  • 手机营销网站模板免费下载如何快速推广自己的品牌
  • 个人网站的建设营销型网站内容
  • 怎么弄一个自己的app平台沈阳seo排名收费
  • 汽车做网站济南网络推广
  • 自己建立网站用什么软件app软件推广平台
  • php网站建设案例教程视频教程企业seo排名外包
  • 苹果网站用什么做的吗沧州百度推广公司
  • 肇庆网站快速排名提升链接网
  • 如何做解析网站广州网络营销推广公司
  • 做微信网站公司名称公众号seo排名优化
  • 网站落地页制作推广引流渠道有哪些
  • wordpress 获取别名惠东seo公司
  • 那些网站可以做团购图片百度搜索
  • 做设计在哪个网站找图片大全西安网站建设平台
  • 沭阳网站建设招聘郑州网站定制
  • 中山网站推广全国唯一一个没有疫情的城市
  • 多语言网站思路最好用的磁力搜索器
  • 网站开发无使用期限怎么摊销长沙大型网站建设公司
  • 自学php做网站真人seo点击平台
  • 大连建设科技网站seo推广宣传
  • 长沙做网站好的公司哪里有软件培训班
  • 企业网站托管的方案温州seo顾问