A. An Olympian Math Problem

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e5+;
  25.  
  26. int main()
  27. {
  28. int t;
  29. ll n;
  30. scanf("%d",&t);
  31. while (t--)
  32. {
  33. scanf("%lld",&n);
  34. printf("%lld\n",n-);
  35. }
  36. return ;
  37. }

B. The writing on the wall

与 https://leetcode.com/problems/maximal-rectangle/description/ 这道题很像

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. const ll mod=1e9+;
  5. const int maxn=1e5+;
  6. const int maxm=1e2+;
  7.  
  8. int a[maxn][maxm],c[maxn][maxm];
  9. int qx[maxm],qy[maxm];
  10.  
  11. int main()
  12. {
  13. ll sum=;
  14. int t,T,n,m,g,x,y,i,j,k;
  15. bool vis;
  16. scanf("%d",&t);
  17. for (T=;T<=t;T++)
  18. {
  19. memset(a,,sizeof(a));
  20. scanf("%d%d%d",&n,&m,&g);
  21. while (g--)
  22. {
  23. scanf("%d%d",&x,&y);
  24. a[x][y]=;
  25. }
  26. for (j=;j<=m;j++)
  27. for (i=;i<=n;i++)
  28. c[i][j]=(a[i][j]==)?:c[i-][j]+;
  29. sum=;
  30. for (i=;i<=n;i++)
  31. {
  32. ///以a[i][j]作为右下方
  33. g=;
  34. for (j=;j<=m;j++)
  35. {
  36. if (g== || c[i][j]>qx[g])
  37. vis=;
  38. else
  39. vis=;
  40. sum+=c[i][j];
  41. qy[g+]=j;
  42.  
  43. while (qx[g]>c[i][j])
  44. sum+=1ll*(qy[g+]-qy[g])*c[i][j],g--;
  45. k=g;
  46. while (k)
  47. sum+=1ll*(qy[k+]-qy[k])*qx[k],k--;
  48. if (g== || qx[g]!=c[i][j])
  49. g++;
  50. if (vis)
  51. qy[g]=j;
  52. qx[g]=c[i][j];
  53. }
  54. }
  55. printf("Case #%d: %lld\n",T,sum);
  56. }
  57. return ;
  58. }
  59. /*
  60. 100
  61. 3 3 3
  62. 1 1
  63. 1 2
  64. 2 1
  65.  
  66. 3 3 4
  67. 1 1
  68. 1 2
  69. 2 1
  70. 2 2
  71.  
  72. 2 3 0
  73.  
  74. 100000 100 0
  75. */

C. GDY

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=2e2+;
  25. const int maxm=2e4;
  26.  
  27. int s[maxm],a[maxn][maxm],g[maxn];
  28. int value[]={,,,,,,,,,,,,,};
  29.  
  30. int cmp(int x,int y)
  31. {
  32. return value[x]>value[y];
  33. }
  34.  
  35. int main()
  36. {
  37. int t,T,n,m,num,i,j,sum;
  38. int x,y,z;
  39. scanf("%d",&t);
  40. for (T=;T<=t;T++)
  41. {
  42. memset(g,,sizeof(g));
  43.  
  44. scanf("%d%d",&n,&m);
  45. for (i=;i<m;i++)
  46. scanf("%d",&s[i]);
  47. num=;
  48. for (i=;i<n;i++)
  49. {
  50. for (j=;j<;j++)
  51. {
  52. if (num==m)
  53. break;
  54. a[i][j]=s[num++];
  55. }
  56. sort(a[i],a[i]+j,cmp);
  57. g[i]=j;
  58. }
  59.  
  60. z=a[][g[]-];//previous number
  61. g[]--;
  62. y=;//has y persons
  63. x=;//pos
  64. while ()
  65. {
  66. for (i=g[x]-;i>=;i--)
  67. if (value[z]+==value[a[x][i]] || (a[x][i]== && z!=))
  68. break;
  69.  
  70. if (i!=-)
  71. {
  72. z=a[x][i];
  73. a[x][i]=;
  74. sort(a[x],a[x]+g[x],cmp);
  75. g[x]--;
  76. if (g[x]==)
  77. break;
  78. y=;
  79. }
  80. else if (y!=n-)
  81. y++;
  82. else
  83. {
  84. x=(x+)%n;
  85. for (i=x;;i=(i+)%n)
  86. {
  87. if (num==m)
  88. break;
  89. else
  90. {
  91. a[i][g[i]++]=s[num++];
  92. sort(a[i],a[i]+g[i],cmp);
  93. }
  94. if (i==(x-+n)%n)
  95. break;
  96. }
  97.  
  98. z=a[x][g[x]-];
  99. g[x]--;
  100. if (g[x]==)
  101. break;
  102. y=;
  103. }
  104.  
  105. x=(x+)%n;
  106. }
  107. printf("Case #%d:\n",T);
  108. for (i=;i<n;i++)
  109. if (i==x)
  110. printf("Winner\n");
  111. else
  112. {
  113. sum=;
  114. for (j=;j<g[i];j++)
  115. sum+=a[i][j];
  116. printf("%d\n",sum);
  117. }
  118. }
  119. return ;
  120. }
  121. /*
  122. 10
  123. 2 6
  124. 3 5 7 9 11 4
  125.  
  126. 3 20
  127. 2 2 2 2 2 2 2 2 2 2
  128. 2 2 2 2 2 2 2 2 2 2
  129.  
  130. 3 19
  131. 2 2 2 2 2 2 2 2 2 2
  132. 2 2 2 2 2 2 2 2 2
  133.  
  134. 3 20
  135. 3 2 2 2 2 2 2 2 2 2 2
  136. 2 2 2 2 2 2 2 2 2
  137.  
  138. 2 10
  139. 3 4 5 6 7 2 3 4 5 6
  140.  
  141. 3 15
  142. 3 4 5 6 7 12 12 12 12 12 13 13 13 13 13
  143.  
  144. 3 11
  145. 1 2 3 4 5 6 7 8 9 10 11
  146.  
  147. 3 13
  148. 1 2 3 4 5 6 7 8 9 10 11 12 13
  149.  
  150. 1
  151. 3 17
  152. 1 2 3 4 5 6 7 8 9 10 11 12 13 12 11 10 9
  153.  
  154. */

