
codeforces
playwfun
宁静致远
展开
-
CF - round # 280 - D
#include #include #include #include #include #include using namespace std;typedef long long LL;const int maxn = 100005;LL gcd(LL a,LL b){return b==0 ? a : gcd(b,a%b);}LL lcm(LL a,LL b){r原创 2014-12-02 03:19:12 · 561 阅读 · 0 评论 -
codeforces 982D (第二种实现方式)
改题目解析在上一篇点击打开链接这里使用了map来实现同样的过程,做上下界的查找,map内直接存的就是一个个对应的区间,对于所有的<key,value>对,map默认按key值升序排序,这样,可以将区间以<l , r>的形式存储,会以l升序排序。对于lower_bound 和 uppper_bound进行说明: // lower_bound 第一个大于或者等于查找值的...原创 2018-05-21 10:43:25 · 366 阅读 · 0 评论 -
Codeforces 982D
此题从从一个特定角度想,就很好做,而直接枚举可行解,复杂度太高。 可以想到,将所有的长度从大到小排序,逐个放回原来所在位置,任何一个可行解,必然满足是比可行解大或者等于可行解的值是排序后序列的前缀,这样,逐个放回,统计剩余区间的长度和个数即可。这是自己笨拙的代码#include<cstdio>#include<iostream>#include<string>...原创 2018-05-21 09:30:15 · 390 阅读 · 0 评论 -
Codeforces 963C(Math,Number Theory)
结题思路如下:记一个长方向水平方向宽度为h,竖直方向宽度为w,对n类长方形先按h排序,再按w排序,并将所有h相同的长方形放到一个容器中。可知,h不同的每个容器,代表着所拼接成的大长方形的一列或者是几列。对每个容器,如果一种w出现在一个容器中,则必然出现在其他所有容器中,且该中w的数目与该容器所有长方形数目的比值,与其他容器相应的比值相同。即任意一个容器的一类长度为w的长方形在其容器所在列所占行数与...原创 2018-05-14 13:35:16 · 420 阅读 · 0 评论 -
codeforces #476 div2 D(math)
题目给定四个参数n,k,M,D 1<=M<=n D=min(n,1000); 1<=k<=n; n<=1*10^18要求将n个糖果分配给k个人,要求每个人最多只能被分配D次(最多D次),分配方式是选定x,从第一个人开始没人拿x个,并循环拿走,直到剩下的糖果不足x个,丢弃。问第一个人最多能够拿到多少糖果。首先n,M十分大,没有办法进行直接枚举计算。但是分配...原创 2018-04-29 08:42:11 · 196 阅读 · 0 评论 -
Codeforces 963B
对于能不能拆除一棵树,首先从根节点考虑,根节点必须等父亲先拆除,父亲的所有边若为偶则可先拆父亲,否则要先拆父亲的父亲,如此递归实现即可。 然后在递归过程建立先拆后拆的边,之后就是一个dag的点排序问题,用一个vector即可实现。#include<cstdio>#include<iostream>#include<cstring>#in...原创 2018-05-07 10:35:03 · 273 阅读 · 0 评论 -
Codeforces 965E 思路合并
参考 点击打开链接可归结为一个合并过程。先将字符串建成一颗trie树,然后对于每个节点我们结算 “所有在该节点子树中的字符串 的最小长度比该节点深度大的最优解集合”。如果当前节点不是某个字符串的终点,那么该节点深度记为一个新的最优值放到集合,并将原集合最大值删除,这样便,构成 所有在该节点子树中的字符串 的最小长度大于等于该节点深度的最优解集合。对于该节点时字符串终点时,只需要将之加入集合而不需...原创 2018-05-07 09:35:09 · 1109 阅读 · 0 评论 -
Codeforces 963A(Math , 统计)
最讨厌数学题了, 而且还有一阵子没做过了,不过做做也好,数学面前自己就是弱渣,要好好学数学。题解如下:Let Z=k−1∑i=0sian−ibiZ=∑i=0k−1sian−ibi and q=(ba)kq=(ba)k.Let's notice that according equality is true: n∑i=0sian−ibi=(n+1)/k−1∑i=0Z⋅qi∑i=0nsian−ibi=...原创 2018-05-12 08:17:55 · 295 阅读 · 0 评论 -
codeforces 299 div 2 (C Tavas and Karafs)
二分答案,对于一个确定的左端点,若左端点的时长比t大则不成立,否则,只要 l - r 总时间比t*m小则可完成任务。原因是将t*m的时间看成一个m行t列的矩阵,每次把每个任务横着放入行中,满行则换行,若未填满则可行。#include #include #include #include using namespace std;#define int long longint原创 2015-04-15 13:27:39 · 472 阅读 · 0 评论 -
#296 --- C ( set可以这么好用)
本题可简化为在一个区间内不断添加不同的点,求相邻两点最大距离为多少。竟然不知道,multiset删除元素时候,只删除一个同值元。#include #include #include #include #include #include #include using namespace std;set w,h;multiset wws,hs;void In(set& s,原创 2015-03-18 07:54:29 · 506 阅读 · 0 评论 -
codefoce 297 - E(中途相遇法)
这题目用中途相遇法解太经典了,先暴力存下前一半的所有解。然后暴力匹配下一半的解。用map做中间者,#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;#define rep(i,n) for(int原创 2015-03-27 13:34:41 · 541 阅读 · 0 评论 -
Codeforces Round #281 (Div. 2) - B
#include #include #include #include #include using namespace std;const int maxn = 200100;vector c,d;int main(){ int n; long long sum[2]; sum[0]=sum[1]=0; scanf("%d",&n); i原创 2014-12-04 11:07:36 · 580 阅读 · 0 评论 -
Codeforces Round #281 (Div. 2) - C
被坑的地方就是贪心的选法,没错但思维不清晰;#include #include #include #include #include #define INF 2000001000using namespace std;int n,m;const int maxn = 200100;int a[maxn],b[maxn];int get(int& fen2,int v){原创 2014-12-04 11:04:22 · 488 阅读 · 0 评论 -
Codeforces Round #281 (Div. 2) - A
#include #include #include #include using namespace std;const int maxn = 100;struct node{int y,r;node():y(0),r(0){}};node cnt[2][maxn];int vis[2][maxn];char str[2][maxn];int main(){原创 2014-12-04 11:06:32 · 513 阅读 · 0 评论 -
codeforces 985F(hash)
首先本题目的意思是给定一个母串,然后每次查询两个长度相等的子串是否同构,同构的定义如下:For two given strings s and t, say S is the set of distinct characters of s and T is the set of distinct characters of t. The strings s and t are isomorphic...原创 2018-05-23 10:26:47 · 932 阅读 · 0 评论