day1

t1

XBG

  1. #include<map>
  2. #include<cstdio>
  3. #include<string>
  4. #include<string.h>
  5. #include<iostream>
  6. #include<algorithm>
  7. using namespace std;
  8. int d[123456];
  9. char ty[123456][20];
  10. int n,m;
  11. //...
  12. int main(){
  13. freopen("toy.in","r",stdin);
  14. freopen("toy.out","w",stdout);
  15. scanf("%d %d",&n,&m);
  16. for(int i=0;i<n;i++)scanf("%d%s",d+i,ty[i]);
  17. //for(int i=1;i<=n;i++)d[i]=d[i]?1:-1;
  18. int now=0;
  19. while(m--){
  20. int op,s;
  21. scanf("%d %d",&op,&s);
  22. if(!d[now]){
  23. if(op)now=(now+s)%n;
  24. else now=((now-s)%n+n)%n;
  25. }else{
  26. if(op)now=((now-s)%n+n)%n;
  27. else now=(now+s)%n;
  28. }
  29. }
  30. cout<<ty[now];
  31. return 0;
  32. }

t2

暴力30

子任务Si=1

以1为根统计每个子树里面1的个数

子任务链的写错了。

45分

  1. #include<map>
  2. #include<cstdio>
  3. #include<string>
  4. #include<vector>
  5. #include<string.h>
  6. #include<iostream>
  7. #include<algorithm>
  8. using namespace std;
  9. struct edge{
  10. int to,next;
  11. }e[601234];
  12. int cnt,last[301234],dep[301234],w[301234],ans[301234];
  13. int n,m;
  14. int s[301234],t[301234];
  15. void insert(int a,int b){
  16. e[++cnt]=(edge){b,last[a]};last[a]=cnt;
  17. e[++cnt]=(edge){a,last[b]};last[b]=cnt;
  18. }
  19. int fa[301234][20];
  20. void dfs(int v,int f){
  21. //fa[v][0]=f;
  22. //for(int i=1;i<=20;i++)fa[v][i]=fa[fa[v][i-1]][i-1];
  23. for(int i=last[v];i;i=e[i].next){
  24. int b=e[i].to;if(b!=f){
  25. dep[b]=dep[v]+1;
  26. dfs(b,v);
  27. }
  28. }
  29. }
  30. int an[301234];
  31. void dfs2(int v,int t,int f){
  32. fa[v][0]=f;
  33. //for(int i=1;i<=20;i++)fa[v][i]=fa[fa[v][i-1]][i-1];
  34. for(int i=last[v];i;i=e[i].next){
  35. int b=e[i].to;if(b!=f){
  36. dfs2(b,t,v);
  37. if(b==t){
  38. an[v]=i;
  39. }
  40. if(an[b]){
  41. an[v]=i;
  42. }
  43. }
  44. }
  45. }
  46. void dfs3(int s,int t){
  47. int v=s,ti=0;
  48. ans[s]+=(ti==w[s]);
  49. while(s!=t){
  50. s=e[an[s]].to;
  51. ++ti;
  52. ans[s]+=(ti==w[s]);
  53. }
  54. }
  55. int siz[301234];
  56. void dfs4(int v,int f){
  57. //fa[v][0]=f;
  58. //for(int i=1;i<=20;i++)fa[v][i]=fa[fa[v][i-1]][i-1];
  59. for(int i=last[v];i;i=e[i].next){
  60. int b=e[i].to;if(b!=f){
  61. dep[b]=dep[v]+1;
  62. dfs4(b,v);
  63. siz[v]+=siz[b];
  64. //fprintf(stderr,"Debug (%d)=%d\n",v,siz[v]);
  65. }
  66. }
  67. }
  68. vector<int>vec[301234];
  69. int main(){
  70. freopen("running.in","r",stdin);
  71. freopen("running.out","w",stdout);
  72. scanf("%d %d",&n,&m);
  73. for(int i=1,u,v;i<n;i++){
  74. scanf("%d %d",&u,&v);
  75. insert(u,v);
  76. }
  77. //dfs(1,0);
  78. for(int i=1;i<=n;i++)scanf("%d",w+i);
  79. for(int i=1;i<=m;i++)scanf("%d %d",s+i,t+i);
  80. if(n<=1000){
  81. for(int i=1;i<=m;i++){
  82. memset(an,0,sizeof(an));
  83. dfs2(s[i],t[i],0);
  84. dfs3(s[i],t[i]);
  85. }
  86. for(int i=1;i<=n;i++)printf("%d ",ans[i]);
  87. }else
  88. if(n%10==4){
  89. for(int i=1;i<=n;i++)if(t[i]>=s[i])vec[i].push_back(s[i]);
  90. for(int i=1;i<=n;i++){
  91. if(i-w[i]>=0){
  92. int Ans=vec[i-w[i]].size(),cnt=0;
  93. for(int x=0;x<Ans;x++){
  94. if(t[vec[i-w[i]][x]]<i)cnt++;
  95. }
  96. ans[i]+=(Ans-cnt);
  97. }
  98. }
  99.  
  100. //for(int i=1;i<=n;i++)printf("%d ",ans[i]);
  101. for(int i=1;i<=n;i++)vec[i].clear();
  102. for(int i=1;i<=n;i++)if(t[i]<s[i])vec[i].push_back(s[i]);
  103. for(int i=1;i<=n;i++){
  104. if(i+w[i]<=n){
  105. int Ans=vec[i+w[i]].size(),cnt=0;
  106. //fprintf(stderr,"at %d\n",Ans);
  107. for(int x=0;x<Ans;x++){
  108. if(t[vec[i+w[i]][x]]>i){
  109. cnt++;
  110. }
  111. }
  112. ans[i]+=(Ans-cnt);
  113. }
  114. }
  115. for(int i=1;i<=n;i++)printf("%d ",ans[i]);
  116. }else {
  117. for(int i=1;i<=n;i++)siz[t[i]]++;
  118. dep[1]=0;
  119. dfs4(1,0);
  120. for(int i=1;i<=n;i++)printf("%d ",(w[i]==dep[i])*siz[i]);
  121. }
  122. return 0;//... //... //...
  123. }

