A-Evolution Game

题目大意:有$n$个不同的野兽,定义第$i$ 个野兽有 $i$ 个眼睛和 $h[i]$ 个角,你可以任意从中选择一个野兽进行进化,每次进化角数量必须增加,而且进化后要满足眼镜的变化量 $\triangle i \leq w$,求最多的进化次数。

题解:以$h$的值从大到小排序,$f[i]$表示从第i个野兽开始进化的最多次数。对于$1 \leq i \leq j$若满足条件则$f[j]=max \{  f[i]+1 \}$。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<algorithm>
  7. using namespace std;
  8.  
  9. int n,w,ans;
  10. int f[];
  11. struct hh
  12. {
  13. int eye,horn;
  14. }a[];
  15. bool cmp(hh a,hh b)
  16. {
  17. return a.horn>b.horn;
  18. }
  19. int main()
  20. {
  21. int i,j;;
  22. scanf("%d%d",&n,&w);
  23. for(i=;i<=n;i++)
  24. scanf("%d",&a[i].horn);
  25. for(i=;i<=n;i++)
  26. a[i].eye=i;
  27. sort(a+,a++n,cmp);
  28. for(i=;i<=n;i++)
  29. for(j=i+;j<=n;j++)//h[i]>h[j]
  30. if(a[i].horn>a[j].horn&&abs(a[i].eye-a[j].eye)<=w)
  31. f[j]=max(f[j],f[i]+);
  32. for(i=;i<=n;i++)
  33. ans=max(f[i],ans);
  34. printf("%d",ans);
  35. return ;
  36. }

D-Bus Stop

题目大意:给出$n$个房子的坐标,要建立公交车站使得每个房子离最近的车站不过10公里,求最少的车站数。

题解:从左往右贪心即可。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=3e6;
  4. int m,n;
  5. int a[N];
  6. int ans,lstop;
  7. int main()
  8. {
  9. scanf("%d",&m);
  10. while(m--)
  11. {
  12. scanf("%d",&n);
  13. for(int i=;i<=n;i++){
  14. scanf("%d",&a[i]);
  15. }
  16. lstop=a[]+;
  17. ans=;
  18. for(int i=;i<=n;i++){
  19. if(abs(a[i]-lstop)<=){
  20. ;
  21. }
  22. else{
  23. lstop=a[i]+;
  24. ans++;
  25. }
  26. }
  27. if(n==)ans=;
  28. if(n==)ans=;
  29. printf("%d\n",ans);
  30. }
  31. }

G-Communication

题目大意:求有向图强连通分量数。

题解:Floyed+并查集或者Tarjan。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e3;
  4. int m,n,c,ans,a,b;
  5. int f[N];
  6. int edge[N][N];
  7. int fnd(int x)
  8. {
  9. if(f[x]==x)return x;
  10. return f[x]=fnd(f[x]);
  11. }
  12. int main()
  13. {
  14. scanf("%d",&m);
  15. while(m--)
  16. {
  17. scanf("%d%d",&n,&c);
  18. memset(edge,,sizeof(edge));
  19. for(int i=;i<n;i++)
  20. f[i]=i;
  21. for(int i=;i<=c;i++){
  22. scanf("%d%d",&a,&b);
  23. edge[a][b]=;
  24. }
  25. for(int k=;k<n;k++)
  26. for(int i=;i<n;i++)
  27. for(int j=;j<n;j++){
  28. if(edge[i][k]&&edge[k][j])edge[i][j]=;
  29. }
  30. ans=;
  31. for(int i=;i<n-;i++)
  32. for(int j=i+;j<n;j++){
  33. if(edge[i][j]+edge[j][i]==){
  34. f[j]=fnd(i);
  35. }
  36. }
  37. for(int i=;i<n;i++){
  38. if(f[i]==i)ans++;
  39. }
  40. printf("%d\n",ans);
  41. }
  42. }

H-As rich as Crassus

