This is a 玄学 exam

A.年轮蛋糕

最小的最大,二分首选

断环为链,check(x),x为答案,然后将每个大于x的子区间记录下来

如果有大于3个的话,那么x就可以是答案

那么·,在优化下来,二分里套个下二分,查长度右端点

时间复杂度:O(log(10^13)^3*n)

但是AC了

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. inline int read()
  7. {
  8. int f=,ans=;char c;
  9. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  10. while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
  11. return f*ans;
  12. }
  13. long long n,a[],s[],l,r,mid,maxn,inf=<<-;
  14. long long cx(long long ll,long long rr,long long sc)
  15. {
  16. long long da=inf;
  17. long long ls=ll,rs=rr,mid;
  18. while(ls<=rs)
  19. {
  20. mid=(ls+rs)/;
  21. if(s[mid]>=sc) da=min(da,mid),rs=mid-;
  22. else ls=mid+;
  23. }
  24. return da;
  25. }
  26. bool check(long long xx)
  27. {
  28. for(long long i=;i<=n;i++)
  29. {
  30. long long qv=s[i-],ll=i,rr=i+n-,res=;
  31. while(ll<=rr)
  32. {
  33. if(res==)
  34. {
  35. if(s[rr]-qv>=xx) return ;
  36. else break;
  37. }
  38. long long as=cx(ll,rr,qv+xx);
  39. if(as==inf)
  40. {
  41. if(res>=) return ;
  42. else break;
  43. }
  44. qv=s[as];
  45. ll=as+;
  46. res++;
  47. if(res==)
  48. {
  49. if(s[rr]-qv>=xx) return ;
  50. else break;
  51. }
  52. if(res>=) return ;
  53. }
  54. }
  55. return ;
  56. }
  57. int main()
  58. {
  59. n=read();
  60. for(long long i=;i<=n;i++) a[i]=read(),a[i+n]=a[i],r+=a[i];
  61. for(long long i=;i<=*n;i++) s[i]=s[i-]+a[i];
  62. while(l<=r)
  63. {
  64. mid=(l+r)/;
  65. if(check(mid)) maxn=max(maxn,mid),l=mid+;
  66. else r=mid-;
  67. }
  68. printf("%lld",maxn);
  69. }

B.最佳团体

link

玄学题目

复杂度未知,假装是A了吧

一看到一个和/一个和,分数规划的经典题

又想到若x可以作为答案的话,x之前也可以作为答案

所以可以二分

然后这个问题可以转化成在树上做背包即可

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. inline int read()
  7. {
  8. int f=,ans=;char c;
  9. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  10. while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
  11. return f*ans;
  12. }
  13. double eps=1e-;
  14. struct node{
  15. int u,v,nex;
  16. }x[];
  17. int cnt,n,head[],s[],t[];
  18. double val[],dp[][];
  19. double l,r,mid,maxn;
  20. void add(int u,int v)
  21. {
  22. x[cnt].u=u,x[cnt].v=v,x[cnt].nex=head[u],head[u]=cnt++;
  23. }
  24. int m,size[],deep[];
  25. void dfs(int f,int fath)
  26. {
  27. deep[f]=deep[fath]+;
  28. size[f]=;
  29. for(int i=head[f];i!=-;i=x[i].nex)
  30. {
  31. dfs(x[i].v,f);
  32. size[f]+=size[x[i].v];
  33. }
  34. }
  35. void dp_tree(int xx)
  36. {
  37. dp[xx][]=;int k=min(m,size[xx]);
  38. for(int i=head[xx];i!=-;i=x[i].nex)
  39. {
  40. int v=x[i].v;
  41. dp_tree(v);
  42. for(int t=k;t>=;t--)
  43. for(int j=min(t,size[v]);j>=;j--) dp[xx][t]=max(dp[xx][t],dp[xx][t-j]+dp[v][j]);
  44. }
  45. if(xx!=)
  46. for(int t=k;t>=;t--) dp[xx][t]=dp[xx][t-]+val[xx];
  47. }
  48. bool check(double xx)
  49. {
  50. bool flag=false;
  51. memset(dp,0xcf,sizeof(dp));
  52. for(int i=;i<=n;i++)
  53. val[i]=double(s[i]-xx*t[i]);
  54. dp_tree();
  55. return dp[][m]>=;
  56. }
  57. int main()
  58. {
  59. memset(head,-,sizeof(head));
  60. m=read(),n=read();
  61. for(int i=;i<=n;i++)
  62. {
  63. t[i]=read(),s[i]=read();
  64. r+=double(s[i]);
  65. int v=read();
  66. add(v,i);
  67. }
  68. dfs(,);
  69. l=,r*=;
  70. while(l<=r)
  71. {
  72. double mid=(l+r)/;
  73. if(check(mid)) l=mid+eps,maxn=max(maxn,mid);
  74. else r=mid-eps;
  75. }
  76. printf("%.3lf",maxn);
  77. }

C.起床困难综合症

link

一道思维题,二进制运算至于位有关,并没有与整体有关

所以就可以打一个表,0000000,1111111,位数都为30为(int的精度),然后与输入数据处理一下

看一下0可以转换成什么,1可以转换成什么