t3

2^n*2^m暴力枚举所有申请和批准情况

 

 

暴力64,数组小了不然是72

要特判m<2

  1. #include<map>
  2. #include<cstdio>
  3. #include<string>
  4. #include<vector>
  5. #include<string.h>
  6. #include<iostream>
  7. #include<algorithm>
  8. using namespace std;
  9. int n,m,v,e;
  10. int c[333],d[333];
  11. double k[333];/*
  12. int min(int a,int b){
  13. return a<b?a:b;
  14. }*/
  15. struct zy{
  16. int i,cost;
  17. }F[1234];
  18. bool cmp(zy a,zy b){
  19. return a.cost>b.cost;
  20. }
  21. double brutef(){
  22. double ans=1e23;
  23. int _F=0;
  24. for(int i=1;i<=n;i++){
  25. int tmp=0;
  26. if(tmp>1)tmp=tmp+g[c[i-1]][c[i]]-g[c[i-1]][d[i]];
  27. if(tmp<n)tmp=tmp+g[c[i+1]][c[i]]-g[c[i+1]][d[i]];
  28. F[++_F]=(zy){i,-tmp};
  29. }
  30. sort(F+1,F+_F+1,cmp);
  31. int q[1234];
  32. memset(q,0,sizeof(q));
  33. for(int i=0;i<=m;i++){
  34. q[F[i].i]=1;double tmp2=0;
  35. for(int t=1;t<n;t++){
  36. int a=c[t],b=c[t+1];
  37. if(q[t])a=d[t];
  38. if(q[t+1])b=d[t+1];
  39. tmp2+=g[a][b];
  40. }
  41. //cout<<F[i].i<<","<<tmp2<<endl;
  42. ans=min(ans,tmp2);
  43. }
  44. return ans;
  45. }
  46. int main() {
  47. freopen("classroom.in","r",stdin);
  48. freopen("classroom.out","w",stdout);
  49. scanf("%d%d%d%d",&n,&m,&v,&e);
  50. for(int i=1;i<=n;i++)scanf("%d",c+i);
  51. for(int i=1;i<=n;i++)scanf("%d",d+i);
  52. bool xz2=1;
  53. for(int i=1;i<=n;i++)scanf("%lf",k+i),xz2=xz2&&(k[i]==1.0);
  54.  
  55. for(int i=1;i<=v;i++)for(int j=1;j<=v;j++)g[i][j]=(i!=j)*(1<<20);
  56. for(int i=1;i<=e;i++){
  57. int a,b,w;
  58. scanf("%d %d %d",&a,&b,&w);
  59. g[a][b]=min(g[a][b],w);
  60. g[b][a]=min(g[b][a],w);
  61. }
  62.  
  63. for(int p=1;p<=v;p++)for(int i=1;i<=v;i++)for(int j=1;j<=v;j++)g[i][j]=min(g[i][j],g[i][p]+g[p][j]);
  64. if(m<2){
  65. double ans=0,tmp=0;
  66. for(int i=1;i<n;i++){
  67. ans+=(g[c[i]][c[i+1]]);
  68. }
  69. tmp=ans;
  70. if(m)
  71. for(int x=1;x<=n;x++){
  72. //cout<<x<<" :\n";
  73. int res=0;
  74. for(int i=1;i<n;i++){
  75. int a=c[i],b=c[i+1];
  76. if(i==x)a=d[x];
  77. if(i+1==x)b=d[x];
  78. res+=g[a][b];
  79.  
  80. }
  81. //cout<<res*k[x]+tmp*(1-k[x])<<endl;
  82. ans=min(ans,res*k[x]+tmp*(1-k[x]));
  83. }
  84. printf("%.2lf",(double)ans);
  85. }else if(n<=20&&m<=10){
  86. double ans=1e23;
  87. for(int i=0;i<(1<<n);i++){
  88. int p[30],q[33],cnt=0;
  89. for(int j=1;j<=n;j++)if(i&(1<<(j-1)))q[++cnt]=j;
  90. if(cnt<=m){
  91. //cerr<<"safe";
  92. memset(p,0,sizeof(p));
  93. double tmp=0;
  94. for(int j=0;j<(1<<cnt);j++){
  95. double prob=1,tmp2=0;
  96. for(int t=1;t<=cnt;t++){
  97. if(j&(1<<(t-1))){
  98. prob=prob*k[q[t]];
  99. p[q[t]]=1;
  100. }else {
  101. prob=prob*(1-k[q[t]]);
  102. p[q[t]]=0;
  103. }
  104. }
  105. /*printf("(%d,%d)\n",i,j);
  106. for(int t=1;t<=cnt;t++)cout<<q[t]<<"!!";cout<<endl;*/
  107. for(int t=1;t<n;t++){
  108. int a=c[t],b=c[t+1];
  109. if(p[t])a=d[t];
  110. if(p[t+1])b=d[t+1];
  111. tmp2+=g[a][b];
  112. }
  113. //cout<<tmp2<<endl;;
  114. tmp+=tmp2*prob;
  115. }
  116. //cout<<"---"<<tmp<<endl;
  117. ans=min(ans,tmp);
  118. }
  119. }//...
  120.  
  121. printf("%.2lf",(double)ans);
  122. }else{
  123. printf("%.2lf",(double)brutef());
  124. }
  125.  
  126. }

