2015 ACM/ICPC Asia Regional Hefei Online
1001 Monitor the Alpacas
两边离散化。暴力扫C就过了。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 1000010
bool vis1[maxn],vis2[maxn];
int Hash[maxn],h[][maxn];
int tt[],num[],c1[maxn],c2[maxn];
int sz[][maxn]; struct node
{
int to,pre;
} edge[][maxn]; void add(int op,int from,int to)
{
tt[op]++;
edge[op][tt[op]].pre=h[op][from];
edge[op][tt[op]].to=to;
h[op][from]=tt[op];
} int id(int op,int x)
{
return lower_bound(Hash,Hash+num[op],x)-Hash;
} int main(void)
{
int T; cin>>T;
for(int kase=;kase<=T;kase++)
{
memset(tt,,sizeof(tt));
memset(h,,sizeof(h));
memset(sz,,sizeof(sz));
memset(Hash,,sizeof(Hash));
int n; scanf("%d",&n);
for(int i=;i<n;i++) scanf("%d%d",c1+i,c2+i);
for(int i=;i<n;i++) Hash[i]=c1[i];
sort(Hash,Hash+n);
num[]=unique(Hash,Hash+n)-Hash;
for(int i=;i<n;i++)
{
add(,c1[i]=id(,c1[i]),i);
sz[][c1[i]]++;
}
for(int i=;i<n;i++) Hash[i]=c2[i];
sort(Hash,Hash+n);
num[]=unique(Hash,Hash+n)-Hash;
for(int i=;i<n;i++)
{
add(,c2[i]=id(,c2[i]),i);
sz[][c2[i]]++;
}
int S=,M=,O=;
memset(vis1,,sizeof(vis1));
memset(vis2,,sizeof(vis2));
for(int i=;i<num[];i++)
{
if(!sz[][i]) continue;
int ok=,tot=,cnt=;
for(int j=h[][i];j;j=edge[][j].pre)
{
int cur=c2[edge[][j].to];
if(vis1[cur]) {ok=;break;}
if(!vis2[cur])
{
cnt++;
tot+=sz[][cur];
vis2[cur]=;
}
}
if(sz[][i]!=tot) ok=;
if(ok)
{
if(cnt==) O++;
else S++;
}
for(int j=h[][i];j;j=edge[][j].pre) vis1[c2[edge[][j].to]]=;
}
memset(vis1,,sizeof(vis1));
memset(vis2,,sizeof(vis2));
for(int i=;i<num[];i++)
{
if(!sz[][i]) continue;
int ok=,tot=,cnt=;
for(int j=h[][i];j;j=edge[][j].pre)
{
int cur=c1[edge[][j].to];
if(vis1[cur]) {ok=;break;}
if(!vis2[cur])
{
cnt++;
tot+=sz[][cur];
vis2[cur]=;
}
}
if(ok&&sz[][i]==tot&&cnt>) M++;
for(int j=h[][i];j;j=edge[][j].pre) vis1[c1[edge[][j].to]]=;
}
printf("Case #%d: %d %d %d\n",kase,S,M,O);
}
return ;
}
Aguin
1005 Shape
1006 Removed Interval
1007 Simple Matrix
1008 The Next
1009 Find a path
1010 Queue
2015 ACM/ICPC Asia Regional Hefei Online的更多相关文章
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...
- 【线段树】HDU 5493 Queue (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意: N个人,每个人有一个唯一的高度h,还有一个排名r,表示它前面或后面比它高的人的个数 ...
- 【动态规划】HDU 5492 Find a path (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5492 题目大意: 一个N*M的矩阵,一个人从(1,1)走到(N,M),每次只能向下或向右走.求(N+ ...
- 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5491 题目大意: 一个数D(0<=D<231),求比D大的第一个满足:二进制下1个个数在 ...
- hdu 5492 Find a path(dp+少量数学)2015 ACM/ICPC Asia Regional Hefei Online
题意: 给出一个n*m的地图,要求从左上角(0, 0)走到右下角(n-1, m-1). 地图中每个格子中有一个值.然后根据这些值求出一个最小值. 这个最小值要这么求—— 这是我们从起点走到终点的路径, ...
- HDU - 5493 Queue 2015 ACM/ICPC Asia Regional Hefei Online(线段树)
按身高排序,每个人前面最高的人数有上限,如果超出上限说明impossible, 每次考虑最小的人,把他放在在当前的从左往右第k+1个空位 因为要求字典序最小,所以每次k和(上限-k)取min值. 没有 ...
- HDU 5489 Removed Interval 2015 ACM/ICPC Asia Regional Hefei Online (LIS变形)
定义f[i]表示以i为开头往后的最长上升子序列,d[i]表示以i为结尾的最长上升子序列. 先nlogn算出f[i], 从i-L开始枚举f[i],表示假设i在最终的LIS中,往[0,i-L)里找到满足a ...
- HDU - 5491 The Next 2015 ACM/ICPC Asia Regional Hefei Online
从D+1开始,对于一个数x,区间[x,x+lowbit(x))内的数字的二进制位上1的数量整体来说是单调不减的,因此可快速得出1在这个区间的取值范围. 每次判断一下有没有和[s1,s2]有没有交集,一 ...
- hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...
随机推荐
- umount: /home: device is busy
转自:umount: /home: device is busy 取消挂载/home时出现umount: /home: device is busy,原因是因为有程序在使用/home目录,我们可以使用 ...
- 不安装rpm包,取出rpm包里的文件
1.查看rpm包里的文件 [root@VM_166_132 ~]# rpm -qlp mysql5.6.29-1-3.x86_64.rpm |more/etc/ld.so.conf.d/mysql-5 ...
- nodejs 包引用的终极结论
通常我们用exports 或module.exports 来导出一个文件中的接口和字段,用require来引用导出的对象.那么这个exports 和 module.exports到底有啥关联呢? 1. ...
- jquery轻松实现li标签上下滚动的原理
在网站上我们常看到有滚动的文字或者图片,比如消息提醒,新闻列表,等等.那么这些效果是怎么形成的呢?经过查阅,找到一种十分方便的写法,经过改良,得出我自己的终极版滚动效果. 我先写个布局吧 <di ...
- dplyr 数据操作 常用函数(4)
接下来我们继续了解一些dplyr中的常用函数. 1.ranking 以下各个函数可以实现对数据进行不同的排序 row_number(x) ntile(x, n) min_rank(x) dense_r ...
- mysql 时间类型分类
MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围------------ ---- ...
- Struts2中一个自定义拦截器的使用
1.自定义的拦截器的类: package it.web.interceptor; import com.opensymphony.xwork2.ActionContext; import com.op ...
- 【翻译】创建Cordova项目
下载或者更新Node.js到最新版本 在电脑终端输入命令来安装Cordova CLI sudo npm install -g cordova 如果使用Windows电脑,需要在使用cmd命令行输入 n ...
- c++实现快速排序详细分析
快速排序坑挺多的,今天有空记录一下自己的实现,并加上详细的注释和举例 #include<iostream> using namespace std; int partion(int num ...
- SQL MySQL
SQL 结构化查询语言(英语:Structural Query Language,缩写:SQL),是一种特殊目的之编程语言,用于数据库中的标准数据查询语言. 各种通行的数据库系统在其实践过程中都对SQ ...