CODEFORCES_
文章平均质量分 70
Masamiiiii
这个作者很懒,什么都没留下…
展开
-
codeforces 716B字符串水题
点击打开链接#include #include #include #include using namespace std;const int M=51000+20;char s[M];char ans[M];//记录应该补充的字符 int vis[M];int main(){ while(scanf("%s",s)!=EOF) { int len=strl原创 2016-09-22 18:34:02 · 669 阅读 · 0 评论 -
codeforces 375D dfs+模拟
点击打开链接#include #include #include #include using namespace std;const int N=1e3+20;char g[N][N];int n,m,k,vis[N][N],res;bool flag;struct Move{ int x; int y; int k;//.个数 }off[4]={{-1,0},{原创 2016-10-09 12:08:23 · 294 阅读 · 0 评论 -
codeforces 724B 暴力+枚举
点击打开链接#include #include #include #include using namespace std;const int N=1e3+20;char g[N][N];int n,m,k,vis[N][N],res;bool flag;struct Move{ int x; int y; int k;//.个数 }off[4]={{-1,0},{原创 2016-10-09 12:10:04 · 392 阅读 · 0 评论 -
codeforce 719b 贪心
点击打开链接 n个蝗虫,共两种颜色,要求摆出rbr...或者brb...这种交错的样子,可以交换任意俩,或者改变一个的颜色,求操作最小次数。//变换后的序列要么位brbr... 要么位rbrb...//原序列和最终序列的某个位置不同 这个位置就肯定要操作一次 //统计错位位置 //若和b错位位置有5个,和r错位位置有3个 则应该交换3次 改变两次 即可原创 2016-09-24 10:03:42 · 842 阅读 · 0 评论 -
codeforces 621C(数学期望)
点击打开链接//f[i] a[i]和a[(i+1)%n]之积能被p整除的概率 //E=segmaE[i]=segma(f[i]*2000)//如何求f[i]? //因为p为素数 (a,p)=1,(b,p)=1 (ab,p)=1(反证法易证明)//l[i]~r[i]中能被p整除的数的个数有: r/p-(l-1)/p (p组一个) //F[i](从a[i]中取出不被整除的概率原创 2016-10-20 22:27:55 · 525 阅读 · 0 评论 -
codeforcs 722D 贪心(对最值操作)
题目链接//为了使最大值最小,每次选最大值&&把最大值不断除以2 碰到!vis[x']时停止,x'为0说明最值无法变化,退出即可//x>y x'// x'>y时 下一步时会继续对x'进行操作,进一步缩小最大值 #include #include #include #include #include #include using namespace std;c原创 2016-10-21 12:03:29 · 453 阅读 · 0 评论 -
codeforces 624C 二分图染色
点击打开链接//b和a,c都相连 不相连的只有a-c 所以原图中的两点无边只能为a-c //在补图中确定颜色法案后,还要在原图中check一遍#include #include #include #include #include #include #include #include #include #include #include using names原创 2016-10-21 23:19:24 · 506 阅读 · 0 评论 -
codeforces 725C Hidden word(构造)
点击打开链接参考//s[x]=s[y] 构造:则保证x与x-1,x+1,y-1,y+1相邻,其他的元素按照原来顺序放即可; // ..x开始顺势针放 dif/2 保证s[y-1]和s[x]相邻 (两行末尾为s[x]~s[dif/2],, s[y-1]~s[dif/2+1])//s[y+1]~s[len-1] s[0]~s[x-1]连成一串 取0~12-dif/2,放到s[x]之原创 2016-10-23 17:47:13 · 473 阅读 · 0 评论 -
Codeforces 633D Fibonacci-ish 数学+暴力
点击打开链接题意:给一个长为n的序列,求出fn=fn-1+fn-2(满足斐波那契)成立的最长序列。n#include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;const int原创 2016-11-03 21:03:26 · 373 阅读 · 0 评论 -
CF Gym 字符串字典序
点击打开链接#include #include #include #include #include using namespace std;const int M=1e5+20;char a[M];int n;int pos[27];//字符出现的最早位置 int main(){ int t; cin>>t; while(t--) { char c原创 2016-09-27 20:47:08 · 390 阅读 · 0 评论 -
codeforces 725D Conteset Balloons 贪心
点击打开链接//要想rank靠前 每次做的操作只能:花费气球挤掉比自己高的 贪心:用越少气球挤掉一个排名高的人(剩的气球越多排名就越高.) 每一次操作更新答案即可#include #include #include #include using namespace std;typedef long long ll;typedef pair P;priority_queue原创 2016-10-24 16:37:15 · 281 阅读 · 0 评论 -
Codeforces 624D Array Gcd(数论+dp)
点击打开链接//因为DEL只能操作一次&&不能删除所有元素// a1 an 至少有一个存在->最后的gcd肯定为a1或者an的某个因子//只要求gcd>1所以贪心:扫素因子即可(素因子已经满足题目要求 在大没有意义,反而可能增加操作)枚举素因子产生的Gcd,用Dp求最小花费dp[i][j]表示扫描到第i个元素时 没有删除元素/正在删除元素/已经删除完元素的最小代价。原创 2016-10-24 17:59:44 · 492 阅读 · 0 评论 -
CF 715A Plus and a square root(数学构造)
点击打开链接#include #include #include #include #include using namespace std;const int Mod=1e9+7;const int M=1e5+1;long long a[M];//a[i]第i层时要升级时的数字long long ans[M]; // 第i层需要加的次数 int main(){原创 2016-09-28 16:36:30 · 505 阅读 · 0 评论 -
CF Gym101102C 线段树(最值)+模拟
点击打开链接每次更新 判断名次即:最值编号是否改变 如果改变,则记录改变的时间#include #include #include #include #include using namespace std;const int M=1e5+20;struct Seg{ long long score; int num; }seg[M*4];//节点保存最大值和对原创 2016-09-28 09:01:20 · 578 阅读 · 0 评论 -
Codeforces 633C Spy Syndrome 2(Trie+暴力)
点击打开链接题意:原本有一个串有许多单词,中间用空格隔开,后来把单词全部转换成小写,然后翻转,再把中间的所有的空格全部去掉,就得到了一个全是小写字母组成的串。现在告诉你这样的串,并告诉你字典,要你找出一种满足条件的原串,保证有解。思路:字典逆序插入到Trie中 在原串上暴力匹配并记录每次匹配的单词输出即可#include #include #include #原创 2016-11-04 23:21:15 · 817 阅读 · 0 评论 -
CF the little match girl (贪心!!!)
点击打开链接解放1#include #include #include #include #include using namespace std;const int M=1e5+20; char a[M];int n;int num[10]={6,2,5,5,4,5,6,3,7,6};//组成数字i需要多少根木棒 bool check(long long cnt,in原创 2016-09-28 21:10:30 · 330 阅读 · 0 评论 -
CF 372D Dijkstra+模拟
点击打开链接先判断无解情况: 情况1:不加'0'边时 最短路d[t]情况2:加入'0'边时,使'0'边的权为最小的1 此时最小d[t]>L 无解剩下的情况都为有解 因为(s,t)的路径路径只剩下 d[t]不断对最短路径中的'0'边进行松弛使之达到L 此时判断最短路是等于L(松弛后的次短路变为最短路可能小于L)#include #include #include usi原创 2016-09-29 16:51:16 · 538 阅读 · 0 评论 -
codeforces 727A 规律
点击打开链接两个操作 x*2 , x*10+1 (用bfs搜TLE了)发现经过操作1后的数为偶数 经过操作2后为奇数->合法操作只有一种所以最后的b如果为偶数 则可以推出是由操作1得来 将b/2继续迭代奇数 则由操作2的来 将b=(b-1)/10后继续迭代 ,可以发现如果 (b-1)%10!=0 则没有x*10+1=b 退出即可#include #include #in原创 2016-10-15 20:11:24 · 626 阅读 · 0 评论 -
Codeforces 629D Babaei and Birthday Cake LIS+线段树优化
点击打开链接dp[i]以i结尾的LIS dp[i]=si+max(d[j]) jn令线段1~n代表面积第几小,线段树中保存dp最值,按下标顺序插入即可 #include #include #include #include #include using namespace std;typedef long long ll;const int N=1e5+40;原创 2016-11-06 10:45:58 · 382 阅读 · 0 评论 -
Codeforces 629C Famil Door and Brackets(dp)
点击打开链接给定长度为m的序列s,求一共有多少对p,q,使得p+s+q长度为n,且’(‘数与’)’数相等;括号序列合法p+s+q中的任意前缀和>0 即左括号个数任意时刻都不小于右括号个数枚举p的长度和平衡度,q也就固定了 令dp[i][j]为长度i 平衡度为J(左括号比右括号多J)的方法数 dp[i][j]=dp[i][-j] 左括号换成右括号即可 #inc原创 2016-11-06 19:39:20 · 354 阅读 · 0 评论 -
codeforces 626C 二分判定
点击打开链接#include #include using namespace std;typedef long long ll;int n,m;const long long inf=6e6;bool check(ll x){ //最大数x之前 至少有n个2的倍数,m个3的倍数 if(x/2<n||x/3<m||(x/2+x/3-x/6)<n+m)//2 3倍数集合中个数不原创 2016-10-26 09:45:04 · 347 阅读 · 0 评论 -
codeforces 727c 交互式输入(水)
点击打开链接#include #include #include #include #include using namespace std;const int N=1e4+20;int a[N]; int main(){ int x,y,z,n; scanf("%d",&n); printf("? 1 2\n"); fflush(stdout); scanf("原创 2016-10-16 16:37:06 · 955 阅读 · 0 评论 -
CF 721B 字符串排序水题
点击打开链接#include #include #include using namespace std;const int N=110;char s[N][N];int n,k;char pass[N];void Sort(){ int i,j; char temp[N]; for(j=0;j<n;j++) for(i=j+1;i<n;i+原创 2016-10-01 00:25:59 · 368 阅读 · 0 评论 -
CF 712C Journey(dp+graph)
点击打开链接#include #include #include #include #define fi first#define se second using namespace std;const int N=5005;typedef long long ll;typedef pair ii;//顶点和距离 int n,m,T; const ll inf=(ll)1原创 2016-10-01 13:50:05 · 367 阅读 · 0 评论 -
codeforces 731C 并查集+贪心
点击打开链接利用并查集把颜色要相同的下标放在同一集合中,贪心:找到每个集合中出现最多的颜色 把剩下的颜色变为该颜色即可 ans+=size-mx#include #include #include #include #include #include #include #include using namespace std;const int N=2e5+10;lo原创 2016-10-16 22:24:00 · 1036 阅读 · 0 评论 -
codeforces 626D 概率+暴力
点击打开链接题意:三局两胜,前两局A胜,第三局B胜,问最后B的得分总和大于A的可能性。//总的事件个数为C(n,2)^3 //cnt[a] 赢的一局相差a时的方法数 cnt2[b],输的两局总和相差b的方法数 利用前缀和变为求出相差//则要求输掉前两局,赢第三局&&输的人总得分大(差距a-b>0)的方法数为: tot+=cnt2[i]*cnt[i+1] i=0~M原创 2016-10-27 14:57:45 · 333 阅读 · 0 评论 -
codeforces 731F 暴力(前缀和)
点击打开链接//枚举a[i]作为secondary //其余要选的数 必须为a[i]的倍数 x=p*a[i] //如果 a[j]在p*a[i]~(p+1)*a[i]之间 按照题意 a[j]可以降为p*a[i]//重点:如何快速判断 p*a[i]~(p+1)*a[i]-1之间有多少个a[j]? //利用前缀和思想 cnt[i]记录1~i中出现的元素个数 则a,b内元素原创 2016-10-17 22:19:46 · 685 阅读 · 0 评论 -
codeforces 631B Print Check模拟
点击打开链接#include #include #include using namespace std;typedef long long ll;const int N=5e3+40;const ll inf=1<<30;int g[N][N];int r[N],c[N];// row[i]的颜色int op1[N],op2[N]; int main(){ int n原创 2016-11-08 14:50:09 · 282 阅读 · 0 评论 -
Codeforces 723C暴力(最小值最大)
点击打开链接#include #include #include #include #include #include #include #define M 2016 using namespace std;const int inf=1<<20;int a[M],b[M];//b[j] the num of songs the groups j plays map原创 2016-10-03 22:23:44 · 524 阅读 · 0 评论 -
codeforces 377D exam贪心判定+二分
点击打开链接贪心判定考试复习时间可以间断,则如果在第i天考科目day[i],相当于在前i-1天中,要任意填入day[i]个(前i-1天要有day[i]个空位)贪心:若在x天完成全部考试 第y1和第y2天都能考同一个科目&&y2>y1显然选择在靠后的第y2天考该科目 y2的空位数>=y1的空位数 #include #include #include #inclu原创 2016-10-18 17:28:45 · 547 阅读 · 0 评论 -
Codeforces 631C Report排序+思维
点击打开链接//题意:n,k//容易看出 若i//所以最后剩下的操作为 irj//r[i]为递减,r[i]操作后a的r[i+1]+1~r[i]这段不会在改变 为了找到r[i+1]~r[i]这段将b从小到大排序 t=1 递增时 a中r[i+1]+1~r[i]为b的后几位t=0 递减时 a中的r[i+1]+1~r[i]为b的前几位#include #i原创 2016-11-08 21:25:14 · 338 阅读 · 0 评论 -
codeforces 721D Maxim and Array(贪心)
点击打开链接#include #include #include #include #include #include using namespace std;const int M=2e5+20;typedef long long ll;ll n,k,x;struct node{ ll num; int id; bool operator <(const node&原创 2016-10-07 11:24:10 · 320 阅读 · 0 评论 -
CF gym Coins(01背包计数)
点击打开链接#include #include #include #include #include using namespace std;typedef long long ll;const int Mod=1e9+7;const int M=15010;ll w;ll dp[M];//dp[j] 前i件物品选出之后为j的方法数 ll d1[M],d2[M]; ll原创 2016-10-07 22:37:51 · 396 阅读 · 0 评论 -
codeforces 621B 对角线计数
点击打开链接#include #include #include #include #include #include using namespace std;typedef long long ll;const int N=2e3+20;int f[N],s[N];int main(){ int n; cin>>n; memset(f,0,sizeof(f));原创 2016-10-20 17:27:21 · 383 阅读 · 0 评论 -
Codeforce 734C Anton and Making Potions 枚举+二分
点击打开链接#include #include #include #include #include #include using namespace std;typedef long long ll;const int N=1e5+20;const ll inf=1e18;ll a[N],b[N],c[N],d[N];int main(){ ll n,x,s; l原创 2016-11-16 08:46:53 · 462 阅读 · 0 评论 -
Codeforces 734D Anton and Chess 几何+模拟
点击打开链接最后In Check的棋子来自king 8个方向中的最近的棋子 保留该棋子 最后在判断下即可 #include #include #include #include #include #include using namespace std;typedef long long ll;const int N=5e5+20;struct point{ cha原创 2016-11-16 10:22:53 · 587 阅读 · 0 评论 -
Codeforces 733D Kostya the Sculptor 贪心
点击打开链接给出a,b,c三边,可以rotate 长宽高可以互换平行六面体内接球半径由六面体最短的那条边决定 所以最短边越大好,排好序:按较大两边相同 合并第三边后,取最短边后更新即可#include #include #include #include #include #include #include #include #include using namesp原创 2016-11-01 16:14:34 · 438 阅读 · 1 评论 -
Codeforces 733B Parade暴力
点击打开链接有1e5行2列 只有一次操作,暴力枚举要换的行即可#include #include #include #include #include #include #include #include using namespace std;typedef long long ll;const ll mod=1e9+7;const int N= 1e6+20;i原创 2016-11-01 16:16:56 · 596 阅读 · 0 评论 -
Codeforces 733C Epidemic in Monstropolis 构造+思维
点击打开链接//b的k个中的第一个若从a[x']开始合并 因为b[1]为第一个,所以a[1~x']必须全部合并完,//如果sum[1~x']//同理后面的b[j]为a[i]的一段连续和 b[j]满足前缀和时 构造解即可:从一块的最大值开始向相邻的合并,合并时移动编号#include #include #include #include #include #incl原创 2016-11-01 22:34:36 · 385 阅读 · 0 评论 -
Codeforces 734E 树的直径+缩点
点击打开链接/颜色相同的联通块能同时变色,则缩成一个点//缩点后 变成一个黑白相间的树 //选中心点变色使得同色的一圈向外扩散 最多扩散(d+1)/2次 d为树的直径 #include #include #include #include #include #include using namespace std;typedef long long ll;c原创 2016-11-19 11:17:43 · 401 阅读 · 0 评论