E. AC Challenge

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf -1e18
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e5+;
  25.  
  26. ll f[<<];
  27.  
  28. struct node
  29. {
  30. ll value;
  31. int pos,t;
  32. };
  33.  
  34. struct cmp1
  35. {
  36. bool operator() (node a,node b)
  37. {
  38. return a.value>b.value;
  39. }
  40. };
  41.  
  42. //priority_queue<node>st;
  43. priority_queue<node,vector<node>,cmp1>st;
  44. int er[],a[],b[],v[];
  45.  
  46. int main()
  47. {
  48. int n,m,s,i,j,value,pos,t;
  49. ll r=,rr;
  50. for (i=;i<;i++)
  51. er[i]=(<<i);
  52.  
  53. scanf("%d",&n);
  54. for (i=;i<(<<n);i++)
  55. f[i]=inf;
  56.  
  57. for (i=;i<n;i++)
  58. {
  59. scanf("%d%d%d",&a[i],&b[i],&m);
  60. v[i]=;
  61. while (m--)
  62. {
  63. scanf("%d",&s);
  64. v[i]+=(er[s-]);
  65. }
  66. if (v[i]==)
  67. {
  68. f[er[i]]=a[i]+b[i];
  69. st.push({a[i]+b[i],er[i],});
  70. r=max(r,(ll)a[i]+b[i]);
  71. }
  72. }
  73.  
  74. while (!st.empty())
  75. {
  76. value=st.top().value;
  77. pos=st.top().pos;
  78. t=st.top().t;
  79. st.pop();
  80. for (i=;i<n;i++)
  81. if ((pos & er[i])== && (pos & v[i])==v[i] && value+1ll*t*a[i]+b[i]>f[pos|er[i]])
  82. {
  83. rr=value+1ll*t*a[i]+b[i];
  84. f[pos|er[i]]=rr;
  85. r=max(r,rr);
  86. st.push({rr,pos|er[i],t+});
  87. }
  88. }
  89. printf("%lld",r);
  90. return ;
  91. }
  92. /*
  93. 3
  94. 1 2 0
  95. 1 5 0
  96. 8 1 0
  97. */

G. Lpl and Energy-saving Lamps

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e18
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e5+;
  25.  
  26. struct node
  27. {
  28. int x,y;
  29. }f[maxn],r[maxn];
  30.  
  31. int tag[maxn<<],a[maxn],x,y;
  32.  
  33. int cmp(node a,node b)
  34. {
  35. return a.x<b.x;
  36. }
  37.  
  38. void build(int index,int l,int r)
  39. {
  40. if (l==r)
  41. scanf("%d",&tag[index]);
  42. else
  43. {
  44. int m=(l+r)>>;
  45. build(index<<,l,m);
  46. build(index<<|,m+,r);
  47. tag[index]=min(tag[index<<],tag[index<<|]);
  48. }
  49. }
  50.  
  51. int query(int index,int l,int r,int v)
  52. {
  53. if (l==r)
  54. {
  55. if (tag[index]>v)
  56. return ;
  57.  
  58. x++;
  59. y-=tag[index];
  60. tag[index]=inf;
  61. return l;
  62. }
  63. else
  64. {
  65. int m=(l+r)>>,z;
  66. if (tag[index<<]<=v)
  67. z=query(index<<,l,m,v);
  68.  
  69. else
  70. z=query(index<<|,m+,r,v);
  71. tag[index]=min(tag[index<<],tag[index<<|]);
  72. return z;
  73. }
  74. }
  75.  
  76. int main()
  77. {
  78. int n,m,q,Q,d,index,i,j;
  79. scanf("%d%d",&n,&m);
  80. build(,,n);
  81.  
  82. scanf("%d",&q);
  83. for (Q=;Q<=q;Q++)
  84. {
  85. scanf("%d",&d);
  86. f[Q].x=d;
  87. f[Q].y=Q;
  88. }
  89. sort(f+,f+q+,cmp);
  90.  
  91. index=;
  92. x=;
  93. y=;
  94. for (i=;i<=f[q].x;i++)
  95. {
  96. y+=m;
  97. j=;
  98. while (j)
  99. j=query(,,n,y);
  100.  
  101. while (f[index].x==i)
  102. {
  103. r[f[index].y]={x,y};
  104. index++;
  105. }
  106. }
  107.  
  108. for (i=;i<=q;i++)
  109. printf("%d %d\n",r[i].x,r[i].y);
  110. return ;
  111. }

