比赛链接:传送门

Gym 101775A Chat Group(签到:待补)

Gym 101775B Scapegoat(待补)

Gym 101775C Traffic Light(贪心+思维)

思路:

需要证明两个点:

  ① 所有的N+1个S都是必须要走的,并且可以适当安排使得红灯只用等最长的一个。

  ② 上面这样的安排的答案是S0+S1+…+SN+max(Bi),而答案不可能比这个小,因为总有一种走法可以等到最长的那个红绿灯,如果其他的红绿灯也要等的话就比上面的方法大了。

  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int MAX_N = 1e3 + ;
  5.  
  6. double S[MAX_N];
  7. double A[MAX_N], B[MAX_N];
  8.  
  9. int main()
  10. {
  11. int T;
  12. cin >> T;
  13. for (int kase = ; kase <= T; kase++) {
  14. int N;
  15. cin >> N;
  16. for (int i = ; i <= N; i++) {
  17. scanf("%lf", S+i);
  18. }
  19. double _max = -;
  20. for (int i = ; i <= N; i++) {
  21. scanf("%lf%lf", A+i, B+i);
  22. _max = max(_max, B[i]);
  23. }
  24. for (int i = ; i <= N; i++) {
  25. _max += S[i];
  26. }
  27. printf("Case #%d: %.6lf\n", kase, _max);
  28. }
  29. return ;
  30. }

Gym 101775J Straight Master(差分)

好久没见过差分了,早就把这种方法忘掉了。。。比赛的时候企图用贪心+松弛标记强行搓,结果一直WA。

思路:(下面的差分都指与前一个相邻的数的差)

  大于3的任意长度都可以由3、4、5的长度组成,所以长度大于3的子串都可以构成顺子。因此到第i个位置为止之前的所有正的差分都可以用于更新第i+3个位置及其之后的位置的负差分,如:

  0 1 2 3 4 4 4 1

  第4个位置为止正差分的和为4,第 4 + 3 = 7 个位置的差分为-3,则剩余的差分和sum为1。O(n)遍历维护差分和sum即可。

  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5. const int MAX_N = 2e5 + ;
  6.  
  7. int N;
  8. ll a[MAX_N];
  9. ll k[MAX_N];
  10. ll dis[MAX_N];
  11.  
  12. bool solve()
  13. {
  14. int ind = ;
  15. if (dis[] < || dis[] < )
  16. return false;
  17. ll sum = ;
  18. for (int i = ; i <= N+; i++){
  19. sum += dis[i];
  20. int j = i+;
  21. if (j > N+)
  22. break;
  23. if (dis[j] < ) {
  24. sum += dis[j];
  25. dis[j] = ;
  26. }
  27. if (sum < )
  28. break;
  29. }
  30. if (sum != )
  31. return false;
  32. return true;
  33. }
  34.  
  35. int main()
  36. {
  37. int T;
  38. cin >> T;
  39. for (int kase = ; kase <= T; kase++) {
  40. cin >> N;
  41. a[] = ;
  42. for (int i = ; i <= N; i++) {
  43. scanf("%lld", a+i);
  44. k[i] = ;
  45. dis[i] = a[i] - a[i-];
  46. }
  47. dis[N+] = - a[N];
  48. bool ans = solve();
  49. printf("Case #%d: ", kase);
  50. if (ans)
  51. puts("Yes");
  52. else
  53. puts("No");
  54. }
  55. return ;
  56. }
  57. /*
  58. 10
  59. 5
  60. 3 5 5 2 4
  61. 5
  62. 3 5 5 2 2
  63. */

Gym 101775K Downgrade(签到:简单模拟)

思路:

按题意模拟即可。要注意N是109,所以要判断一下状态是否会继续更新。

  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5. const int MAX_A = 1e5 + ;
  6.  
  7. ll sum[MAX_A], L[MAX_A];
  8.  
  9. int main()
  10. {
  11. int T;
  12. cin >> T;
  13. for (int kase = ; kase <= T; kase++) {
  14. ll A, B, N;
  15. cin >> A >> B >> N;
  16. sum[] = ;
  17. for (int i = ; i <= A; i++) {
  18. scanf("%lld", &L[i]);
  19. sum[i] = sum[i-] + L[i];
  20. }
  21. ll ansa = A, ansb = B;
  22. ll nxta, nxtb;
  23. while (N--) {
  24. int ind = lower_bound(sum+, sum+A+, ansa) - sum;
  25. nxtb = ansa - sum[ind-];
  26. nxta = ind;
  27. if (nxta == ansa && nxtb == ansb)
  28. break;
  29. ansa = nxta;
  30. ansb = nxtb;
  31. }
  32. printf("Case #%d: %lld-%lld\n",kase, ansa, ansb);
  33. }
  34. return ;
  35. }
  36. /*
  37. 3
  38. 3 2 2
  39. 2 2 2
  40. 3 1 2
  41. 1 1 1
  42. 3 1 1000000000
  43. 1 1 1
  44. */

Gym 101775L SOS(博弈+思维)