然后瞎搞一下即可

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<climits>
  5. #include<algorithm>
  6. using namespace std;
  7. inline int read()
  8. {
  9. int f=,ans=;char c;
  10. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  11. while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
  12. return f*ans;
  13. }
  14. int n,m,l,r=INT_MAX,data,sry;
  15. char str[];
  16. int main()
  17. {
  18. n=read(),m=read();
  19. for(int i=;i<=n;i++)
  20. {
  21. scanf("%s",str+);
  22. if(str[]=='A') {int s=read();l&=s,r&=s;}
  23. else if(str[]=='O') {int s=read();l|=s,r|=s;}
  24. else
  25. {int s=read();l^=s,r^=s;}
  26. }
  27. for(int i=;i>=;i--)
  28. {
  29. if(l&(<<i)) data|=(<<i);
  30. else if(sry+(<<i)<=m)
  31. if(r&(<<i)) data|=(<<i),sry+=(<<i);
  32. }
  33. cout<<data;
  34. }
  35. /*
  36. 3 10
  37. AND 5
  38. OR 6
  39. XOR 7
  40. */

国庆 Day1的更多相关文章

  1. 正睿OI国庆day1

    正睿OI国庆day1 T1 \[ S_n=1*S_{n-1}+1*F_{n-1}+1*F_{n-2}+1*f_{n-1}+1*f_{n-2} \] \[ F_{n}=0*S_{n-1}+1*F_{n- ...

  2. 清北国庆day1 (脑)残

    (留坑) /* 不知道为什要找的循环节TM这么长 */ #include<cstdio> #include<cstdlib> #include<cstring> u ...

  3. 学大伟业 2017 国庆 Day1

    期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是 ...

  4. 国庆集训 Day1 T2 生成图 DP

    国庆集训 Day1 T2 生成图 现在要生成一张\(n\)个点的有向图.要求满足: 1.若有 a->b的边,则有 b->a 的边 2.若有 a->b 的边和 b->c 的边,则 ...

  5. 牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并)

    牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \ ...

  6. 湖南国庆模拟赛day1 分组

    题目大意:给你一个n个数的数列s,要对这些数进行分组,当有任意两个数在一种方案在一起而在另一种方案中不在一起算是两种不同的方案,一个组的"不和谐程度"为组内数的极差,如果只有一个人 ...

  7. 2017北京国庆刷题Day1 afternoon

    期望得分:100+100+100=300 实际得分:100+100+100=300 T1 一道图论好题(graph) Time Limit:1000ms   Memory Limit:128MB 题目 ...

  8. 牛客国庆训练,CCPC Camp DAY1 J 倍增,括号匹配

    https://www.nowcoder.com/acm/contest/201#question 题意:中文不翻译了 解法的个人理解: 对于一个合法的区间$[L,R]$ 1.显然其左括号的匹配位置都 ...

  9. 牛客国庆集训派对Day1.B.Attack on Titan(思路 最短路Dijkstra)

    题目链接 \(Description\) 给定\(n,m,C\)及大小为\((n+1)(m+1)\)的矩阵\(c[i][j]\).平面上有\((n+1)(m+1)\)个点,从\((0,0)\)编号到\ ...

随机推荐

  1. jenkins--Jenkins+Git+coding+maven 实现自动化测试持续集成

    1.打开Jenkins官网,下载jenkins.war https://jenkins.io/download/ 2.将该war包直接放置到Tomcat的webapp下. 3.查看自己Tomcat的端 ...

  2. python中为什么 if/while/def/class语句需要冒号?

    python中冒号主要用于增强可读性(ABC语言实验的结果之一).考虑一下这个: if a == b print(a) 与 if a == b: print(a) 注意第二种方法稍微容易一些.请进一步 ...

  3. 基于 CPython 解释器,为你深度解析为什么Python中整型不会溢出

    前言 本次分析基于 CPython 解释器,python3.x版本 在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数.在python3后, ...

  4. 82. Single Number [easy]

    Description Given 2*n + 1 numbers, every numbers occurs twice except one, find it. Example Given [1, ...

  5. 从零开始的Python学习Episode 6——字符串操作

    字符串操作 一.输出重复字符串 print('smile'*6) #输出6个smile 二.通过引索输出部分字符串 print('smile'[1:]) print('smile'[1:3]) #输出 ...

  6. 11.24Daily Scrum

    人员 任务分配完成情况 明天任务分配 王皓南 实现网页上视频浏览的功能.研究相关的代码和功能.990 测试 申开亮 实现网页上视频浏览的功能.研究相关的代码和功能.991 测试 王宇杰 负责后台代码测 ...

  7. ACM 第十六天

    计算几何 练习题: F - Beauty Contest POJ - 2187 Bessie, Farmer John's prize cow, has just won first place in ...

  8. css那些事儿3 列表与浮动

    一  列表 列表默认为行内块元素,具有宽高,当一个非块元素是无法应用宽高的,比如a 1 有序列表 有ol li组成,其中li为列表项,列表的ol子元素务必为li元素标签,li子内容支持列表任意嵌套,有 ...

  9. Windows资源监控工具大全

    在利用LoadRunner进行性能测试的时候,Windows服务器的资源是经常需要监控的对象.其实除了LoadRunner提供的计数器,似乎Window服务器并不像Unix或者Linux提供众多的性能 ...

  10. FineCMS介绍

      产品简介 FineCMS(简称免费版.企业版.公益版)是一款基于PHP+MySql+CI框架开发的高效简洁的中小型内容管理系统,面向多终端包括Pc端网页和移动端网页,支持自定义内容模型和会员模型, ...