因为这次难得不在十点半(或是更晚),大家都在打,然后我又双叒叕垫底了=。=

自己对时间的分配,做题的方法和心态还是太蒻了,写的时候经常写一半推倒重来。还有也许不是自己写不出来,而是在开始写之前就觉得自己写不出来

多打CF

A.Sea Battle

讨论.jpg

也有式子的解法,我没想

B.Draw

讨论失败.jpg

(写题顺序:ADFC,没有B)

讨论个**,转化成线段求交,答案就是$\sum max(0,min(x,y)-max(lstx,lsty)+(lstx!=lsty))$,记得加上一开始的1

C.Birthday

赛场降智->枚举两边$n^2$+排序后中间轮着放检查$n$->$n^3$睿智算法

正确答案->不知为啥还要枚举,排序以后直接轮着放->$n\log n$

D.Gourmet choice

并查集+拓扑排序

  1. #include<queue>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N=,M=;
  7. int num[N],aset[N],que[N],bel[N];
  8. int p[N],noww[M],goal[M],deg[N];
  9. int n,m,f,b,t1,t2,cnt,tot,ff;
  10. char rd[][];
  11. int Finda(int x)
  12. {
  13. return x==aset[x]?x:aset[x]=Finda(aset[x]);
  14. }
  15. void Link(int f,int t)
  16. {
  17. noww[++cnt]=p[f],deg[t]++;
  18. goal[cnt]=t,p[f]=cnt;
  19. }
  20. int main ()
  21. {
  22. scanf("%d%d",&n,&m);
  23. for(int i=;i<=n+m;i++) aset[i]=i;
  24. for(int i=;i<=n;i++)
  25. {
  26. scanf("%s",rd[i]+);
  27. for(int j=;j<=m;j++)
  28. if(rd[i][j]=='=')
  29. aset[Finda(i)]=Finda(j+n);
  30. }
  31. for(int i=;i<=n+m;i++) bel[i]=Finda(i);
  32. for(int i=;i<=n;i++)
  33. for(int j=;j<=m;j++)
  34. {
  35. if(rd[i][j]=='<') Link(bel[i],bel[j+n]);
  36. if(rd[i][j]=='>') Link(bel[j+n],bel[i]);
  37. }
  38. for(int i=;i<=n+m;i++)
  39. if(!deg[i]) que[++b]=i,num[i]=;
  40. while(f<=b)
  41. {
  42. int tn=que[f++];
  43. for(int i=p[tn];i;i=noww[i])
  44. if(!(--deg[goal[i]]))
  45. que[++b]=goal[i],num[goal[i]]=num[tn]+;
  46. }
  47. for(int i=;i<=n+m;i++) if(deg[i]) printf("No"),exit(); puts("Yes");
  48. for(int i=;i<=n;i++) printf("%d ",num[bel[i]]); puts("");
  49. for(int i=n+;i<=n+m;i++) printf("%d ",num[bel[i]]);
  50. return ;
  51. }

E.String Multiplication

请讨论.jpg

答案只和最大子段,前缀连续和后缀连续有关,枚举哪个字符作为答案之后再统计就比较简单了

但是仍然有很多细节=。=

  1. #include<cstdio>
  2. #include<string>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. using namespace std;
  7. const int N=;
  8. string str[N]; long long ans;
  9. int main()
  10. {
  11. int n; cin>>n;
  12. for(int i=;i<=n;i++)
  13. cin>>str[i];
  14. for(int i='a';i<='z';i++)
  15. {
  16. long long maxi=;
  17. for(int j=;j<=n;j++)
  18. {
  19. int len=str[j].size();
  20. long long lst=,tmp=,pre=,suf=;
  21. for(int k=;k<len;k++)
  22. (str[j][k]==i)?lst=max(lst,++tmp):tmp=;
  23. if(lst||maxi)
  24. {
  25. for(int k=;k<len;k++)
  26. if(str[j][k]==i) pre++;
  27. else break;
  28. for(int k=len-;~k;k--)
  29. if(str[j][k]==i) suf++;
  30. else break;
  31. if(lst==len) maxi=(maxi+)*lst+maxi;
  32. else maxi=maxi?max(lst,pre+suf+):lst;
  33. }
  34. }
  35. ans=max(ans,maxi);
  36. }
  37. printf("%lld",ans);
  38. return ;
  39. }

F.Asya And Kittens

并查集维护小猫之间的连通性,同时维护每只小猫的下一只小猫和当前小猫链里最后一只小猫是谁。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N=;
  6. int n,st,t1,t2,cnt;
  7. int aset[N],nxt[N],endp[N];
  8. int Finda(int x)
  9. {
  10. return x==aset[x]?x:aset[x]=Finda(aset[x]);
  11. }
  12. int main()
  13. {
  14. scanf("%d",&n);
  15. for(int i=;i<=n;i++) aset[i]=endp[i]=nxt[i]=i;
  16. for(int i=;i<n;i++)
  17. {
  18. scanf("%d%d",&t1,&t2);
  19. int t3=Finda(t1),t4=Finda(t2);
  20. aset[t3]=t4,nxt[endp[t4]]=t3,endp[t4]=endp[t3];
  21. }
  22. for(int i=;i<=n;i++)
  23. if(Finda(i)==i) {st=i; break;}
  24. while(nxt[st]!=st)
  25. printf("%d ",st),st=nxt[st];
  26. printf("%d",st);
  27. return ;
  28. }

