A - Choosing Capital for Treeland

CodeForces - 219D

题意:有一颗单向边的树,要选取一个结点作为首都。要求是这个结点到其它结点,总共需要翻转的路径数量最少(因为是单向边,翻转了才能到达另一个结点)。

做法:树形dp。

代码:待补。

B - Maximal Intersection

CodeForces - 1029C

题意:给出n个区间,然后你可以删除一个区间,问你剩下的区间的交集的最大长度是多少。

思路:首先我们得先知道n条线段公共的线段一定是(LMAX,RMIN) ,那我们可以先排序,然后枚举删除边。

代码:

  1. /*
  2. I have a dream!A AC deram!!
  3. orz orz orz orz orz orz orz orz orz orz orz
  4. orz orz orz orz orz orz orz orz orz orz orz
  5. orz orz orz orz orz orz orz orz orz orz orz
  6.  
  7. */
  8.  
  9. #include<iostream>
  10. #include<cstdio>
  11. #include<cstdlib>
  12. #include<cstring>
  13. #include<cmath>
  14. #include<string>
  15. #include<algorithm>
  16. #include<vector>
  17. #include<queue>
  18. #include<set>
  19. #include<stack>
  20. using namespace std;
  21. typedef long long ll;
  22. const int maxn = 1e4 + ;
  23. const int N = ;
  24. #define pa pair<int,int>
  25. inline int read()
  26. {
  27. int x = , f = ; char ch = getchar(); for (; !isdigit(ch); ch = getchar())if (ch == '-')f = -;
  28. for (; isdigit(ch); ch = getchar())x = x * + ch - ''; return x * f;
  29. }
  30. int l[],r[];
  31. int main()
  32. {
  33. multiset<int>a,b;
  34. int n;
  35. scanf("%d",&n);
  36. for(int i=;i<=n;i++)
  37. {
  38. scanf("%d%d",&l[i],&r[i]);
  39. a.insert(l[i]);
  40. b.insert(r[i]);
  41. }
  42. int ans=;
  43. for(int i=;i<=n;i++)
  44. {
  45. a.erase(a.find(l[i]));
  46. b.erase(b.find(r[i]));
  47. ans=max(ans,*b.begin()-*a.rbegin());
  48. a.insert(l[i]);
  49. b.insert(r[i]);
  50. }
  51. printf("%d\n",ans);
  52. return ;
  53. }

C - Tempter of the Bone

HDU - 1010

题意:一只小狗被骨头诱惑来到一个宫殿。但是每走一步后面的石头就会掉落,问是否能在T时刻内恰好到达D。

思路:DFS+剪枝。

代码:待补。

D - Pocket Cube

HDU - 5983

题意:给你一个2*2*2的魔方的图,问你是否能在1步以内还原,实现每面都相同。

思路:这个很考验几何思维,想不好就被题目的图给误解了。你拿一个立方体的物体出来就可以观察到翻转方案有六种。然后模拟暴力。

代码:

  1. /*
  2. I have a dream!A AC deram!!
  3. orz orz orz orz orz orz orz orz orz orz orz
  4. orz orz orz orz orz orz orz orz orz orz orz
  5. orz orz orz orz orz orz orz orz orz orz orz
  6.  
  7. */
  8.  
  9. #include<iostream>
  10. #include<cstdio>
  11. #include<cstdlib>
  12. #include<cstring>
  13. #include<cmath>
  14. #include<string>
  15. #include<algorithm>
  16. #include<vector>
  17. #include<queue>
  18. #include<set>
  19. #include<stack>
  20. using namespace std;
  21. typedef long long ll;
  22. const int maxn = 1e4 + ;
  23. const int N = ;
  24. #define pa pair<int,int>
  25. inline int read()
  26. {
  27. int x = , f = ; char ch = getchar(); for (; !isdigit(ch); ch = getchar())if (ch == '-')f = -;
  28. for (; isdigit(ch); ch = getchar())x = x * + ch - ''; return x * f;
  29. }
  30. int map[][],mapp[][];
  31.  
  32. bool same(int a, int b, int c, int d)
  33. {
  34. if (a == b && b == c && c == d)
  35. return true;
  36. else return false;
  37. }
  38.  
  39. int main()
  40. {
  41. int T = read();
  42. while (T--)
  43. {
  44. int flag = ;
  45. int a[][];
  46. int b[];
  47. int i, j;
  48. for (int i = ; i <= ; i++)
  49. {
  50. for (j = , b[i] = ; j <= ; j++)
  51. {
  52. scanf("%d", &a[i][j]);
  53. if (j >= )
  54. {
  55. if (a[i][j] != a[i][j - ])
  56. b[i] = ;
  57. }
  58. }
  59. }
  60. if (same(a[][], a[][], a[][], a[][])
  61. && same(a[][], a[][], a[][], a[][])
  62. && same(a[][], a[][], a[][], a[][])
  63. && same(a[][], a[][], a[][], a[][])
  64. && same(a[][], a[][], a[][], a[][])
  65. && same(a[][], a[][], a[][], a[][]))
  66. flag = ;
  67.  
  68. if (b[] && b[]
  69. && same(a[][], a[][], a[][], a[][])
  70. && same(a[][], a[][], a[][], a[][])
  71. && same(a[][], a[][], a[][], a[][])
  72. && same(a[][], a[][], a[][], a[][]))
  73. flag = ;
  74.  
  75. if (b[] && b[]
  76. && same(a[][], a[][], a[][], a[][])
  77. && same(a[][], a[][], a[][], a[][])
  78. && same(a[][], a[][], a[][], a[][])
  79. && same(a[][], a[][], a[][], a[][]))
  80. flag = ;
  81.  
  82. if (b[] && b[]
  83. && same(a[][], a[][], a[][], a[][])
  84. && same(a[][], a[][], a[][], a[][])
  85. && same(a[][], a[][], a[][], a[][])
  86. && same(a[][], a[][], a[][], a[][]))
  87. flag = ;
  88.  
  89. if (b[] && b[]
  90. && same(a[][], a[][], a[][], a[][])
  91. && same(a[][], a[][], a[][], a[][])
  92. && same(a[][], a[][], a[][], a[][])
  93. && same(a[][], a[][], a[][], a[][]))
  94. flag = ;
  95.  
  96. if (b[] && b[]
  97. && same(a[][], a[][], a[][], a[][])
  98. && same(a[][], a[][], a[][], a[][])
  99. && same(a[][], a[][], a[][], a[][])
  100. && same(a[][], a[][], a[][], a[][]))
  101. flag = ;
  102.  
  103. if (b[] && b[]
  104. && same(a[][], a[][], a[][], a[][])
  105. && same(a[][], a[][], a[][], a[][])
  106. && same(a[][], a[][], a[][], a[][])
  107. && same(a[][], a[][], a[][], a[][]))
  108. flag = ;
  109.  
  110. if (flag)
  111. printf("YES\n");
  112. else
  113. printf("NO\n");
  114. }
  115. return ;
  116. }