思路:

  博弈有两种题,思维题、SG函数题。不管是哪种,上来先打个表。。。其他的打完了表再说。。。打表发现N为大于5的所有奇数都是Panda,N为大于14的所有偶数都是Sheep,其他的为Draw。

  然后是证明:只要构造了S _ _ S的局面,然后跟对手一起把其他的空位填满,下一个填字符的人就必输了。根据N奇偶性,填满空位后面临S _ _ S的局面的人是不同的。所以有下面两种情况:

  ① N为奇数的时候:先手Panda要尽可能构造S _ _ S的局面,而Sheep要尽量避免被构造出S _ _ S的局面。当N = 7时,Panda第一次可以在Sheep的干扰下成功构造S _ _ S的局面:

  Panda: _ _ _ S _ _ _

  Sheep: _ _ _ S _ _ O

  Panda: S _ _ S _ _ O

  不管Sheep放在哪边,Panda都可以在另一边构造S _ _ S的局面。

  ② N为偶数的时候Panda要尽可能避免被Sheep构造出这样的局面,这时候就轮到Sheep来构造S _ _ S的局面了。由①可以发现,当剩下了7个空位时,可以把S放在中间,就能在Panda的干扰下构造S _ _ S的局面。但是有一点需要注意:就是N = 14时:

  Panda: _ _ _ _ _ _ O _ _ _ _ _ _ _

  Sheep: _ _ _ _ _ _ O _ _ _ S _ _ _

  Panda: _ _ _ _ _ _ O _ _ _ S _ _ O

  Sheep: _ _ _ _ _ _ O S _ _ S _ _ O

  Panda: _ _ _ _ _ S O S _ _ S _ _ O

  Game Over.

  Sheep放第二个S的时候如果是在O的旁边,那就崩盘了。所以N=14的时候Panda还是能反制Sheep的,但是当N = 16时Panda就无还手之力了:

  Panda: _ _ _ _ _ _ _ O _ _ _ _ _ _ _ _

  Sheep: _ _ _ _ _ _ _ O _ _ _ _ S _ _ _

  Panda: _ _ _ _ _ _ _ O _ _ _ _ S _ _ O

  Sheep: _ _ _ _ _ _ _ O _ S _ _ S _ _ O

  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int MAX_N = + ;
  5.  
  6. int main()
  7. {
  8. int T;
  9. cin >> T;
  10. int kase = ;
  11. while (T--) {
  12. int N;
  13. cin >> N;
  14. printf("Case #%d: ", kase++);
  15. if (N > && N % )
  16. puts("Panda");
  17. else if (N < )
  18. puts("Draw");
  19. else
  20. puts("Sheep");
  21. }
  22. return ;
  23. }

Gym 101775M World Cup(签到:待补)

2017 ACM-ICPC EC-Final ShangHai 东亚洲大陆-上海的更多相关文章

  1. 2017 ACM/ICPC Asia Regional Shenyang Online spfa+最长路

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  2. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  3. 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest

    2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest A - Arranging Wine 题目描述:有\(R\)个红箱和\(W\)个白箱,将这 ...

  4. ACM ICPC China final G Pandaria

    目录 ACM ICPC China final G Pandaria ACM ICPC China final G Pandaria 题意:给一张\(n\)个点\(m\)条边的无向图,\(c[i]\) ...

  5. 2017 ACM/ICPC Shenyang Online SPFA+无向图最长路

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  6. 2017 ACM/ICPC Asia Regional Qingdao Online

    Apple Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submi ...

  7. HDU - 6215 2017 ACM/ICPC Asia Regional Qingdao Online J - Brute Force Sorting

    Brute Force Sorting Time Limit: 1 Sec  Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...

  8. 2020 ICPC EC Final西安现场赛游记

    也不知道从何说起,也不知道会说些什么,最想表达的就是很累很累. 从第一天去的时候满怀希望,没什么感觉甚至还有一些兴奋.到后来一直在赶路,感觉很疲惫,热身赛的时候觉得马马虎虎,导致热身赛被咕.然后教练就 ...

  9. 2014 ACM/ICPC Asia Regional Shanghai Online

    Tree http://acm.hdu.edu.cn/showproblem.php?pid=5044 树链剖分,区间更新的时候要用on的左++右--的标记方法,要手动扩栈,用c++交,综合以上的条件 ...

随机推荐

  1. 主流Linux发行版简介

    发行版 包格式 所属厂商 发布年份 最新版本 说明 RHEL RPM RedHat 2004 7.3 RedHat Linux9.0后的企业方向,系统可以免费下载安装但无法使用官方yum源 Fedor ...

  2. vue 跳外链

    var host = window.location.host;var protocal = window.location.protocolwindow.location.href = protoc ...

  3. MakeFile中export的使用

    在shell中,可以使用export修改当前进程的环境变量. 例如:export PATH=.:$PATH 将当前路径加入可执行文件查找路径(PATH)中,这样你就不要敲“./excutable” 来 ...

  4. Win10系列:VC++ XML文件解析

    XML文件按照元素标记来存储数据,通过遍历这些元素标记可以得到XML文件中所保存的数据.在C++/CX的类库中并未定义用于解析XML文件的类,但C++提供了能解析XML文件的框架和类库,如msxml4 ...

  5. linux初始化宏__init, __exit

    我们在内核中经常遇到初始化函数是这样定义的:static int __init init_func(); ,与普通函数相比,定义中多了__init.那么,__init是什么意思呢?还有与其匹配的__e ...

  6. java的小程序在html中的运行测试

    java的小程序在html中的运行测试,打开vs2012,以网站模式打开,生成,调用iis临时服务器运行.

  7. linux:NFS

    1.简介 2.安装 安装分为服务端和客户端 [1]我们先拿一台机做服务端 yum install nfs-utils rpcbind -y 然后我们查查看安装没有,查询一个包是否被安装# rpm -q ...

  8. Docker Kubernetes(K8s)简介

    入职了新公司,使用了Docker和K8s,需要有一个基础的了解,对网络上相关信息进行了简单总结. 一Docker 1简介: Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就 ...

  9. activiti 插件安装,以及初始化配置

    1.安装插件 2.添加pom 3.配置activiti.cfg.xml 4.绘制业务流程图 MyProcess.bpmn 5.加载activiti数据表 6.创建流程 1.安装eclipse acti ...

  10. 牛客多校第四场 G Maximum Mode

    链接:https://www.nowcoder.com/acm/contest/142/G来源:牛客网 The mode of an integer sequence is the value tha ...