- 博客(25)
- 收藏
- 关注
原创 Codeforces Round #787 (Div. 3) (A-C 明早起来再补题QAQ)
哎菜鸡的cf复健日常A Food for Animals水题。。。int T; cin >> T;while (T--) { int a, b, c, x, y; cin >> a >> b >> c >> x >> y; x -= a; x = max(0, x); y -= b; y = max(0, y); if (x + y <= c) .
2022-05-06 01:31:05
367
1
原创 Codeforces Round #780 (Div. 3) 补题
C - Get an Even String题意给出一个字符串s,删掉字符串里面的某些字符,使得字符串满足:对于任意奇数 iii 都存在 si==si+1s_i == s_{i + 1}si==si+1。求删掉的最小字符数。思路顺着题意想很容易就想到dp,但是!!!可以换个想法:最小化删除数量,可以等价为最大化满足条件的数量,即最大化si==si+1s_i == s_{i + 1}si==si+1的数量。由于对于删掉任意奇数位置 jjj 上的字符,影响的只是 jjj 后面的元素,所
2022-04-13 09:28:11
290
原创 Hamilton哈密顿最短路径(二进制状态压缩)
问题简述:哈密顿最短路径即为从起点到终点,计算出经过图中所有点的最短路径。(点较少的情况)简单理解由于途中点较少,可能会直接想到暴力枚举所有点的全排列,然后计算最短距离,其时间复杂度为 O(n∗n!)O(n * n !)O(n∗n!),但是如果使用动态规划,枚举每个点被经过的状态的话,那么可以将时间复杂度降到 O(n2∗2n)O(n ^ 2 * 2 ^ n)O(n2∗2n).解题思路假设点a,那么经过点a 的状态只有经过和还没有经过两个状态,所以这里就可以用到二进制状态压缩,将经过定义为1,没经
2021-03-22 20:08:13
1575
3
原创 最小覆盖圆
最小覆盖圆解决的问题模板大概是:在一个平面内的很多点中,找出一个最小的圆,使之覆盖所有的点。思路假设点的个数为 nnn, 最小覆盖圆面积为 RRR。当 n=1n = 1n=1 时,毋庸置疑,此时 R=0R = 0R=0;当 n=2n = 2n=2 时,此时R应该为 R=dis(point1,point2)/2R = dis(point1, point2) / 2R=dis(point1,point2)/2当 n=3n = 3n=3 时,那么 RRR 就是三个点形成的最小圆,也就是三个点形成
2021-03-11 20:12:05
1103
原创 一维差分(简单理解)+ CF : Pekora and Trampoline
一维差分简单定义就是数组的每个当前项都减去前一项(有点错位相减得新数组的意思),这样得到的数组称为差分数组。假设数组 sub[n+2]sub[n + 2]sub[n+2] 为 a[n]a[n]a[n] 的差分数组。那么值得注意的是,差分数组的第一项为 sub[1]=a[1]−0sub[1] = a[1] - 0sub[1]=a[1]−0,最后一项是sub[n+1]=0−a[n]sub[n + 1] = 0 - a[n]sub[n+1]=0−a[n],相当于错位时,空的位置默认为0.差分可以解决数组
2021-03-04 13:08:07
468
2
原创 Educational Codeforces Round 102 (Rated for Div. 2)
Educational Codeforces Round 102 (Rated for Div. 2) 补题题目链接https://codeforces.com/contest/1473B题题意:判断是否存在一个字符串res,使得字符串s,t,整数n1,n2满足res = n1 * s , res = n2 * t(即res既可以看成n1个s字符串的组成的又可以看成是n2个t字符串组成的)。存在则输出最短res,不存在输出-1。思路:依照题意,如果res存在,那么当res由n1个s组成时,res同
2021-02-13 10:16:18
85
原创 背包问题
01背包一、简述01背包问题背包问题就是在背包内装入一些物品,使得最后背包内物品的价值最大。01背包中的01,就是装入或者不装入。例如:对于nnn个物品,第iii个物品重量为w[i]w[i]w[i],体积为v[i]v[i]v[i],背包最多能装下体积为15L15L15L的物品,那么这些物品能为背包创造的最大价值(这里就为质量)就为: value=∑i=1nx i ∗w[i]value = \sum_{i = 1}^n x~i~ * w[i] value=i=1∑nx 
2021-02-07 12:19:38
1414
原创 组合数的计算(+线性筛,快速幂的运用)
题目链接https://codeforces.com/contest/1475/problem/E题意:在n个博主中选择k个博主使得k个博主的粉丝和最大, 输出最大方案数.思路:选择k个最大粉丝数的博主就可以了. 直接sortsortsort.但是为什么会出现多种选法的情况呢. 那就取决于选出k个博主中,粉丝数量最少的那个博主了. 如果选出的最低粉丝数是fff, 那么如果拥有fff粉丝数的博主就一个, 么情况必然只有一种; 但是, 如果有多个呢, 情况就会出现多个.我们对会出现多个fff个粉丝的
2021-01-30 17:34:30
209
原创 Codeforces Round #696 (Div. 2) C. Array Destruction
C Array Destruction题目链接https://codeforces.com/contest/1474/problem/C题意:给出一个长度为2n的数组,判断数组内的任意三个数是否满足a + b = c,若满足,删除a,b;再判断数组内是否存在另外的两个数是否满足d + e = max(a, b),若满足,就删除d,e;一直循环做这个操作,直到数组内的数字被删除完毕为止并输出最初的c和之后两个数的组合即(a, b);(c, d)…(最初提到的c就是第一组a, b的和而已)所以这个题就和
2021-01-21 23:35:49
80
原创 Codeforces Round #696 (Div. 2) B. Different Divisors
B Different Divisors题目链接https://codeforces.com/contest/1474/problem/B题意:计算出一个值a,使得a至少存在4个因子,且任意两个因子之间的差值大于等于给定的整数b,且a是在满足这个条件下的最小值。思路:先看示例当b为1时,a的最小值为6(6的因子为:1,2,3,6);当b为2时,a的最小值为15(15的因子为:1,3,5,15);哦吼吼你是不是想到了a = (b + 1)* (b + b + 1);但是你试试b = 3?是不是
2021-01-21 23:11:48
166
原创 Codeforces Round #696 (Div. 2)A. Puzzle From the Future
A题 Puzzle From the Future题目链接https://codeforces.com/contest/1474/problem/A题意:给出一个二进制数a,找出另一个二进制数b,使之按位以十进制的格式相加得到的c数值最大,且c没有连续相同的两位。(就是把两个只含0, 1的十进制数相加得到没有相同两位的最大数,比如a(2) = 1001,b(2) 就应该为1101,得到的c(10)为2102 )思路:知道题意之后就很好发现,如果a, b只由0, 1组成,那么其相加的结果c中只可能
2021-01-21 23:10:27
94
原创 codeforces 695 Three Bags
题目链接:https://codeforces.com/contest/1467/problem/C题目大意就为在三个袋子中任选两个袋子,分别从两个袋子中取出一个数a,b,使a = a - b,b被删除。一直重复进行此操作,使三个袋子中最终只剩下一个袋子里有一个值,且这个值是经过此变换得来的最大值,求这个最大值。思路(最开始直接看漏了要从两个袋子里面取值,然后就直接将所有输入值sort,wa到怀疑人生。。。)我们先假设三个袋子为A,B,C。假设三个袋子中各自只有一个值,分别为a,b,c、,首先我们取
2021-01-10 00:45:48
217
2
原创 codeforces 695 Div2, Hills And Valleys
题目链接https://codeforces.com/contest/1467/problem/B思路:其实在纸上模拟一下就知道,至少需要三个值才能形成凸起或凹陷的情况的,而这种情况的形成完全取决于第二个值,所以只需要将第二个值变为第一个值或第三个值(即a[i] = a[i -1], or a[i] = a[i + 1]),这种情况就会被缓解,我们只需要找到能缓解得最好的那种情况就行了。就遍历数组[1, n - 2]就行了(这里我数组下标是从0开始的)以下是ac代码#include <bits
2021-01-09 17:35:53
1303
原创 整除分块
我不懂我也看了好久才用数字硬写明白的 其实这个知识点主要来源于看牛客网上面的一道题 :NC 13221 数码。二话不说上个链接先: [https://ac.nowcoder.com/acm/problem/13221](https://ac.nowcoder.com/acm/problem/13221)好吧最开始这道题我看漏了个条件,就是x其实不止一个是一个区间的(我就说一个 三星题怎么可能这么暴力!!)目前自己想到的就只要双for,很明显,这肯定就直接T掉。所以直接搜了题解,才发现需要用到数论
2021-01-06 21:30:37
241
1
原创 2020杭电第十场
杭电第十场Problem C. Mine Sweeper思路:对于地图来说,没有规定特定的行列数量,我们假设在s<25 的时候都为一行,那么对于任何一个s都可以用.x.x.x。。。。来实习现。而对于s>=25的情况,我们可以用以下形式的n个小块实现. . . |. . .. x .|. x .. . . |. . .这样一个雷区块的数字和就为8,对于此种构造不满足的数字,在最后一排末尾用.xx。。。来给予补充,其每个雷周围的空白区数字和为3,假设为8的块(即核心x的数量)为a,补充
2020-08-25 14:52:29
121
原创 2020杭电第九场
杭电第九场Problem A思路:求出所有叶子的子节点,然后依次连边,并选择最优的情况即可代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 5 * 1e5 + 10;ll son[N];vector<int> tree[N];ll sum_edge, init_edge;ll res;int n;ll dfs(int root){ l
2020-08-23 00:08:30
122
原创 杭电第八场
杭电第八场Problem C:Clockwise or Counterclockwise思路:画图可知,当C点在向量AB的右边时,图形为顺时针,则向量AB与向量AC的叉乘的值应小于0。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;struct Point{ ll x; ll y;}point[10];int main(){ ios::sync_with_st
2020-08-17 16:01:56
140
原创 2020-08-15
杭电第七场Increasing and Decreasing思路:当x*y<n或者x+y-1<n时,显然不符合条件。当x y 符合条件时,若想得到最小的字典序,那么可以让整个排列分为x块,在第x块的元素数量为y且为倒序,1–x-1块可依次运用贪心枚举,在满足每块元素数量小于y的情况下,让后一块的元素数量尽量地多即可。比如对于10 4 5这组n x y数据,在满足第三块为10 9 8 7 6排列之后,第三块元素在尽可能多的情况下为 5 4 3,则第一块第二块分别为1和2 ,则这组输入的结果应
2020-08-15 21:17:50
98
原创 2020杭电第六场
第六场Road To The 3rd Building思路:题意为在给定的下标为 1 – n 的银杏树下,随机选择下标为 i,j 的树计算第 i 课到第 j 课树的可爱度的均值,由此求出这n棵树可爱值的期望值。由于树的数量可能为奇数也可能为偶数,则当n为奇数3时: 对不同的 j(经过的树的数量)每棵树经历的次数为:j每棵树经过次数11 1 121 2 131 1 1当n为偶数6时: 对不同的 j(经过的
2020-08-10 22:13:28
116
原创 2020杭电第五场
杭电第五场补题1001 Tetrahedron(A)思路:本题意在求四面体直角顶点到底面的距离的平方的倒数的1/h^2值的期望值;三直角边的长度分别为a, b, c 则可计算得1/h^2 = 1/a^2 + 1/b^2 + 1/c^2; 由于对于a, b, c, 此三者都为等概率出现,因而有 原式 = 3 * 1/a^2; 那么1/h^2的期望值则为3 * [Σ1, (1/n^2) ]/ n % mod; 在写代码时,只需先用一个数组将所有的3 * [Σ1, (1/n^2) ], (n = 1, 2
2020-08-08 22:22:55
117
原创 hdu第四场
hdu第四场thinking :对于句子 S 的变换,只要求了全部的元素不变,而一个字母的位置最多变换一位,则可以根据 S 中包含两个相邻切且不相同元素的数量,由递归不断按要求交换 i 组元素的位置,记录数量,直到 i 达到该句子 S 的最后一组两个相邻切且不相同元素为止。code:#include <bits/stdc++.h>#include <cstring>using namespace std;typedef long long ll;const ll
2020-07-31 16:52:24
120
原创 hdu多校第三场
第三场D - Tokitsukaze and Multiplethinking :题意是将给出的数相加计算出 其中p 的倍数的最大个数。由题意可得,在任意两个数相加时,其模值必在0—p-1之间,将两数相加的模值替换掉之前的两个数字,得到长度减一的效果,用0和1 标记对应模值是否出现,从而代表被处理过的但还没有达到 p 的倍数的值, 直到某次得到的模值为 0 时,再清空之前的标记(代表得到了 p 的倍数);在此过程中记录清空标记的次数,即为答案。code :#include <iostream
2020-07-29 19:31:48
113
原创 杭电第二周
第二周Problem F. The Oculusthinking:由题意所得列出式子为fib(k)=A * B - C; 根据式子,求出fib(k) 对应 的值,然后遍历fib数组,从而找到k值并输出。code:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 30000010;ll fib[N];inline void init(ll &aa){//计算A
2020-07-27 19:56:47
96
原创 2020-07-25
第一周1004.Distinct Sub-palindromes//thinking回文即长度 >1 的中心对称的字符串,那么对于长度 <=3 的回文字符串来说,想要子回文数最少,保证字符串中每个元素不同即可,而当字符串长度 >3 时,只需满足类似abcabc…一样的字符串格式即可。//code#include <bits/stdc++.h>using namespace std;int main(){int t; scanf("%d", &t );
2020-07-25 19:09:40
228
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人