E - Reward

HDU - 2647

题意:一个人要给工人们发工资,每个人的起始工资为888.如果有一个人觉得自己比另外一个人高的话,就给他+1元(答案要求总工资最少),问最后发的钱最少为多少。如果出现了环或不能满足的情况,输出-1。

思路:就是拓扑排序。最关键的一步:add[map[u][i]] = max(add[u] + 1, add[map[u][i]])。

代码:

  1. /*
  2. I have a dream!A AC deram!!
  3. orz orz orz orz orz orz orz orz orz orz orz
  4. orz orz orz orz orz orz orz orz orz orz orz
  5. orz orz orz orz orz orz orz orz orz orz orz
  6.  
  7. */
  8.  
  9. #include<iostream>
  10. #include<cstdio>
  11. #include<cstdlib>
  12. #include<cstring>
  13. #include<cmath>
  14. #include<string>
  15. #include<algorithm>
  16. #include<vector>
  17. #include<queue>
  18. #include<set>
  19. #include<stack>
  20. using namespace std;
  21. typedef long long ll;
  22. const int maxn = 1e4 + ;
  23. const int N = ;
  24. #define pa pair<int,int>
  25. inline int read()
  26. {
  27. int x = , f = ; char ch = getchar(); for (; !isdigit(ch); ch = getchar())if (ch == '-')f = -;
  28. for (; isdigit(ch); ch = getchar())x = x * + ch - ''; return x * f;
  29. }
  30. int in[maxn], add[maxn];
  31. vector<int>map[maxn];
  32.  
  33. ll top_sort(int n)
  34. {
  35. queue<int>q;
  36. int cnt = ;
  37. while (!q.empty())
  38. q.pop();
  39. for (int i = ; i <= n; i++)
  40. if (in[i] == )
  41. q.push(i);
  42. int u;
  43. while (!q.empty())
  44. {
  45. u = q.front();
  46. q.pop();
  47. cnt++;
  48. for (int i = ; i < map[u].size(); i++)
  49. {
  50. in[map[u][i]]--;
  51. if (in[map[u][i]] == )
  52. {
  53. q.push(map[u][i]);
  54. add[map[u][i]] = max(add[u] + , add[map[u][i]]);
  55. }
  56. }
  57. }
  58. if (cnt != n)
  59. return -;
  60. ll ans=;
  61. for (int i = ; i <= n; i++)
  62. ans += add[i] + ;
  63. return ans;
  64. }
  65.  
  66. int main()
  67. {
  68. int n, m;
  69. while (~scanf("%d %d", &n, &m))
  70. {
  71. memset(in, , sizeof(in));
  72. memset(add, , sizeof(add));
  73. memset(map, , sizeof(map));
  74. for (int i = ; i < m; i++)
  75. {
  76. int a = read(), b = read();
  77. map[b].push_back(a);
  78. in[a]++;
  79. }
  80. printf("%lld\n", top_sort(n));
  81. }
  82. }

F - Rikka with Mutex

HDU - 6261

题意:给你一个只包含V和P的字符串,要求通过这一条字符串。V可以获得能量,P会消耗能量,能量是公共的,可以多个人去,获得多个能量,最后让一个人通过这条字符串即可。