day2

t1

XBG

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<iostream>
  4. using namespace std;
  5. int t,k,n,m,c[2333][2333],s[2333][2333];
  6. int main(){
  7. freopen("problem.in","r",stdin);
  8. freopen("problem.out","w",stdout);
  9. scanf("%d%d",&t,&k);
  10. for(int i=0;i<=2000;i++)c[i][1]=i%k;
  11. for(int i=1;i<=2000;i++)
  12. for(int j=2;j<=i;j++)
  13. c[i][j]=(c[i-1][j]+c[i-1][j-1])%k;
  14. for(int i=1;i<=2000;i++)
  15. for(int j=1;j<=2000;j++){
  16. s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+(j<=i)*(!c[i][j]);
  17. }
  18. while(t--){
  19. scanf("%d %d",&n,&m);
  20. /*for(int i=1;i<=n;i++,puts(""))
  21. for(int j=1;j<=i;j++)printf("%d ",s[i][j]);
  22. */printf("%d\n",s[n][m]);
  23. }
  24. return 0;
  25. }

t2

拿三个队列,一个存x,一个存px,一个存x-px。

然后这三个队列是单调递减的,具体证明较简单。

  1. #include<queue>
  2. #include<cstdio>
  3. #include<iostream>
  4. #include<algorithm>
  5. using namespace std;
  6. int n,m,q,u,v,t;double p;
  7. int a[123456];
  8. int PQ[123456],_PQ,od[7123456];
  9. namespace solution{
  10. int x[7123456][2],y[7123456][2],z[7123456][2];
  11. int hx,hy,hz,tx,ty,tz;
  12.  
  13. void init(){hx=hy=hz=1;tx=n;ty=tz=0;}
  14. void debug(int tim){
  15. for(int i=hx;i<=n;i++)printf("%d ",x[i][0]+q*(tim-x[i][1]));
  16. printf("!");for(int i=hy;i<=ty;i++)printf("%d ",y[i][0]+q*(tim-y[i][1]));
  17. printf("!");for(int i=hz;i<=tz;i++)printf("%d ",z[i][0]+q*(tim-z[i][1]));
  18. printf("!");
  19. puts("");
  20. }
  21. //wo hui zuo d2t2 ei
  22. void getres(){//debug(m);
  23. for(int i=1;i<=n+m;i++){
  24. int c=-12345;int *I;
  25. if(hx<=n)if(x[hx][0]+q*(m-x[hx][1])>c)c=x[hx][0]+q*(m-x[hx][1]),I=&hx;
  26. if(hy<=ty)if(y[hy][0]+q*(m-y[hy][1])>c)c=y[hy][0]+q*(m-y[hy][1]),I=&hy;
  27. if(hz<=tz)if(z[hz][0]+q*(m-z[hz][1])>c)c=z[hz][0]+q*(m-z[hz][1]),I=&hz;
  28. ++*I;
  29. if(!(i%t))printf("%d ",c);
  30. }
  31. }
  32. int main(){
  33. sort(a+1,a+n+1,greater<int>());//nlogn
  34. for(int i=1;i<=n;i++)x[i][0]=a[i];
  35. p=u;p/=v;
  36. init();
  37. for(int i=1;i<=m;i++){
  38. int c=-12345;
  39. int *I;
  40. if(hx<=n)if(x[hx][0]+q*(i-1-x[hx][1])>c)c=x[hx][0]+q*(i-1-x[hx][1]),I=&hx;
  41. if(hy<=ty)if(y[hy][0]+q*(i-1-y[hy][1])>c)c=y[hy][0]+q*(i-1-y[hy][1]),I=&hy;
  42. if(hz<=tz)if(z[hz][0]+q*(i-1-z[hz][1])>c)c=z[hz][0]+q*(i-1-z[hz][1]),I=&hz;
  43. int A,B;
  44. A=p*c;
  45. B=c-A;
  46. //printf("cut %d into(%d,%d)\n",c,A,B);
  47. y[++ty][0]=A;
  48. z[++tz][0]=B;
  49. z[tz][1]=y[ty][1]=i;
  50. ++*I;
  51. od[i]=c;
  52. //cerr<<"h..="<<hx<<endl;
  53. //debug(i);
  54. }
  55. for(int i=t;i<=m;i+=t)printf("%d ",od[i]);puts("");
  56.  
  57. getres();
  58. return 0;
  59. }
  60. }
  61. int main(){
  62. freopen("earthworm.in","r",stdin);
  63. freopen("earthworm.out","w",stdout);
  64. //cerr<<sizeof(solution::x)*3;
  65. scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);
  66. for(int i=1;i<=n;i++)scanf("%d",a+i);
  67. if(n<=1000&&m<=1000){
  68. for(int i=1;i<=n;i++)PQ[i]=a[i];_PQ=n;
  69. for(int _t=1;_t<=m;_t++){
  70. int mx=1;
  71. for(int i=2;i<=_PQ;i++)if(PQ[i]>PQ[mx])mx=i;
  72. int x=PQ[mx];
  73. PQ[mx]=(int)u*1.0/v*x;
  74. PQ[++_PQ]=x-PQ[mx];
  75. //printf("cut %d into(%d,%d)\n",x,PQ[mx],PQ[_PQ]);
  76. for(int i=1;i<_PQ;i++)if(i!=mx)PQ[i]+=q;
  77. od[_t]=x;
  78. }
  79. for(int i=t;i<=m;i+=t)printf("%d ",od[i]);
  80. sort(PQ+1,PQ+n+m+1,greater<int>());
  81. puts("");
  82. for(int i=t;i<=n+m;i+=t)printf("%d ",PQ[i]);
  83. }else
  84. solution::main();
  85. return 0;
  86. }