J. Sum

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=2e7+;
  25.  
  26. int zhi[maxn],f[maxn];
  27. bool vis[maxn],v[maxn];
  28.  
  29. int main()
  30. {
  31. int t,i,j,k,x=,y=,value=2e7;
  32. ll n,sum;
  33. memset(vis,,sizeof(vis));
  34. memset(v,,sizeof(v));
  35. for (i=;i<=value;i++)
  36. {
  37. if (!vis[i])
  38. {
  39. x++;
  40. zhi[x]=i;
  41. }
  42. for (j=;j<=x;j++)
  43. {
  44. k=i*zhi[j];
  45. if (k>value)
  46. break;
  47. vis[k]=;
  48. v[k]=v[i];
  49. if (i%zhi[j]==)
  50. {
  51. v[k]=;
  52. break;
  53. }
  54. }
  55. }
  56. for (i=;i<=value;i++)
  57. if (!v[i])
  58. {
  59. y++;
  60. f[y]=i;
  61. }
  62.  
  63. // for (i=1;i<=100;i++)
  64. // printf("%d ",f[i]);
  65.  
  66. scanf("%d",&t);
  67. f[]=;
  68. while (t--)
  69. {
  70. scanf("%lld",&n);
  71. sum=;
  72. j=y;
  73. for (i=;i<=y;i++)
  74. {
  75. while (1ll*f[i]*f[j]>n)
  76. j--;
  77. sum+=j;
  78. }
  79. printf("%lld\n",sum);
  80. }
  81. return ;
  82. }

L. Magical Girl Haze

  1. /*
  2. 图问题:
  3. spfa容易被卡时间复杂度
  4.  
  5. 而dijkstra是贪心,不会被卡
  6. */
  7. #include <cstdio>
  8. #include <cstdlib>
  9. #include <cmath>
  10. #include <cstring>
  11. #include <time.h>
  12. #include <string>
  13. #include <set>
  14. #include <map>
  15. #include <list>
  16. #include <stack>
  17. #include <queue>
  18. #include <vector>
  19. #include <bitset>
  20. #include <ext/rope>
  21. #include <algorithm>
  22. #include <iostream>
  23. using namespace std;
  24. #define ll long long
  25. #define minv 1e-6
  26. #define inf 1e18
  27. #define pi 3.1415926536
  28. #define nl 2.7182818284
  29. const ll mod=1e9+;//
  30. const int maxn=1e5+;
  31.  
  32. struct rec
  33. {
  34. int d,len;
  35. rec *to;
  36. }*e[maxn];
  37.  
  38. struct node
  39. {
  40. ll dist;
  41. int k,d;
  42. };
  43.  
  44. struct cmp1
  45. {
  46. bool operator() (node a,node b)
  47. {
  48. if (a.dist==b.dist)
  49. return a.k>b.k;
  50. else
  51. return a.dist>b.dist;
  52. }
  53. };
  54.  
  55. priority_queue<node,vector<node>,cmp1>st;
  56.  
  57. ll f[maxn][];
  58.  
  59. int main()
  60. {
  61. rec *p;
  62. int t,n,m,k,i,j,d,kk,dd,x,y,z;
  63. ll dist,r;
  64. scanf("%d",&t);
  65. while (t--)
  66. {
  67. scanf("%d%d%d",&n,&m,&k);
  68. for (i=;i<=n;i++)
  69. e[i]=NULL;
  70. while (m--)
  71. {
  72. scanf("%d%d%d",&x,&y,&z);
  73. p=(rec*) malloc (sizeof(rec));
  74. p->d=y;
  75. p->len=z;
  76. p->to=e[x];
  77. e[x]=p;
  78. }
  79. for (i=;i<=n;i++)
  80. for (j=;j<=k;j++)
  81. f[i][j]=inf;
  82. for (j=;j<=k;j++)
  83. {
  84. f[][j]=;
  85. st.push({,j,});
  86. }
  87. //f[i][j]作为一个状态,100000*10
  88. while (!st.empty())
  89. {
  90. dist=st.top().dist;
  91. d=st.top().d;
  92. kk=st.top().k;
  93. st.pop();
  94. p=e[d];
  95. while (p)
  96. {
  97. dd=p->d;
  98. if (f[dd][kk]>dist+p->len)
  99. {
  100. f[dd][kk]=dist+p->len;
  101. st.push({f[dd][kk],kk,dd});
  102. }
  103. if (kk!=k && f[dd][kk+]>dist)
  104. {
  105. f[dd][kk+]=dist;
  106. st.push({f[dd][kk+],kk+,dd});
  107. }
  108. p=p->to;
  109. }
  110. }
  111. r=inf;
  112. for (j=;j<=k;j++)
  113. r=min(r,f[n][j]);
  114. printf("%lld\n",r);
  115. }
  116. return ;
  117. }