题目大意:$x^3 \equiv A_i  \ \ (mod \ \  N_i) (i=3)$,求$x$。

题解:中国剩余定理

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<algorithm>
  7. using namespace std;
  8. int n,t;
  9. long long ans;
  10. long long b[],m[];
  11. long long exgcd(long long a,long long b,long long &x,long long &y){
  12. if(b==){x=,y=;return a;}
  13. long long d=exgcd(b,a%b,x,y);
  14. long long z=x;x=y,y=z-a/b*y;
  15. return d;
  16. }
  17. void print(long long x){
  18. if(!x) return;
  19. if(x) print(x/);
  20. putchar(x%+'');
  21. }
  22. int main()
  23. {
  24. int i;
  25. long long x,y,M,aa,bb,cc,d,tmp;
  26. bool flag;n=;
  27. scanf("%d",&t);
  28. while(t--)
  29. {
  30. ans=flag=;
  31. for(i=;i<=n;i++)
  32. scanf("%I64d",&m[i]);
  33. for(i=;i<=n;i++)
  34. scanf("%I64d",&b[i]);
  35. M=m[],ans=b[];
  36. for(i=;i<=n;i++)
  37. {
  38. aa=M,bb=m[i],cc=(b[i]-ans%bb+bb)%bb;
  39. x=,y=;
  40. d=exgcd(aa,bb,x,y);
  41. bb=bb/d;
  42. if(cc%d){flag=;break;}
  43. x=((x*cc/d)%bb+bb)%bb;
  44. ans+=M*x;M*=bb;
  45. ans=(ans%M+M)%M;
  46. }
  47. if(flag)puts("-1");
  48. else {
  49. if(!ans)puts("");
  50. else
  51. {
  52. tmp=pow(ans,1.0/3.0);
  53. if(tmp*tmp*tmp<ans) printf("%I64d\n",tmp+);
  54. else printf("%I64d",tmp);
  55. }
  56. }
  57. }
  58. return ;
  59. }
  60. close

J-Floating-Point Hazard

题目大意:给出L,R,求$\sum_{i=L}^{R}(\sqrt[3]{i+10^{-15}}-\sqrt[3]{i})$。