t3

枚举两个点作抛物线,预处理能过什么点

状压(即或的值为2^n-1)

注意处理单点,分数未知

riio写错了

 

总结:d1t2 d2t3暴力写错了很伤

d2t2很像我之前写的QingdaoRegional的G

最后100+45+64+100+100+?未完待

Noip2016滚粗记QAQ的更多相关文章

  1. NOIP2016滚粗记

    想了好久还是决定要写... Day0 Day-5得感冒一直没好,连磕5天药丸. 早晨得知爸妈都要上班并不能送我到校的消息,于是计划10:30集合,定表8:45准备自己走去学校. 然后平常睡得有点晚,结 ...

  2. thusc2016游记&&滚粗记&&酱油记

    #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/w ...

  3. CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>

    挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...

  4. 2015 CTSC & APIO滚粗记

    o诶人太弱..... 记一发滚粗记以便治疗我的健忘症= = //文章会不定时修改,添加一些内容什么的...因此最好看一下刷新一下(因为有可能你正在看= =我正在写... 5.2 早上9点坐上长达11小 ...

  5. WC2019滚粗记

    什么?你问WC2019滚粗记在哪里? 抱歉,这篇文章鸽了. 原因? 引用神仙\(yyb\)的话. 恩,想了想还是更一点吧. Day 0 签到海星,我写了个大大的\(Cgod\)有没有人看见啊,然后被广 ...

  6. CSP2019滚粗记

    CSP2019滚粗记 从不拖更 Day -inf 考完月考才停课\kel,然后月考又被吊打了. Day -1 和左边的\({\text L}\color{red} {\text{ongge}}\)右边 ...

  7. 【FJ省队训练&&NOIP夏令营】酱油&&滚粗记

    FJOI2016省队训练滚粗记 2016.07.03~2016.07.06(Day1~5) 在学校期末考.因为才省选二试too young too simple爆蛋了所以下半个学期只能滚回去读文化课, ...

  8. HNOI2015滚粗记

    HNOI2015滚粗记 经过两天的苦战,艰难的HNOI终于结束了.感觉这次HNOI自己还是收获了许多. \(Day1\)打的很是艰难,题目一下就有种晕头转向的感觉.开场\(20min\)自己还在读题时 ...

  9. ZJOI2017 Day3 滚粗记

    私のZJOI Day3 2017-3-21 07:52:53 今天,考了人生当中的第一次省选(虽然只是普及组三等奖但仍然有幸能体会一下).据胡老师说,这就是来体验一下被大神虐--真的是这样,听课听不懂 ...

