- 博客园支持Markdown评论了!主题已经抢先修复样式
- 主题已经升级至V2.0.9,点击查看
- 武汉加油 🇨🇳 中国加油!
- 全国疫情趋势AI预测
- 武汉光谷周边小区疫情地图
随笔分类 - cf
摘要:A - Gardener and the Capybaras 题意 给出字符串S,S只由字符a,b组成,问怎么切分可以使字符串分为小大小,大小大这种的三段。 思路 在2 ~ n - 1的范围内找到字符a的位置,如果里面有a,则将字符a的前半段为a串,a单独为b串,a后c串。此时只有一个a的b串一定是
阅读全文
摘要:A - Make it Beautiful 题意:给出一个序列a,要求重新排列它,使前个数之和不等于 思路:数据范围很小。用桶存数字,然后由大到小每种数字为一组循环输出即可 赛时没看到数组是有序的,所以直接判断第一个和最后一个是不是一样的即可,如果是则NO,否则翻转第二个到最
阅读全文
摘要:1.稠密图(邻接矩阵) 用二维数组g[N][N],如a -> b, 即g[a][b] = 1; 2.稀疏图(邻接表) 用链表存储 模板 const int N = 100010, M = 2 * M; int h[N]; //头结点 int e[M]; //节点编号 int ne[M]; //指向下
阅读全文
摘要:并查集的模板(加上了路径压缩) int find(int x) { if (x != p[x]) p[x] = find(p[x]); return p[x]; } 1.并查集常被用于判断一张图是否连通,或是连通的最小代价(也就是最小生成树问题)或是最小步数 例如: P1111 修复公路 P1546
阅读全文
摘要:map:特点:有序,因为是红黑树实现的。包含一对键对值,当桶用很方便,还可以储存负数的桶 unordered_map:特点:无序,键对值,在查找方面效率很高,因为是哈希表实现的。 set:特点:有序,集合内元素不重复 unordered_set:特点:无序,集合内元素不重复,优点是查找效率很高 pr
阅读全文
摘要:其实就是模拟二项式分布 for (int i = 0; i < MAX; i ++) { for (int j = 0; j <= i; j ++) { if (!j) c[i][j] = 1; else c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % MOD
阅读全文
摘要:A. Colored Balls: Revisited 题意:有n种颜色,每个颜色有cnti个,每次可以取两个不同颜色,问反复操作后,到什么颜色不能再取。 思路:找到最大的cnti就好了,记录它的下标输出即可。比最大值小的颜色一定可以通过相互取而取完。 代码: void solve() { int
阅读全文
摘要:这场打的稀烂。。。 A. Mainak and Array 题意:将数组中某段子序列翻转一次,求a[n] - a[1]最大的值。 思路:有三种情况: 第一种,将最小的数翻转到第一位,然后用原来的a[n]减去反转后的a[1]。 第二种,将最大的数翻转到最后一位,用反转后的a[n]减去原来的a[1]。
阅读全文
摘要:A. Two 0-1 Sequences 题意:从a数组的第一个和第二个元素中挑选一个元素留下来,另外一个丢掉。可以反复进行此操作。问最终a数组能否等于b数组。 思路: 注意,操作只能在第一个元素和第二个元素中进行。也就是说,一旦能删的删完了,a数组还不能等于b数组,那就是NO。 否则,从后往前看。
阅读全文
摘要:A. Round Down the Price 题意: 给一个数n,要求找到离这个数最近的10的幂次。然后输出两者差值 思路:看了下数据范围,1e9,直接枚举就好了。从1e9开始,如果大于n就除10,否则就停止,相减即可 解决代码: void solve() { int n; cin >> n; i
阅读全文
摘要:A. Grass Field 解决代码: void solve() { int a, b, c, d; cin >> a >> b >>c >>d; int cnt = 0; cnt = a + b +c + d; if(cnt == 0) cout << 0 << endl; else if(cn
阅读全文
摘要:900——1000 5道 A. Anti Light's Cell Guessing 题意大概是在一个行列确定的坐标系里,最少用几个点可以唯一确定一个点 思路就是判断行列的最小值是否为1,是1的话,最多一个点就可以确定,否则两个点即可。 注意:1*1的方格需要的点是0,故需要特判 解决代码: voi
阅读全文
摘要:A~C A 水题。对两组数据排序之后,比较最大值。 最大值较大的那个人总会赢,当最大值相同时,谁先出牌谁赢 void solve() { int n, m; cin >>n; for(int i = 1; i <= n ;i ++) cin >> a[i]; cin >> m; for(int i
阅读全文
摘要:A~D A 思路:假如不是两位数,那么一定可以找到最大的那个数,直接输出即可。如果是两位数,那就是第二位的数字 void solve() { string st; cin >> st; int lens = st.size(); if(lens == 2) { cout << st[1] << en
阅读全文
摘要:ABC ac代码加补题 A题 #include <iostream> #include <string> #include <cstring> #include <algorithm> #include <cmath> #include <set> #include <queue> #include
阅读全文
摘要:补题 A题 思路 这题写的时候没想清楚,其实就是解4x + 6y = n ~~一开始没想清楚输出-1的情况,导致后面wa了一堆,还以为是题目问题~~ 输出-1的情况就是n为奇数,或者n小于4的情况 若不输出-1,则最大是n/4辆,最小按理说是n/6辆,但是因为不能没有,所以,保
阅读全文