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 ...
随机推荐
- 极力推荐一个简单好用的C++JSON库
极力推荐一个简单好用的C++JSON库CJsonObject,让使用json如使用C++原生的结构体那般方便,随心所欲.CJsonObject是个优秀的C++JSON库,也许会是你见过的最为简单易 ...
- 表单与v-model
基本用法 vue.js提供了v-model指令,用于在表单类元素上双向绑定数据,例如在输入框上使用,输入的内容会实时映射到绑定的数据上 example1:修改input框内容,message会实时渲染 ...
- c#小灶——注释和代码规范
为什么要写注释? 早上我写完了代码,我和我的朋友们都能看懂,到了晚上,我还能看懂,一周后,就只有上帝能看懂了…… 将来我们写的代码量是很大的,代码又不像我们自然语言这么好理解,可能过段时间我们就不认识 ...
- ibatis 核心原理解析!
关注下方公众号,可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料. 最近查找一个生产问题的原因,需要深入研究 ibatis 框架的源码.虽然最后证明问题的原因与 ibat ...
- Windows 下安装 Python + Django
Django是Python的一个Web开发框架,以下是介绍的是windows下的安装步骤, 作者的环境是Win10 ,Windows Server 也是一样的 以下是作者整理的步骤,也可以参考官方教程 ...
- 从零开发一款自己的小程序UI组件库(二)
写在前面:从零开发一款自己的小程序UI组件库(一) 上节我们讲到初始化组件库模板.模板文件概述.模板上传npm以及npm包文件下载至本地并运用到项目.这节我们继续,内容主要有基础UI组件库的搭建(bu ...
- (十八)c#Winform自定义控件-提示框
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- Mac 安装 homebrew 流程 以及 停在 Updating Homebrew等 常见错误解决方法
懒人操作顺序:S_01>>>S_02>>>S_03 首先这是homebrew的官网 https://brew.sh/index_zh-cn 安装方法是在终端中输入 ...
- 利用ShardingSphere-JDBC实现分库分表
利用ShardingSphere-JDBC实现分库分表 1. ShardingSphere概述 1.1 概述 业务发展到一定程度,分库分表是一种必然的要求,分库可以实现资源隔离,分表则可以降低单表数据 ...
- GIT和SVN教程
各种版本控制工具的简单比较 特性 CVS SVN GIT 并发修改 支持 支持 支持 并发提交 不支持 支持 支持 历史轨迹 不支持更名 支持更名 支持更名 分布式 不支持 不支持 支持 SVN SV ...