题解:微分

  1. #include <iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<algorithm>
  6. #include<cmath>
  7. using namespace std;
  8. typedef long long ll;
  9. int main()
  10. {
  11. #ifdef LOCAL
  12. freopen("in.txt","r",stdin);
  13. // freopen("out.txt","w",stdout);
  14. #endif // LOCAL
  15. int a,b;
  16. while(~scanf("%d%d",&a,&b)){
  17. if(!a||!b) break;
  18. double ans=;
  19. for(ll i=a;i<=b;i++){
  20. ans+=pow(i*i,-/3.0);
  21. }
  22. ans*=1.0/*(1e-);
  23. printf("%.5E\n",ans);
  24. }
  25. }

K-The Stream of Corning 2

题目大意:给出若干个数和存在的时间点,问某一时刻存在的数中的第k大。

题解:将一个操作的起始点和终止点拆开标记,按时间排序后,用树状数组+二分求动态第k大数。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<algorithm>
  7. using namespace std;
  8. int t,n,totp,totq,lim;
  9. struct hh
  10. {
  11. int opt,t,v,k,id;
  12. }p[],q[];
  13. int c[];
  14. int lowbit(int x)
  15. {
  16. return x&(-x);
  17. }
  18. void add(int pos,int v)
  19. {
  20. for(;pos<=lim;pos+=lowbit(pos))
  21. c[pos]+=v;
  22. }
  23. int query(int pos)
  24. {
  25. int ret=;
  26. for(;pos;pos-=lowbit(pos))
  27. ret+=c[pos];
  28. return ret;
  29. }
  30. bool cmp(hh a,hh b)
  31. {
  32. return a.t<b.t;
  33. }
  34. bool cmp2(hh a,hh b)
  35. {
  36. return a.id<b.id;
  37. }
  38. int solve(int k)
  39. {
  40. int l,r,mid,ret,n;
  41. l=;r=lim;
  42. ret=lim;
  43. if(query(lim)<k) return -;
  44. while(l<=r)
  45. {
  46. mid=l+r>>;
  47. if(query(mid)>=k)
  48. {
  49. r=mid-;
  50. ret=min(ret,mid);
  51. }
  52. else l=mid+;
  53. }
  54. return ret;
  55. }
  56. int main()
  57. {
  58. int T,i,j,a,b,z,prep,opt;
  59. scanf("%d",&t);
  60. for(T=;T<=t;T++)
  61. {
  62. scanf("%d",&n);
  63. totp=totq=;
  64. memset(p,,sizeof(p));
  65. memset(q,,sizeof(q));
  66. memset(c,,sizeof(c));
  67. for(i=;i<=n;i++)
  68. {
  69. scanf("%d%d%d",&opt,&a,&b);
  70. lim=max(lim,b);
  71. if(opt==)
  72. {
  73. scanf("%d",&z);
  74. p[++totp].opt=;
  75. p[totp].v=b;
  76. p[totp].t=a;
  77.  
  78. p[++totp].opt=-;
  79. p[totp].v=b;
  80. p[totp].t=z;
  81. }
  82. else
  83. {
  84. q[++totq].t=a;
  85. q[totq].k=b;
  86. q[totq].id=i;
  87. }
  88. }
  89. sort(p+,p++totp,cmp);
  90. sort(q+,q++totq,cmp);
  91. prep=;
  92. for(i=;i<=totq;i++)
  93. {
  94. while(p[prep].t<q[i].t&&prep<=totp)
  95. {
  96. add(p[prep].v,p[prep].opt);
  97. prep++;
  98. }
  99. q[i].v=solve(q[i].k);
  100. }
  101. sort(q+,q++totq,cmp2);
  102. printf("Case %d:\n",T);
  103. for(i=;i<=totq;i++)
  104. printf("%d\n",q[i].v);
  105. }
  106. return ;
  107. }

L-Largest Allowed Area

题目大意:求一个最大的子矩阵,要求子矩阵的和为0或1。

题解:单调队列。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<cmath>
  7. #include<algorithm>
  8. using namespace std;
  9.  
  10. int t,n,m,ans;
  11. int s[][],a[][];
  12. char c;
  13.  
  14. int main()
  15. {
  16. int i,j;
  17. scanf("%d",&t);
  18. while(t--)
  19. {
  20. scanf("%d%d",&n,&m);
  21. memset(s,,sizeof(s));
  22. memset(a,,sizeof(a));
  23. for(i=;i<=n;i++)
  24. for(j=;j<=m;j++)
  25. {
  26. do{c=getchar();}while(c!=''&&c!='');
  27. s[i][j]=c-''+s[i-][j]+s[i][j-]-s[i-][j-];
  28. }
  29. for(i=,ans=;i<=n;i++)
  30. for(j=;j<=m;j++)
  31. {
  32. a[i][j]=a[i-][j-]-(a[i-][j-]>=);
  33. while(i+a[i][j]<=n&&j+a[i][j]<=m&&s[i+a[i][j]][j+a[i][j]]-s[i-][j+a[i][j]]-s[i+a[i][j]][j-]+s[i-][j-]<=)
  34. a[i][j]++;
  35. ans=max(ans,a[i][j]);
  36. }
  37. printf("%d\n",ans);
  38. }
  39. return ;
  40. }

【GYM102091】2018-2019 ACM-ICPC, Asia Nakhon Pathom Regional Contest的更多相关文章

  1. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  2. 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)

    Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...

  3. 2019-2020 ICPC Asia Hong Kong Regional Contest

    题解: https://files.cnblogs.com/files/clrs97/19HKEditorial-V1.zip Code:(Part) A. Axis of Symmetry #inc ...

  4. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game

    G: 要你去才Paul的年龄,Paul的年龄在1~n之间,你每猜一个Paul会告诉你,你猜的这个数和他年龄的gcd,问在最坏情况下最少要猜多少次. 题解: 什么是最坏情况,我们直到如果他的年龄是1的话 ...

  5. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)E Eve

    E: 模拟题,一开始有n个人(有男有女),对于子女来说线粒体DNA是继承母亲的.然后有m个操作(按时间顺序),一种就是给了父亲,母亲的ID,生了一个孩子(编号从n+1开始往下):还有一个就是 -x , ...

  6. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)K Kingdom Roadmap

    K: 给你n个点以及n-1的条边, 问你最少要加多少条边,使得每两个点割去一条联通的边,还可以使的这两个点连通. 有个一个结论,最少添加的边数为(叶子节点数+1)/ 2. 我们可以只考虑叶子节点数应该 ...

  7. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)B Binary Encoding

    B: 现在有一种新的2进制表示法,要你求出0~m-1的每个数的表示. 规则如下:n 是满足 m<=2n 最小数. 而0~m-1的数只能够用n-1个位和n个位来表示. 对于n个位表示的数来说不能有 ...

  8. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area

    A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...

  9. 2019-2020 ICPC Asia Hong Kong Regional Contest J. Junior Mathematician 题解(数位dp)

    题目链接 题目大意 要你在[l,r]中找到有多少个数满足\(x\equiv f(x)(mod\; m)\) \(f(x)=\sum_{i=1}^{k-1} \sum_{j=i+1}^{k}d(x,i) ...

随机推荐

  1. [Offer收割]编程练习赛104

    题目过于简单,没啥好说的,但是拿了个第一感觉很爽,记录一下 题目1 : 小Hi与魔法 排序,从1开始递增 #include <bits/stdc++.h> using namespace ...

  2. jQuery纵向分类下拉菜单导航

    在线演示 本地下载

  3. JavaScript中的this关键字的几种用法

    JS 里的 this 在 function 内部被创建 指向调用时所在函数所绑定的对象(拗口) this 不能被赋值,但可以被 call/apply 改变 1. this 和构造函数 function ...

  4. iOS尽量不要在viewWillDisappear:方法中移除通知

    http://www.cocoachina.com/ios/20151214/14596.html 在了解控制器的生命周期之后,我们都知道viewWillAppear:方法是在控制器的view将要显示 ...

  5. 第三十二讲:UML类图(下)

    一个类能够看到另外一个类的属性和方法,那么这两个类是关联的.

  6. weixin 微信开放平台 微信公众平台

    官网地址入口 微信小程序 https://mp.weixin.qq.com/ appid and openid not match 1.appid :是公众号的ID. 2.openid:关注公众号生成 ...

  7. KiCad EDA 5.1.4 发布了

    KiCad EDA 5.1.4 发布了 KiCad EDA 自豪地宣布 KiCad 5 系列最新稳定版发布.5.1.4 稳定版修复了来自 5.1.2 和 5.1.3 版本的关键错误修复和其他一些小改进 ...

  8. 笔记:在 Windows 10 WSL Ubuntu 18.04 安装 Odoo12 (2019-06-09)

    笔记:在 Windows 10 WSL Ubuntu 18.04 安装 Odoo12 原因 为了和服务器一样的运行环境. 使用 Ubuntu 运行 Odoo 运行更快. 方便使用 Windows 10 ...

  9. oracle函数的分类

    v  单行函数:对每一行输入值进行计算,得到相应的计算结果,返回给用户,也就是说,每行作为一个输入参数,经过函数计算得到每行的计算结果. 比如select length(ename) from emp ...

  10. 预警| Confluence 高危漏洞被大规模利用,阿里云WAF接入即可防护,支持免费应急服务

    2019年4月4日,阿里云安全应急响应中心监测到Confluence 官方发布安全更新指出,Widget Connector 存在服务端模板注入漏洞,攻击者能利用此漏洞实现目录穿越遍历甚至远程命令执行 ...