随笔分类 -  codeforces

摘要:E. Minimum spanning tree for each edgetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputConnected ... 阅读全文
posted @ 2015-12-23 22:32 瑞宇 阅读(660) 评论(0) 推荐(1)
摘要:D. Gadgets for dollars and poundstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputNura wants to b... 阅读全文
posted @ 2015-12-23 22:19 瑞宇 阅读(300) 评论(0) 推荐(0)
摘要:枚举子序列的末尾,递推。方案数: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[]... 阅读全文
posted @ 2015-12-20 12:08 瑞宇 阅读(457) 评论(0) 推荐(0)
摘要:分相离,内含,想交三种情况讨论一下。主要是精度和数据范围的问题,首先数据用long double,能用整型判断就不要用浮点型。题目中所给的坐标,半径是整型的,出现卡浮点判断的情况还是比较少的。最后算三角型面积的时候不要用海伦公式,有四个连乘很容易爆数据范围损失精度,即使拆开两两乘也要考虑符号(取对数... 阅读全文
posted @ 2015-11-29 00:07 瑞宇 阅读(495) 评论(0) 推荐(0)
摘要:模拟题,意思是一个字符串,单词直接用','或';'来分割,可以为空,把不含前导0的整数和其他单词分别放入A和B。按照一定格式输出。没有用stl的习惯。维护两个下标i,j,表示开区间(i,j),两段补上分割符号。每个单词后面都加上一个',',输出的时候在处理掉。用最后的','判断A和B是不是空。#in... 阅读全文
posted @ 2015-11-29 00:02 瑞宇 阅读(480) 评论(0) 推荐(0)
摘要:要保证变化次数最少就是出现次数为奇数的相互转化,而且对应字母只改变一次。保证字典序小就是字典序大的字母变成字典序小的字母。长度n为偶数时候,次数为奇数的有偶数个,按照上面说的搞就好了。n为奇数时,要考虑最后中间那个字母。交换法可以证明,其实是贪心最后没有转化掉的字母。#includeusing na... 阅读全文
posted @ 2015-11-28 22:47 瑞宇 阅读(359) 评论(0) 推荐(0)
摘要:很容易得到n× m的方块数是然后就是个求和的问题了,枚举两者中小的那个n ≤ m。然后就是转化成a*m + c = x了。a,m≥0,x≥ c。最坏是n^3 ≤x,至于中间会不会爆,测下1e18就好。#includeusing namespace std;typedef long long ull;... 阅读全文
posted @ 2015-11-21 11:54 瑞宇 阅读(481) 评论(0) 推荐(0)
摘要: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... 阅读全文
posted @ 2015-11-21 11:42 瑞宇 阅读(246) 评论(0) 推荐(0)
摘要:一道水题WA那么多发,也是醉了。f看成函数的话,其实就是判断一下反函数存不存在。坑点,只能在定义域内判断,也就是只判断b[i]。没扫一遍前不能确定Impossible。#includeusing namespace std;typedef long long ll;const int maxn = ... 阅读全文
posted @ 2015-11-21 11:39 瑞宇 阅读(640) 评论(0) 推荐(0)
摘要:t和可到达具有单调性,二分就不多说了。下面说下O(1)的做法,实际上是等效转换,因为答案一定存在,如果在t0之前,那么分解一下直接按照只有v计算就可以了。反过来如果计算的结果大于t0,那么表示答案在t0之后。因为速度分量是可以独立累加的,因此可以找到一开始就只有w的等效的点。#includeusin... 阅读全文
posted @ 2015-11-03 21:07 瑞宇 阅读(275) 评论(0) 推荐(0)
摘要:分析:三个01组合只有八种情况:000 s001 s010 0011 s100 s101 1110 s111 s可以看出只有010,101是不稳定的。其他都是稳定的,且连续地出现了1或0,标记为s。考虑连续的不稳定串的,例子:11010100 s s 110100 s ... 阅读全文
posted @ 2015-10-25 23:10 瑞宇 阅读(268) 评论(0) 推荐(1)
摘要: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(){... 阅读全文
posted @ 2015-10-25 22:55 瑞宇 阅读(214) 评论(0) 推荐(0)
摘要:简单的物理问题,x = pt, y = l - qt。令x == y解出t,然后得出相遇位置。#includeusing namespace std;typedef long long ll;//#define LOCALint main(){#ifdef LOCAL freopen("in.... 阅读全文
posted @ 2015-10-25 22:52 瑞宇 阅读(155) 评论(0) 推荐(0)
摘要:二项分布,期望,快速幂 阅读全文
posted @ 2015-10-18 19:52 瑞宇 阅读(332) 评论(0) 推荐(0)
摘要:A,水题不多说。#includeusing namespace std;//#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin);#endif int n,t; scanf("%d%d",&n,&t); i... 阅读全文
posted @ 2015-10-07 21:14 瑞宇 阅读(226) 评论(0) 推荐(0)
摘要:对角线上的元素就是a[i],而且在所在行和列中最大,首先可以确定的是最大的元素一定是a[i]之一,这让人想到到了排序。经过排序后,每次选最大的数字,如果不是之前更大数字的gcd,那么只能是a[i]之一。div2路漫漫。。。#includeusing namespace std;typedef int... 阅读全文
posted @ 2015-10-04 18:15 瑞宇 阅读(234) 评论(0) 推荐(0)
摘要:显然f(x)是个凹函数,三分即可,计算方案的时候dp一下。eps取大了会挂精度,指定循环次数才是正解。#includeusing namespace std;const double eps = 1e-11;const int maxn = 2e5+5;double a[maxn];double d... 阅读全文
posted @ 2015-09-17 09:53 瑞宇 阅读(211) 评论(0) 推荐(0)
摘要:首先应该保证二进制最高位尽量高,而位数最高的数乘x以后位数任然是最高的,所以一定一个数是连续k次乘x。当出现多个最高位的相同的数就枚举一下,先预处理一下前缀后缀即可。#includeusing namespace std;const int maxn = 2e5+5;int a[maxn];int ... 阅读全文
posted @ 2015-09-17 09:49 瑞宇 阅读(210) 评论(0) 推荐(0)
摘要:题目中给出的函数具有周期性,总可以移动到第一个周期内,当然,ausing namespace std;int main(){ int a,b; scanf("%d%d",&a,&b); if(a<b) puts("-1"); else { int t1 = a+b, ... 阅读全文
posted @ 2015-09-17 09:44 瑞宇 阅读(174) 评论(0) 推荐(0)
摘要:直接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... 阅读全文
posted @ 2015-09-11 09:35 瑞宇 阅读(181) 评论(0) 推荐(0)