CS round--36
https://csacademy.com/contest/round-36/summary/
C题是一个贪心,最坏情况是,一开始肯定是每一对袜子都抽一个,然后就需要N个袜子了。后面的情况就是相同的了。
就是,整个数组变成了1、1、1、1、1、1、1、1、1这样,之后任意拿一个袜子,都会增加1pair,然后1-->0,很明显第二次拿应该在刚才那个地方拿,使得0-->1,这样pair数不增加,然后又回到1、1、1、1、1、...这样的状态。所以以后就是在同一种颜色里面操作就好了。
对于本来是奇数的情况,全部拿完是最坏的情况,因为有一个袜子匹配不了。
对于本来是偶数的情况,拿奇数个是最坏的情况,因为这样也有一个袜子匹配不了。
然后直接贪心。
D题是一个树的dfs
用一个数组表示当前的集合,cnt表示集合的大小。
每个节点都有insert, erase操作,dfs的时候,回溯的时候反向更新就好(就是本来insert的变成erase)
但是要注意它时候有这个操作,就是本来是erase的,然而当前集合压根就没这个元素,这是有一个没用的操作。
回溯的时候不要重新insert就好
#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;
const int maxn = 1e5 + ;
struct Edge {
int u, v, tonext;
}e[maxn * ];
int first[maxn], num;
struct Node {
int val;
bool isUsed;
Node(int _val, int _isUsed) {
val = _val, isUsed = _isUsed;
}
};
vector<Node> vc[maxn];
void addEdge(int u, int v) {
e[num].u = u, e[num].v = v, e[num].tonext = first[u];
first[u] = num++;
}
int ans[maxn];
bool in[maxn];
int cnt;
void dfs(int cur) {
for (int i = ; i < vc[cur].size(); ++i) {
int val = vc[cur][i].val;
if (val > ) {
if (in[val]) continue;
in[val] = true;
cnt++;
vc[cur][i].isUsed = true;
} else {
val = -val;
if (!in[val]) continue;
in[val] = false;
cnt--;
vc[cur][i].isUsed = true;
}
}
ans[cur] = cnt;
for (int i = first[cur]; ~i; i = e[i].tonext) {
dfs(e[i].v);
}
for (int i = ; i < vc[cur].size(); ++i) {
if (vc[cur][i].isUsed == false) continue;
int val = vc[cur][i].val;
if (val > ) {
assert(in[val] == true);
in[val] = false;
cnt--;
} else {
val = -val;
in[val] = true;
cnt++;
}
}
}
void work() {
memset(first, -, sizeof first);
int n;
cin >> n;
for (int i = ; i <= n - ; ++i) {
int u;
cin >> u;
addEdge(u, i + );
}
for (int i = ; i <= n; ++i) {
int k;
cin >> k;
while (k--) {
int val;
cin >> val;
vc[i].push_back(Node(val, false));
}
}
dfs();
for (int i = ; i <= n; ++i) {
cout << ans[i] << endl;
}
} int main() {
#ifdef local
freopen("data.txt", "r", stdin);
// freopen("data.txt", "w", stdout);
#endif
// IOS;
work();
return ;
}
CS round--36的更多相关文章
- 【CS Round #36 (Div. 2 only) A】Bicycle Rental
[题目链接]:https://csacademy.com/contest/round-36/task/bicycle-rental/ [题意] 让你从n辆车中选一辆车; 每一辆车有3个属性 1.到达车 ...
- 【codeforces】【比赛题解】#915 Educational CF Round 36
虽然最近打了很多场CF,也涨了很多分,但是好久没写CF的题解了. 前几次刚刚紫名的CF,太伤感情了,一下子就掉下来了,不懂你们Div.1. 珂学的那场我只做了第一题……悲伤. 这次的Education ...
- BestCoder Round #36 (hdu5198)Strange Class(水题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Strange Class Time Limit: 2000/1000 MS (J ...
- CS Round#53 C Histogram Partition
题意:给定一个数组A,以及一个初始值全为0的空数组B,每次可以对数组B的任意一个区间内的所有数+x,问至少几次操作能把B数组变成A数组 NOIP原题(积木大赛)升级版,话说CS怎么那么多跟NOIP原题 ...
- 【CS Round #43 A】Expected Dice
[链接]https://csacademy.com/contest/round-43/task/expected-dice/ [题意] 大水题 [题解] 把36种可能的结果都存下来. 然后把重复出现的 ...
- BestCoder Round #36 [B] Gunner
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5199 先对树的高度排序,然后对每次射击高度二分查找即可,打过之后数目变为0. #include< ...
- BestCoder Round #36 (hdu5200)Strange Class(离线)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Trees Time Limit: 2000/1000 MS (Java/Othe ...
- BestCoder Round #36 (hdu5199)Gunner(水题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Gunner Time Limit: 8000/4000 MS (Java/Oth ...
- Cs Round#56 D Find Path Union
题意:有一棵如下的完全二叉树,求所有给定结点到根节点的路径的并有多少条边. 一开始联想到线段树,发现结点的排布很像线段树的标号.于是模仿线段树敲了一下,交上去发现3个点MLE了... 无心优化,跑去看 ...
- Cs Round#54 E Late Edges
题意:给定一个无向图,你从结点1开始走,每经过一条边需要1的时间,每条边都有一个开放时间,只有当目前所用的时间大于等于开放时间时,这条边才可以被经过.每一单位时间你都必须经过一条边,问最快什么时候可以 ...
随机推荐
- listen and translation exercise 51
You are supposed to be having fun now. I have to hand in my biology paper tomorrow. Listen, you litt ...
- 001-Bootstrap栅格系统
1 安装和基本使用 外文官网 中文官网 可以正常下载使用 有三个文件夹, 分别是css, fonts, js bootstrap/ ├── css/ │ ├── bootstrap.css │ ├── ...
- MySQL-计算当月重新激活客户_20161013
13号的草稿 12号的明天补充更新,最近太忙了. 客户留存率是衡量客户价值经常用的指标,可以反映客户的活跃程度,在互联网企业,尤其是现在手机端流量已经超过PC端流量,在安卓和IOS设备上在线时长的数据 ...
- POJ2887(块状链表)
Big String Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 6346 Accepted: 1525 Descr ...
- 用mapreduce实现从hbase导出到hdfs,实现一个工具类,能够支持任意表 任意列 任意路径导出,并且支持表头
分析: 1.由于是任意列 任意表 任意路径,我们很容易想到是参数传入,参数传入后怎么去获得参数,根据我们以往的经验就是通过args[]来获取,但是在mapper或者是reducer中,我们不能直接将参 ...
- NancyFX 第二章 Rest框架
正如你看到的,Nancy有两个主要用途. 其中第一项是作为一种通用的基于 REST 框架,可替代 ASP.NET Web API 或其他Rest工具包. 默认情况下,Nancy提供一流的路由和内容协商 ...
- centos6.5安装sublime Text3破解版
安装后的效果图: 在csdn上找到了一个破解版. http://download.csdn.net/download/phpscott2/5356561 安装后,能够运行,但每次打开都提示没有安装py ...
- 第3章 编写ROS程序-2
1.发布者程序 在本节中,我们将看到如何发送随机生成的速度指令到一个turtlesim海龟,使它漫无目的地巡游.这个程序的源文件称为pubvel,这个程序展示了从代码中发布消息涉及的所有要素. 其代码 ...
- FZU - 2109 Mountain Number 数位dp
Mountain Number One integer number x is called "Mountain Number" if: (1) x>0 and x is a ...
- sqlserver的语句和mysql语句
感谢原创 sqlserver和mysql基本语句的对比 http://blog.csdn.net/kk185800961/article/details/47044751 sqlserver中常见的语 ...