随笔分类 - codeforces
摘要:E. Minimum spanning tree for each edgetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputConnected ...
阅读全文
摘要:D. Gadgets for dollars and poundstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputNura wants to b...
阅读全文
摘要:枚举子序列的末尾,递推。方案数:f[i = 以i结尾][k =子序列长度] = sum(f[j][k-1]),j using namespace std;typedef long long ll;const int N = 1e5+5, K = 10;ll C[K][N];ll sum(ll C[]...
阅读全文
摘要:分相离,内含,想交三种情况讨论一下。主要是精度和数据范围的问题,首先数据用long double,能用整型判断就不要用浮点型。题目中所给的坐标,半径是整型的,出现卡浮点判断的情况还是比较少的。最后算三角型面积的时候不要用海伦公式,有四个连乘很容易爆数据范围损失精度,即使拆开两两乘也要考虑符号(取对数...
阅读全文
摘要:模拟题,意思是一个字符串,单词直接用','或';'来分割,可以为空,把不含前导0的整数和其他单词分别放入A和B。按照一定格式输出。没有用stl的习惯。维护两个下标i,j,表示开区间(i,j),两段补上分割符号。每个单词后面都加上一个',',输出的时候在处理掉。用最后的','判断A和B是不是空。#in...
阅读全文
摘要:要保证变化次数最少就是出现次数为奇数的相互转化,而且对应字母只改变一次。保证字典序小就是字典序大的字母变成字典序小的字母。长度n为偶数时候,次数为奇数的有偶数个,按照上面说的搞就好了。n为奇数时,要考虑最后中间那个字母。交换法可以证明,其实是贪心最后没有转化掉的字母。#includeusing na...
阅读全文
摘要:很容易得到n× m的方块数是然后就是个求和的问题了,枚举两者中小的那个n ≤ m。然后就是转化成a*m + c = x了。a,m≥0,x≥ c。最坏是n^3 ≤x,至于中间会不会爆,测下1e18就好。#includeusing namespace std;typedef long long ull;...
阅读全文
摘要:Bi表示第i个块,那么就是说Bi max≤Bi+1 min,又因为Bi min≤ Bi max,因此只要判断前缀的最大值是否小于等于后缀。#includeusing namespace std;typedef long long ll;const int maxn = 1e5+1;int h[max...
阅读全文
摘要:一道水题WA那么多发,也是醉了。f看成函数的话,其实就是判断一下反函数存不存在。坑点,只能在定义域内判断,也就是只判断b[i]。没扫一遍前不能确定Impossible。#includeusing namespace std;typedef long long ll;const int maxn = ...
阅读全文
摘要:t和可到达具有单调性,二分就不多说了。下面说下O(1)的做法,实际上是等效转换,因为答案一定存在,如果在t0之前,那么分解一下直接按照只有v计算就可以了。反过来如果计算的结果大于t0,那么表示答案在t0之后。因为速度分量是可以独立累加的,因此可以找到一开始就只有w的等效的点。#includeusin...
阅读全文
摘要:分析:三个01组合只有八种情况:000 s001 s010 0011 s100 s101 1110 s111 s可以看出只有010,101是不稳定的。其他都是稳定的,且连续地出现了1或0,标记为s。考虑连续的不稳定串的,例子:11010100 s s 110100 s ...
阅读全文
摘要:O(1)变换映射,最后一次性替换。#includeusing namespace std;typedef long long ll;const int LEN = 2e5+5;char s[LEN];char mp[26];int pos[26];//#define LOCALint main(){...
阅读全文
摘要:简单的物理问题,x = pt, y = l - qt。令x == y解出t,然后得出相遇位置。#includeusing namespace std;typedef long long ll;//#define LOCALint main(){#ifdef LOCAL freopen("in....
阅读全文
摘要:
二项分布,期望,快速幂
阅读全文

摘要:A,水题不多说。#includeusing namespace std;//#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin);#endif int n,t; scanf("%d%d",&n,&t); i...
阅读全文
摘要:对角线上的元素就是a[i],而且在所在行和列中最大,首先可以确定的是最大的元素一定是a[i]之一,这让人想到到了排序。经过排序后,每次选最大的数字,如果不是之前更大数字的gcd,那么只能是a[i]之一。div2路漫漫。。。#includeusing namespace std;typedef int...
阅读全文
摘要:显然f(x)是个凹函数,三分即可,计算方案的时候dp一下。eps取大了会挂精度,指定循环次数才是正解。#includeusing namespace std;const double eps = 1e-11;const int maxn = 2e5+5;double a[maxn];double d...
阅读全文
摘要:首先应该保证二进制最高位尽量高,而位数最高的数乘x以后位数任然是最高的,所以一定一个数是连续k次乘x。当出现多个最高位的相同的数就枚举一下,先预处理一下前缀后缀即可。#includeusing namespace std;const int maxn = 2e5+5;int a[maxn];int ...
阅读全文
摘要:题目中给出的函数具有周期性,总可以移动到第一个周期内,当然,ausing namespace std;int main(){ int a,b; scanf("%d%d",&a,&b); if(a<b) puts("-1"); else { int t1 = a+b, ...
阅读全文
摘要:直接O(n*m)的dp也可以直接跑过。因为上最多跑到m就终止了,因为前缀sum[i]取余数,i = 0,1,2,3...,m,有m+1个余数,m的余数只有m种必然有两个相同。#includeusing namespace std;const int maxn = 1e3+5;int cnt[maxn...
阅读全文