2018 ACM 网络选拔赛 南京赛区的更多相关文章

  1. 2018 ACM 网络选拔赛 青岛赛区

    一些题目的代码被网站吞了…… Problem B. Red Black Tree http://acm.zju.edu.cn/onlinejudge/searchProblem.do?contestI ...

  2. 2018 ACM 网络选拔赛 北京赛区

    A Saving Tang Monk II #include <bits/stdc++.h> using namespace std; ; struct node { int x,y,z, ...

  3. 2018 ACM 网络选拔赛 徐州赛区

    A. Hard to prepare #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  4. 2018 ACM 网络选拔赛 焦作赛区

    A. Magic Mirror #include <cstdio> #include <cstdlib> #include <cmath> #include < ...

  5. 2018 ACM 网络选拔赛 沈阳赛区

    B. Call of Accepted #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  6. ACM-ICPC 2018 南京赛区网络预赛 J.sum

    A square-free integer is an integer which is indivisible by any square number except 11. For example ...

  7. ACM-ICPC 2018 南京赛区网络预赛 E题

    ACM-ICPC 2018 南京赛区网络预赛 E题 题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest wi ...

  8. ACM-ICPC 2018 南京赛区网络预赛B

    题目链接:https://nanti.jisuanke.com/t/30991 Feeling hungry, a cute hamster decides to order some take-aw ...

  9. 计蒜客 30999.Sum-筛无平方因数的数 (ACM-ICPC 2018 南京赛区网络预赛 J)

    J. Sum 26.87% 1000ms 512000K   A square-free integer is an integer which is indivisible by any squar ...

随机推荐

  1. MySQL高可用架构-MHA环境部署记录

    一.MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司) ...

  2. 团队作业 week 14

    0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新.最稳定版本的软件编译出 ...

  3. linux及安全第五周总结

    给MenuOS增加time和time-asm命令 中间过程已省略了,我们所做的只是将menu更新 具体命令如下 rm menu -rf 强制删除 git clone http://github.com ...

  4. Linux课题实践四——ELF文件格式分析

    2.4   ELF文件格式分析 20135318 刘浩晨 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目 ...

  5. 网络:Xen理解

    Xen是由剑桥大学计算机实验室开发的一个开源项目.是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个客户操作系统(Guest OS). 一.Xen虚拟化类型 ...

  6. Github知识小结

    软件:计算机运行所需要的各种程序和数据的总成,包括操作系统,汇编语言,编译,程序,数据库,文字编辑和维护使用手册等. 软件的特性:(1)软件产品的主要生产是脑力劳动,还没有摆脱手工开发方式(2)软件是 ...

  7. net license tool, EasyLicense !

    net license tool, EasyLicense ! 开源 .net license tool, EasyLicense !   介绍: 过去我常常像是否有一个帮助授权的软件,它可以非常简单 ...

  8. 安装wamp提示You dont't have permission to accesson on this server的解决方案

    展示一下安装好的效果图 首先找到安装目录下的路径[wamp\bin\apache\Apache2.2.21\conf\] § 找到httpd.conf,用记事本打开httpd.conf,然后将 1. ...

  9. 面象对象设计原则之三:里氏替换原则(The Liskov Substitution Principle,LSP)

    里氏代换原则由2008年图灵奖得主.美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出.其严格表述如下:如果对每一个类型为S的 ...

  10. [安全]appscan 使用代理抓取其他客户端的请求

    自己安全测试技能很低, 上级给的安全测试的任务给了自动化组的同事来做, 自己之前使用appscan的时候 只知道使用appscan的内置浏览器测试抓取请求 今天与自动化美女同事沟通发现有一个代理的功能 ...