思路:二分+贪心或者简单的贪心。

代码:待补。

2019 HZNU Winter Training Day 14 Comprehensive Training的更多相关文章

  1. 2019 HZNU Winter Training Day 15 Comprehensive Training

    A - True Liars 题意: 那么如果一个人说另一个人是好人,那么如果这个人是好人,说明 对方确实是好人,如果这个是坏人,说明这句话是假的,对方也是坏人. 如果一个人说另一个人是坏人,那么如果 ...

  2. 2019 HZNU Winter Training Day 13 Comprehensive Training

    A.Jongmah   CodeForces-1110D 题意:你在玩一个数字游戏,有一堆写在瓦片上的数字,希望你能组成最多的三元组(三个数字相同,或顺子). 这题用到的方法是动态规划.f[i][j] ...

  3. 2019 wannafly winter camp day 3

    2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...

  4. 2019 wannafly winter camp

    2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O ...

  5. 【Android Developers Training】 14. 序言:管理Activity生命周期

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  6. hdu 3047 Zjnu Stadium(加权并查集)2009 Multi-University Training Contest 14

    题意: 有一个运动场,运动场的坐席是环形的,有1~300共300列座位,每列按有无限个座位计算T_T. 输入: 有多组输入样例,每组样例首行包含两个正整数n, m.分别表示共有n个人,m次操作. 接下 ...

  7. 2019 wannafly winter camp day1-4代码库

    目录 day1 F div1 爬爬爬山 (最短路) B div2 吃豆豆 (dp) J div2 夺宝奇兵(暴力) J div1 夺宝奇兵 (权值线段树) C div1 拆拆拆数 E div1 流流流 ...

  8. 2019 CCPC-Wannafly Winter Camp Day1 (Div2, onsite)

    solve:4/11 补题:6/11 A 机器人 补题:zz 这是一道分类讨论的题目,有一个规律就是如果必须要从第一个区到第二个区,那么最多转区两次(1到2一次,2到1一次),然后分类讨论即可,只要细 ...

  9. 2019 CCPC-Wannafly Winter Camp Day2(Div2, onsite)

    solve 4/11 A Erase Numbers II Code:KK Thinking :KK 用ans表示当前最优答案,maxx表示遍历到的最大数字,一开始ans肯定等于a[ 1 ]+a[ 2 ...

随机推荐

  1. Activiti6系列(1)- 核心数据库表及字段注释说明

    前言 本文是根据<疯狂工作流讲义-Activiti6.0>一书中提取过来的,有兴趣的可以去当当网买这本书,讲的很不错,最后还有实战案例. 虽然是提取过来的,但完全靠手打梳理,觉得有用的小伙 ...

  2. Netty学习(四)-TCP粘包和拆包

    我们都知道TCP是基于字节流的传输协议.那么数据在通信层传播其实就像河水一样并没有明显的分界线,而数据具体表示什么意思什么地方有句号什么地方有分号这个对于TCP底层来说并不清楚.应用层向TCP层发送用 ...

  3. Thread、ThreadPool、Task、Parallel、Async和Await基本用法、区别以及弊端

    多线程的操作在程序中也是比较常见的,比如开启一个线程执行一些比较耗时的操作(IO操作),而主线程继续执行当前操作,不会造成主线程阻塞.线程又分为前台线程和后台线程,区别是:整个程序必须要运行完前台线程 ...

  4. JavaFx应用 星之小说下载器

    星之小说下载器 说明: 需要jdk环境 目前只支持铅笔小说网,后续添加更多书源,还有安卓版,敬请期待. 喜欢的话,不妨打赏一波! 软件交流QQ群:690380139 断点下载暂未实现,小说下载途中,一 ...

  5. .netcore持续集成测试篇之搭建内存服务器进行集成测试一

    系列目录 在web项目里,我们把每一层的代码的单元测试都通过并不代表程序能正常运行,因为这个过程缺失了http管道,很多时候我们还还需要把项目布在iis环境中或者在vs里启动iis express服务 ...

  6. Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol

    Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol 老套路,先晒图 图一:如题,在编译打包时遇到了如上错误,很明显这是一个依 ...

  7. Yii GridView Ajax 刷新

    Yii GridView  Ajax 刷新,当页面点击一个按钮时,刷新数据. 1.控制器 <?php class privController extends Controller{ publi ...

  8. HTTP2.0的多路复用和HTTP1.X中的长连接复用区别

    HTTP/2 多路复用 (Multiplexing)    多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息 HTTP1.1 在HTTP/1.1协议中,浏览器客户端在同一时间,针 ...

  9. Scrapy爬虫框架学习

    一.Scrapy框架简介 1. 下载页面 2. 解析 3. 并发 4. 深度 二.安装 linux下安装 pip3 install scrapy windows下安装 a.pip3 install w ...

  10. 记:使用vue全家桶 + vux组件库 打包成 dcloud 5+ app 开发过程中遇到的问题

    vue-cli 版本:2.9.6   webpack 版本:3.6.0 1. vue-cli 安装好之后,不是自动打开默认浏览器 在 config文件夹 ---> dev选项中,有个 autoO ...