G.Most Dangerous Shark

单调栈优化DP,代码咕咕了

放一个WinnieChen的代码

Codeforces Round #541的更多相关文章

  1. Codeforces Round #541 (Div. 2)

    Codeforces Round #541 (Div. 2) http://codeforces.com/contest/1131 A #include<bits/stdc++.h> us ...

  2. Codeforces Round #541 (Div. 2)题解

    不知道该更些什么 随便写点东西吧 https://codeforces.com/contest/1131 ABC 太热了不写了 D 把相等的用并查集缩在一起 如果$ x<y$则从$ x$往$y$ ...

  3. Codeforces Round #541 (Div. 2) D(并查集+拓扑排序) F (并查集)

    D. Gourmet choice 链接:http://codeforces.com/contest/1131/problem/D 思路: =  的情况我们用并查集把他们扔到一个集合,然后根据 > ...

  4. Codeforces Round #541 (Div. 2) (A~F)

    目录 Codeforces 1131 A.Sea Battle B.Draw! C.Birthday D.Gourmet choice(拓扑排序) E.String Multiplication(思路 ...

  5. Codeforces Round #541 (Div. 2) G dp + 思维 + 单调栈 or 链表 (连锁反应)

    https://codeforces.com/contest/1131/problem/G 题意 给你一排m个的骨牌(m<=1e7),每块之间相距1,每块高h[i],推倒代价c[i],假如\(a ...

  6. Codeforces Round #541 (Div. 2) E 字符串 + 思维 + 猜性质

    https://codeforces.com/contest/1131/problem/D 题意 给你n个字符串,字符串长度总和加起来不会超过1e5,定义字符串相乘为\(s*s1=s1+s[0]+s1 ...

  7. Codeforces Round #541 (Div. 2) D 并查集 + 拓扑排序

    https://codeforces.com/contest/1131/problem/D 题意 给你一个n*m二维偏序表,代表x[i]和y[j]的大小关系,根据表构造大小分别为n,m的x[],y[] ...

  8. Codeforces Round #541 (Div. 2) C.Birthday

    链接:https://codeforces.com/contest/1131/problem/C 题意: 求给的n个数,相邻差值最小的排列方式.1-n相邻. 思路: sort后隔一个取一个,取到底后再 ...

  9. Codeforces Round #541 (Div. 2) B.Draw!

    链接:https://codeforces.com/contest/1131/problem/B 题意: 给n次足球比分,求存在平局的机会. 思路: 结构体存储,unique后,判断是否有分数交叉. ...

  10. Codeforces Round #541 (Div. 2) A.Sea Battle

    链接:https://codeforces.com/contest/1131/problem/A 题意: 给两个矩形,一个再上一个在下,求两个矩形合并的周围一圈的面积. 思路: 因为存在下面矩形宽度大 ...

随机推荐

  1. 20155318 Exp1 PC平台逆向破解(5)M

    20155318 Exp1 PC平台逆向破解(5)M 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入 ...

  2. VS中为非控制台程序提供控制台输出窗口

    /************************************************************************/ /* 模块名:ConsoleAdapter 文件名 ...

  3. 【干货】YUM安装PHP 7版本后,增加phalcon框架的报错解决

    目录 1.yum安装php 7.x版本,此处部署7.3版本 2.安装phalcon框架 2.1.PHP版本依赖关系 2.2.编译phalcon扩展模块 2.3.增加扩展文件 3.部署phalcon遇到 ...

  4. [CF1009G]Allowed Letters[贪心+霍尔定理]

    题意 给你一个长为 \(n\) 的串,字符集为 \(a,b,c,d,e,f\) .你可以将整个串打乱之后重新放置,但是某些位置上有一些限制:必须放某个字符集的字符.问字典序最小的串,如果无解输出 &q ...

  5. SpringCloud+Boot简单例子笔记

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  6. 深入浅出OAuth2.0授权

    一.前言 说到OAuth,先来一段百度到的比较官方的解释: OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信 ...

  7. 更改jenkins的默认工作空间并迁移插件和配置数据

    最近刚使用阿里云ECS centos服务器,购买的是40G的系统盘,60G的数据盘. 昨天在查看服务器磁盘空间的时候,偶然发现 /dev/vda1 下面40G的空间已使用17G, 因为服务器才开始使用 ...

  8. Linux下tomcat的启动,关闭,以及shutdown失败杀死进程的方法

    1.tomcat服务器第一次启动并查看启动日志的命令 在 ../bin 文件夹下输入./startup.sh;tail -f ../logs/catalina.out 2.需要重启服务器的时候 在 . ...

  9. python 游戏(井字棋)

    1. 游戏思路和流程图 实现功能,现实生活中的井字棋玩法 游戏流程图 2. 使用模块和游戏提示 import random def game_info(): print('欢迎来到井字棋游戏') pr ...

  10. 微软职位内部推荐-Senior Software Engineer_HPC

    微软近期Open的职位: Job Title: Senior Software Engineer_HPC Location: Shanghai, China Are you passionate ab ...