2019 HZNU Winter Training Day 14 Comprehensive Training
A - Choosing Capital for Treeland
CodeForces - 219D
题意:有一颗单向边的树,要选取一个结点作为首都。要求是这个结点到其它结点,总共需要翻转的路径数量最少(因为是单向边,翻转了才能到达另一个结点)。
做法:树形dp。
代码:待补。
B - Maximal Intersection
CodeForces - 1029C
题意:给出n个区间,然后你可以删除一个区间,问你剩下的区间的交集的最大长度是多少。
思路:首先我们得先知道n条线段公共的线段一定是(LMAX,RMIN) ,那我们可以先排序,然后枚举删除边。
代码:
- /*
- I have a dream!A AC deram!!
- orz orz orz orz orz orz orz orz orz orz orz
- orz orz orz orz orz orz orz orz orz orz orz
- orz orz orz orz orz orz orz orz orz orz orz
- */
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<cmath>
- #include<string>
- #include<algorithm>
- #include<vector>
- #include<queue>
- #include<set>
- #include<stack>
- using namespace std;
- typedef long long ll;
- const int maxn = 1e4 + ;
- const int N = ;
- #define pa pair<int,int>
- inline int read()
- {
- int x = , f = ; char ch = getchar(); for (; !isdigit(ch); ch = getchar())if (ch == '-')f = -;
- for (; isdigit(ch); ch = getchar())x = x * + ch - ''; return x * f;
- }
- int l[],r[];
- int main()
- {
- multiset<int>a,b;
- int n;
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- scanf("%d%d",&l[i],&r[i]);
- a.insert(l[i]);
- b.insert(r[i]);
- }
- int ans=;
- for(int i=;i<=n;i++)
- {
- a.erase(a.find(l[i]));
- b.erase(b.find(r[i]));
- ans=max(ans,*b.begin()-*a.rbegin());
- a.insert(l[i]);
- b.insert(r[i]);
- }
- printf("%d\n",ans);
- return ;
- }
C - Tempter of the Bone
HDU - 1010
题意:一只小狗被骨头诱惑来到一个宫殿。但是每走一步后面的石头就会掉落,问是否能在T时刻内恰好到达D。
思路:DFS+剪枝。
代码:待补。
D - Pocket Cube
HDU - 5983
题意:给你一个2*2*2的魔方的图,问你是否能在1步以内还原,实现每面都相同。
思路:这个很考验几何思维,想不好就被题目的图给误解了。你拿一个立方体的物体出来就可以观察到翻转方案有六种。然后模拟暴力。
代码:
- /*
- I have a dream!A AC deram!!
- orz orz orz orz orz orz orz orz orz orz orz
- orz orz orz orz orz orz orz orz orz orz orz
- orz orz orz orz orz orz orz orz orz orz orz
- */
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<cmath>
- #include<string>
- #include<algorithm>
- #include<vector>
- #include<queue>
- #include<set>
- #include<stack>
- using namespace std;
- typedef long long ll;
- const int maxn = 1e4 + ;
- const int N = ;
- #define pa pair<int,int>
- inline int read()
- {
- int x = , f = ; char ch = getchar(); for (; !isdigit(ch); ch = getchar())if (ch == '-')f = -;
- for (; isdigit(ch); ch = getchar())x = x * + ch - ''; return x * f;
- }
- int map[][],mapp[][];
- bool same(int a, int b, int c, int d)
- {
- if (a == b && b == c && c == d)
- return true;
- else return false;
- }
- int main()
- {
- int T = read();
- while (T--)
- {
- int flag = ;
- int a[][];
- int b[];
- int i, j;
- for (int i = ; i <= ; i++)
- {
- for (j = , b[i] = ; j <= ; j++)
- {
- scanf("%d", &a[i][j]);
- if (j >= )
- {
- if (a[i][j] != a[i][j - ])
- b[i] = ;
- }
- }
- }
- if (same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][]))
- flag = ;
- if (b[] && b[]
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][]))
- flag = ;
- if (b[] && b[]
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][]))
- flag = ;
- if (b[] && b[]
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][]))
- flag = ;
- if (b[] && b[]
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][]))
- flag = ;
- if (b[] && b[]
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][]))
- flag = ;
- if (b[] && b[]
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][])
- && same(a[][], a[][], a[][], a[][]))
- flag = ;
- if (flag)
- printf("YES\n");
- else
- printf("NO\n");
- }
- return ;
- }
E - Reward
HDU - 2647
题意:一个人要给工人们发工资,每个人的起始工资为888.如果有一个人觉得自己比另外一个人高的话,就给他+1元(答案要求总工资最少),问最后发的钱最少为多少。如果出现了环或不能满足的情况,输出-1。
思路:就是拓扑排序。最关键的一步:add[map[u][i]] = max(add[u] + 1, add[map[u][i]])。
代码:
- /*
- I have a dream!A AC deram!!
- orz orz orz orz orz orz orz orz orz orz orz
- orz orz orz orz orz orz orz orz orz orz orz
- orz orz orz orz orz orz orz orz orz orz orz
- */
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<cmath>
- #include<string>
- #include<algorithm>
- #include<vector>
- #include<queue>
- #include<set>
- #include<stack>
- using namespace std;
- typedef long long ll;
- const int maxn = 1e4 + ;
- const int N = ;
- #define pa pair<int,int>
- inline int read()
- {
- int x = , f = ; char ch = getchar(); for (; !isdigit(ch); ch = getchar())if (ch == '-')f = -;
- for (; isdigit(ch); ch = getchar())x = x * + ch - ''; return x * f;
- }
- int in[maxn], add[maxn];
- vector<int>map[maxn];
- ll top_sort(int n)
- {
- queue<int>q;
- int cnt = ;
- while (!q.empty())
- q.pop();
- for (int i = ; i <= n; i++)
- if (in[i] == )
- q.push(i);
- int u;
- while (!q.empty())
- {
- u = q.front();
- q.pop();
- cnt++;
- for (int i = ; i < map[u].size(); i++)
- {
- in[map[u][i]]--;
- if (in[map[u][i]] == )
- {
- q.push(map[u][i]);
- add[map[u][i]] = max(add[u] + , add[map[u][i]]);
- }
- }
- }
- if (cnt != n)
- return -;
- ll ans=;
- for (int i = ; i <= n; i++)
- ans += add[i] + ;
- return ans;
- }
- int main()
- {
- int n, m;
- while (~scanf("%d %d", &n, &m))
- {
- memset(in, , sizeof(in));
- memset(add, , sizeof(add));
- memset(map, , sizeof(map));
- for (int i = ; i < m; i++)
- {
- int a = read(), b = read();
- map[b].push_back(a);
- in[a]++;
- }
- printf("%lld\n", top_sort(n));
- }
- }
F - Rikka with Mutex
HDU - 6261
题意:给你一个只包含V和P的字符串,要求通过这一条字符串。V可以获得能量,P会消耗能量,能量是公共的,可以多个人去,获得多个能量,最后让一个人通过这条字符串即可。
思路:二分+贪心或者简单的贪心。
代码:待补。
2019 HZNU Winter Training Day 14 Comprehensive Training的更多相关文章
- 2019 HZNU Winter Training Day 15 Comprehensive Training
A - True Liars 题意: 那么如果一个人说另一个人是好人,那么如果这个人是好人,说明 对方确实是好人,如果这个是坏人,说明这句话是假的,对方也是坏人. 如果一个人说另一个人是坏人,那么如果 ...
- 2019 HZNU Winter Training Day 13 Comprehensive Training
A.Jongmah CodeForces-1110D 题意:你在玩一个数字游戏,有一堆写在瓦片上的数字,希望你能组成最多的三元组(三个数字相同,或顺子). 这题用到的方法是动态规划.f[i][j] ...
- 2019 wannafly winter camp day 3
2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...
- 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 ...
- 【Android Developers Training】 14. 序言:管理Activity生命周期
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- hdu 3047 Zjnu Stadium(加权并查集)2009 Multi-University Training Contest 14
题意: 有一个运动场,运动场的坐席是环形的,有1~300共300列座位,每列按有无限个座位计算T_T. 输入: 有多组输入样例,每组样例首行包含两个正整数n, m.分别表示共有n个人,m次操作. 接下 ...
- 2019 wannafly winter camp day1-4代码库
目录 day1 F div1 爬爬爬山 (最短路) B div2 吃豆豆 (dp) J div2 夺宝奇兵(暴力) J div1 夺宝奇兵 (权值线段树) C div1 拆拆拆数 E div1 流流流 ...
- 2019 CCPC-Wannafly Winter Camp Day1 (Div2, onsite)
solve:4/11 补题:6/11 A 机器人 补题:zz 这是一道分类讨论的题目,有一个规律就是如果必须要从第一个区到第二个区,那么最多转区两次(1到2一次,2到1一次),然后分类讨论即可,只要细 ...
- 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 ...
随机推荐
- Activiti6系列(1)- 核心数据库表及字段注释说明
前言 本文是根据<疯狂工作流讲义-Activiti6.0>一书中提取过来的,有兴趣的可以去当当网买这本书,讲的很不错,最后还有实战案例. 虽然是提取过来的,但完全靠手打梳理,觉得有用的小伙 ...
- Netty学习(四)-TCP粘包和拆包
我们都知道TCP是基于字节流的传输协议.那么数据在通信层传播其实就像河水一样并没有明显的分界线,而数据具体表示什么意思什么地方有句号什么地方有分号这个对于TCP底层来说并不清楚.应用层向TCP层发送用 ...
- Thread、ThreadPool、Task、Parallel、Async和Await基本用法、区别以及弊端
多线程的操作在程序中也是比较常见的,比如开启一个线程执行一些比较耗时的操作(IO操作),而主线程继续执行当前操作,不会造成主线程阻塞.线程又分为前台线程和后台线程,区别是:整个程序必须要运行完前台线程 ...
- JavaFx应用 星之小说下载器
星之小说下载器 说明: 需要jdk环境 目前只支持铅笔小说网,后续添加更多书源,还有安卓版,敬请期待. 喜欢的话,不妨打赏一波! 软件交流QQ群:690380139 断点下载暂未实现,小说下载途中,一 ...
- .netcore持续集成测试篇之搭建内存服务器进行集成测试一
系列目录 在web项目里,我们把每一层的代码的单元测试都通过并不代表程序能正常运行,因为这个过程缺失了http管道,很多时候我们还还需要把项目布在iis环境中或者在vs里启动iis express服务 ...
- Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol
Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol 老套路,先晒图 图一:如题,在编译打包时遇到了如上错误,很明显这是一个依 ...
- Yii GridView Ajax 刷新
Yii GridView Ajax 刷新,当页面点击一个按钮时,刷新数据. 1.控制器 <?php class privController extends Controller{ publi ...
- HTTP2.0的多路复用和HTTP1.X中的长连接复用区别
HTTP/2 多路复用 (Multiplexing) 多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息 HTTP1.1 在HTTP/1.1协议中,浏览器客户端在同一时间,针 ...
- Scrapy爬虫框架学习
一.Scrapy框架简介 1. 下载页面 2. 解析 3. 并发 4. 深度 二.安装 linux下安装 pip3 install scrapy windows下安装 a.pip3 install w ...
- 记:使用vue全家桶 + vux组件库 打包成 dcloud 5+ app 开发过程中遇到的问题
vue-cli 版本:2.9.6 webpack 版本:3.6.0 1. vue-cli 安装好之后,不是自动打开默认浏览器 在 config文件夹 ---> dev选项中,有个 autoO ...