随机推荐

  1. Mina 组件介绍之 IoAcceptor 与 IoConnector

    在网络通信中,Socket通信的双方分为服务端与客户端,在Java NIO 的实现中采用Socket/ServerSocket, SocketChannel/ServerSocketChannel分别 ...

  2. Lavavel5.5源代码 - 并发数控制

    app('redis')->connection('default')->funnel('key000') // 每个资源最大锁定10秒自动过期,只有60个资源(并发),在3秒内获取不到锁 ...

  3. zabbix配置报警媒介-用户-动作-邮件脚本触发mailx邮件报警

    2018-09-16更新,新版本zabbix不需要使用脚本发送邮件,在zabbix web界面直接配置就可以 配置邮件参数,测试发送邮件 确认安装相关服务,centos7默认安装 [root@VM_1 ...

  4. python中的数据类型之元组和字典

    一.元组:俗称不可变的列表,又被称为只读列表.元组用小括号括起来,里面可以放任何数据类型的数据,查询可以,循环也可以,切片也可以,但就是不能修改. 注意:如果元组中只有一个元素,一定要加一个逗号,否则 ...

  5. python学习之常用模块

  6. 【SAPUI5】ODataを構成するもの

    はじめに SAPUI5でアプリケーションを作るにあたり.ODataは避けては通れないトピックです.結構広いテーマなので.5-7回くらいに分けて書きたいと思います.1回目はODataの概要について説明し ...

  7. 在Android studio中用gradle打 jar 包(Mac下)

    这两天公司要重构项目,以前的项目在eclipse上,准备迁移到Android studio上,需要对项目打包,于是我学习了Android studio中gradle打包的内容.我在公司用的Mac,在家 ...

  8. Plsql developer 怎么在打开时登陆配置oracel client?

    配置前 logon 这块是空白的,该怎么配置呢? 看下面 --> 安装完plsql 后 需要安装 oracle client, 这里不再赘述,请自行百度.下面将贴出如何使用 oracle cli ...

  9. LeetCode:26. Remove Duplicates from Sorted Array(Easy)

    1. 原题链接 https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/ 2. 题目要求 给定一个已 ...

  10. 维特比算法(Viterbi)及python实现样例

    维特比算法(Viterbi) 维特比算法 维特比算法shiyizhong 动态规划算法用于最可能产生观测时间序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔科夫模型中.术语“维特 ...