AtCoder Regular Contest 076
在湖蓝跟衡水大佬们打的第二场atcoder,不知不觉一星期都过去了。
任意门
C - Reconciled?
题意:n只猫,m只狗排队,猫与猫之间,狗与狗之间是不同的,同种动物不能相邻排,问有多少种方案。
#include<cstdio>
#include<algorithm>
using namespace std; const int MOD=1e9+;
int n,m,mmh=;
int main(){
scanf("%d%d",&n,&m);
if (n<m) swap(n,m);
if (n-m>) return puts(""),;
for (int i=;i<=n;i++) mmh=1LL*mmh*i%MOD;
for (int i=;i<=m;i++) mmh=1LL*mmh*i%MOD;
if (n==m) mmh=mmh*%MOD;
printf("%d\n",mmh);
}
D - Built?
题意:定义平面上两点间距离为x坐标差和y坐标差的较小值,求最小生成树。
题解:分别按x坐标,y坐标排序后只有相邻的点之间的边是有贡献的。
#include<cstdio>
#include<algorithm>
#define MN 210001
using namespace std; const int MOD=1e9+;
int n,m,fa[MN],num=;
long long mmh=;
struct na{int x,y,p;}p[MN];
struct bi{int x,y,z;}B[MN];
bool cmpx(na a,na b){return a.x<b.x;}
bool cmpy(na a,na b){return a.y<b.y;}
bool cmp(bi a,bi b){return a.z<b.z;}
int gf(int x){return x==fa[x]?x:fa[x]=gf(fa[x]);}
int main(){
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y),p[i].p=i,fa[i]=i;
sort(p+,p++n,cmpx);
for (int i=;i<=n;i++) B[++num].x=p[i-].p,B[num].y=p[i].p,B[num].z=p[i].x-p[i-].x;
sort(p+,p++n,cmpy);
for (int i=;i<=n;i++) B[++num].x=p[i-].p,B[num].y=p[i].p,B[num].z=p[i].y-p[i-].y;
sort(B+,B++num,cmp);
for (int i=;i<=num;i++){
B[i].x=gf(B[i].x);B[i].y=gf(B[i].y);
if (B[i].x!=B[i].y) fa[B[i].x]=B[i].y,mmh+=B[i].z;
}
printf("%lld\n",mmh);
}
E - Connected?
题意:给矩形内一些点对,问点对之间连边是否可能不出现相交。
题解:(这貌似是GDKOI2013的题?)只有边界上的点是有用的,然后把边界展开成一条线段,求区间是否有交即可。
F - Exhausted?
题意:求最大匹配,限制是左边的每个点 i 不能与右端的$[L_{i}+1,R_{i}-1]$区间内的点匹配。
题解:把左端的点按$L_{i}$排序,从小到大枚举,如果当前点x可匹配的区间未被匹配完全,那就直接匹配,已经匹配完全就把已被选择的点中$R_{i}$最小的一个点y拿出来,让x顶替y匹配的位置(如果$R_{x}<=R{y}$自然就不用换了)。最后未被选择的点再强行匹配右端部分即可。
考场上网络流没卡过,就yy了个奇怪的贪心,然后挂掉了。
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 110000
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
struct na{int l,r;}p[MN];
bool cmpl(na a,na b){return a.l==b.l?a.r>b.r:a.l<b.l;}
priority_queue<int,vector<int>,greater<int> > q,_q;
int n,m,mmh;
int main(){
mmh=n=read();m=read();
for (int i=;i<=n;i++) p[i].l=read(),p[i].r=read();
sort(p+,p++n,cmpl);
for (int i=;i<=n;i++)
if (p[i].l==q.size()) q.push(p[i].r),_q.push(q.top()),q.pop();else q.push(p[i].r),mmh--;
for (int i=q.size()+;i<=m&&!_q.empty();i++) if (_q.top()<=i) _q.pop(),mmh--;
printf("%d\n",mmh);
}
凭借出前三题的手速还是涨了点rating
AtCoder Regular Contest 076的更多相关文章
- AtCoder Regular Contest 076 E - Connected?
题目传送门:https://arc076.contest.atcoder.jp/tasks/arc076_c 题目大意: 给定一个\(R×C\)的矩阵,然后给定\(N\)对点,每对点坐标为\((X_{ ...
- AtCoder Regular Contest 076 F - Exhausted?
题意: n个人抢m个凳子,第i个人做的位置必须小于li或大于ri,问最少几个人坐不上. 这是一个二分图最大匹配的问题,hall定理可以用来求二分图最大匹配. 关于hall定理及证明,栋爷博客里有:ht ...
- 【AtCoder Regular Contest 076 F】Exhausted (贪心)
Description 机房里有M台电脑排成一排,第i台电脑的坐标是正整数i. 现在有N个OIer进入了机房,每个OIer需要一台电脑来学tui习ji,同时每个OIer对自己电脑所处的坐标范围有一个要 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
随机推荐
- 【CSS3】浏览器内核、私有前缀
浏览器内核 私有前缀 浏览器 webkit -webkit- chrome.safari.安卓.ios trident -ms- IE gecko -moz- firefox presto -o- o ...
- android studio 环境变量配置
1.需要添加path环境变量: 2.真机调试或模拟器调试需要启动adb adb kill-severadb -start-server可能有端口冲突--重启或者修改端口 创建密匙http://blog ...
- http性能测试工具wrk源码学习之开篇
1.前言 最近工作需要测试nginx反向代理的性能,于是找了一些http测试工具,例如经典的Apache的ab.siege.wrk.wrk使用多线程事件驱动方式,支持lua脚本扩展.关于wrk介绍可以 ...
- es6 let和const命令(1)
基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...
- for 在项目实战中用的比较多
for循环编程语言中的语句之一,用于循环执行.for循环是开界的,它的一般形式为: for(; <条件表达式>; ) 语句: 初始化通常是一个赋值语句, 它用来给循环控制变量赋初值: 条件 ...
- Codebase Refactoring (with help from Go)
Codebase Refactoring (with help from Go) 代码库重构(借助于Go) 1.摘要 Go应该添加为类型创建替代等效名称的能力,以便在代码库重构期间渐进代码修复.本文解 ...
- 字符串匹配KMP算法的C语言实现
字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...
- 3、公司开会的必要性 - CEO之公司管理经验谈
这几天在考虑开公司的问题.以前也有想过开公司创业,但是由于资金和团队问题搁置了.今天在网上看到了一篇文“[转]微软是这么管理员工的!你一定向往!”,想起以前在其它公司时开的一些会议的问题,就写了此文, ...
- jQuery Ajax post多个值传参
http://blog.csdn.net/wang8559422/article/details/42394839 data:'id='+data+'&val='+val 加&符 ...
- 房上的猫:java中的包
包 1.作用: (1)包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件 (2)防止命名冲突: java中只有在不同包中的类才能重名 (3)包允许在更广的范围内保护类,数 ...