03 2023 档案
摘要:题意 样例输入: 3 3 2 0 0 0 0 1 0 0 0 0 3 3 3 1 1 1 样例输出: 6 数据范围: 对于10%的数据,N,M<=4,K<=1。 对于30%的数据,N,M<=10。 对于60%的数据,N,M<=100。 对于100%的数据,N,M<=1000,K<=10。 解析 多轮
阅读全文
摘要:bfs 最短路径有几条 题意 样例输入: 4 ...S .XX. .XX. E... 样例输出: 6 2 数据范围: 1 ≤n ≤ 25 解析 path数组记录点 代码 #include<bits/stdc++.h> using namespace std; const int N = 30; co
阅读全文
摘要:题意 解析 解析:每个a[i]是由b[i]和b[i+1]取最大公因数得出,所以对于每个b[j]来说应该既是a[j]的倍数,又是a[j-1]的倍数。现实在取的时候,可以取b[j] = lcm(a[j-1],a[j])。然后再对每个b[j]检查gcd(b[j],b[j+1])是否真的等于a[j]。 我们
阅读全文
摘要:【区间修改,区间查询】 https://loj.ac/p/132 题意 解析 代码 做的时候是按照洛谷线段树1那题做的,范围10^18。但其实会有问题,求和过程中可能会爆longlong。 求一次前缀,实际上就是 这是sum(k) 区间查询 就是求 sum(r) - sum(l) 用两个树状数组,一
阅读全文
摘要:【区间修改,单点查询】 题意 【模板】树状数组 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 ; 求出某一个数的值。 输入格式 第一行包含两个整数 、,分别表示该数列数字的个数和操作的总个数。 第二行包含 个用空格分隔的整数,其中第 $i
阅读全文
摘要:【单点修改,区间查询】 题意 【模板】树状数组 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上 求出某区间每一个数的和 输入格式 第一行包含两个正整数 ,分别表示该数列数字的个数和操作的总个数。 第二行包含 个用空格分隔的整数,其中第 个
阅读全文
摘要:题意 解析 由图得 a中不能同时存在 5 的倍数和非 5 的倍数。 若全为 5 的倍数,将她们的末尾全部操作为 0,判断相等即可。 若全非 5 的倍数,将她们的末尾全部操作为 2。由于2→4→8→6→2 绕一圈后原数会 +20,所以我们判断这些数是否 mod 20 同余即可。 代码 #include
阅读全文
摘要:题意 q次询问1e5,每次给你一个正整数n<=1e9,求最多能分成几个合数 解析 4是合数,一个想法就是尽量地分4。如果n%4==0的话说明恰好分完,万事大吉,如果n%4=2的话,6是第二小的合数,可以把剩下的4和2凑成6,这就是最多的分法,有n/4个。看n%4==1和n%4==3,说明原来的n肯定
阅读全文
摘要:题意 解析 可以从1到x,剩下的全给最后一个 代码 #include<bits/stdc++.h> using namespace std; const int N = 1e3 + 10; int a[N],n,cnt; int main(){ cin >> n; for(int i=1;i<=n;
阅读全文
摘要:题意 解析 末尾2位是4的倍数即可。每次特判最后一位。 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 3e5 + 10; string s; bool check(string
阅读全文
摘要:题意 解析 找规律 讨论b,三种都有 行,有另两种 行,另两种有一种{只有1个,不行;有大于1个,无b不行;其余行},另两种一个都无 行。 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; int n; str
阅读全文
摘要:题意 有两个人S和M,他们每人有一段长度为N的数字,两个人在每一轮游戏中都可以按顺序拿出一个数字,谁的数字小谁就接受一次惩罚。若相等两者都没有惩罚。另外,M珂以重新安排自己数字的顺序,问 M的最少被惩罚次数 和 S的最多被惩罚次数 是多少。1<=n <= 1000。 解析 都从最小的比较,如果M可以
阅读全文
摘要:题意 解析 当a[i] + a[i-1] < k 时,加a[i]影响后面 代码 #include <bits/stdc++.h> using namespace std; const int N = 510; int n,k,a[N],res; int main(){ cin >> n >> k;
阅读全文
摘要:题意 给定一个字符串t (t的长度<2*10^5)。每次可以将t中的任一字符改为另一字符(a~z),要求在最短的操作后,t任意两个相邻的字符互不相等。可能有多个答案,请输出任意一种。 解析 模拟题,如果和前面不相等的话一定要修改,修改要求不能和前面后面的一样 代码 #include <bits/st
阅读全文