在湖蓝跟衡水大佬们打的第二场atcoder,不知不觉一星期都过去了。

任意门

C - Reconciled?

题意:n只猫,m只狗排队,猫与猫之间,狗与狗之间是不同的,同种动物不能相邻排,问有多少种方案。

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4.  
  5. const int MOD=1e9+;
  6. int n,m,mmh=;
  7. int main(){
  8. scanf("%d%d",&n,&m);
  9. if (n<m) swap(n,m);
  10. if (n-m>) return puts(""),;
  11. for (int i=;i<=n;i++) mmh=1LL*mmh*i%MOD;
  12. for (int i=;i<=m;i++) mmh=1LL*mmh*i%MOD;
  13. if (n==m) mmh=mmh*%MOD;
  14. printf("%d\n",mmh);
  15. }

D - Built?

题意:定义平面上两点间距离为x坐标差和y坐标差的较小值,求最小生成树。

题解:分别按x坐标,y坐标排序后只有相邻的点之间的边是有贡献的。

  1. #include<cstdio>
  2. #include<algorithm>
  3. #define MN 210001
  4. using namespace std;
  5.  
  6. const int MOD=1e9+;
  7. int n,m,fa[MN],num=;
  8. long long mmh=;
  9. struct na{int x,y,p;}p[MN];
  10. struct bi{int x,y,z;}B[MN];
  11. bool cmpx(na a,na b){return a.x<b.x;}
  12. bool cmpy(na a,na b){return a.y<b.y;}
  13. bool cmp(bi a,bi b){return a.z<b.z;}
  14. int gf(int x){return x==fa[x]?x:fa[x]=gf(fa[x]);}
  15. int main(){
  16. scanf("%d",&n);
  17. for (int i=;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y),p[i].p=i,fa[i]=i;
  18. sort(p+,p++n,cmpx);
  19. 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;
  20. sort(p+,p++n,cmpy);
  21. 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;
  22. sort(B+,B++num,cmp);
  23. for (int i=;i<=num;i++){
  24. B[i].x=gf(B[i].x);B[i].y=gf(B[i].y);
  25. if (B[i].x!=B[i].y) fa[B[i].x]=B[i].y,mmh+=B[i].z;
  26. }
  27. printf("%lld\n",mmh);
  28. }

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了个奇怪的贪心,然后挂掉了。

  1. #include<queue>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #define MN 110000
  6. using namespace std;
  7.  
  8. int read_p,read_ca;
  9. inline int read(){
  10. read_p=;read_ca=getchar();
  11. while(read_ca<''||read_ca>'') read_ca=getchar();
  12. while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
  13. return read_p;
  14. }
  15. struct na{int l,r;}p[MN];
  16. bool cmpl(na a,na b){return a.l==b.l?a.r>b.r:a.l<b.l;}
  17. priority_queue<int,vector<int>,greater<int> > q,_q;
  18. int n,m,mmh;
  19. int main(){
  20. mmh=n=read();m=read();
  21. for (int i=;i<=n;i++) p[i].l=read(),p[i].r=read();
  22. sort(p+,p++n,cmpl);
  23. for (int i=;i<=n;i++)
  24. if (p[i].l==q.size()) q.push(p[i].r),_q.push(q.top()),q.pop();else q.push(p[i].r),mmh--;
  25. for (int i=q.size()+;i<=m&&!_q.empty();i++) if (_q.top()<=i) _q.pop(),mmh--;
  26. printf("%d\n",mmh);
  27. }

凭借出前三题的手速还是涨了点rating

AtCoder Regular Contest 076的更多相关文章

  1. AtCoder Regular Contest 076 E - Connected?

    题目传送门:https://arc076.contest.atcoder.jp/tasks/arc076_c 题目大意: 给定一个\(R×C\)的矩阵,然后给定\(N\)对点,每对点坐标为\((X_{ ...

  2. AtCoder Regular Contest 076 F - Exhausted?

    题意: n个人抢m个凳子,第i个人做的位置必须小于li或大于ri,问最少几个人坐不上. 这是一个二分图最大匹配的问题,hall定理可以用来求二分图最大匹配. 关于hall定理及证明,栋爷博客里有:ht ...

  3. 【AtCoder Regular Contest 076 F】Exhausted (贪心)

    Description 机房里有M台电脑排成一排,第i台电脑的坐标是正整数i. 现在有N个OIer进入了机房,每个OIer需要一台电脑来学tui习ji,同时每个OIer对自己电脑所处的坐标范围有一个要 ...

  4. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

  5. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  6. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  7. AtCoder Regular Contest 093

    AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...

  8. AtCoder Regular Contest 094

    AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...

  9. AtCoder Regular Contest 095

    AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...

随机推荐

  1. for in,Object.keys()与for of的区别

    for in 1.for in一般用于遍历对象的属性: 2.作用于数组的for in除了会遍历数组元素外,还会遍历自定义可枚举的属性,以及原型链上可枚举的属性:3.作用于数组的for in的遍历结果是 ...

  2. 我是这样学习使用google学术的

    本科期间一直在cnki上面检索论文,随着科研能力的需要,部分论文在cnki的局限性就体现出来了,我就开始培养自己的文献检索能力.现在的各种开发工具,各种论文检索网站再加上文献检索的形式越来越复杂,我们 ...

  3. GAME——转圈游戏

    我们在生命的路上常常绝望 大概是因为弯路走了太多 脚上的泡被磨起又磨破 像我们所有的幻想与梦 起起落落. 所以说 我这道题考场上面和题解想得一模一样啊啊啊啊啊啊啊啊啊啊!!!!!! 但是就是打复杂了啊 ...

  4. 4、树莓派的中文:安装ftp,安装gcc,安装qt,编译qt程序,运行qt界面程序

    本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.安装FTP:sudo apt-get install vsftpd 2.配置FTP,修改,/etc/vsftpd.conf # ...

  5. SSIS 实用表达式部分总结

    下面,列出一些实用的表达式: 1,路径取文件名 RIGHT([FilePath],FINDSTRING(REVERSE([FilePath]),) - ) RIGHT(@[User::FilePath ...

  6. requireJS对文件合并与压缩(二)

    requireJS对文件合并与压缩 RequireJS提供了一个打包与压缩工具r.js,r.js的压缩工具使用UglifyJS进行压缩的或Closure Compiler.r.js下载 require ...

  7. jquery中this和event.target的区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Xamarin.Android AlertDialog中的EditText打上去字为什么不显示?也没有光标闪烁

    AlertDialog.Builder builder = new AlertDialog.Builder(this);            builder.SetTitle("请您输入管 ...

  9. arm-linux-objdump反汇编使用指南

    一.   arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码 二.   常用选项: 1.-b bfdname 指定目标码格式 2.-disassemble或者-d 反汇编 ...

  10. 学习整理与细化(1)——Internet 的域名系统(domain name system)

    2015-09-20 整理人:承蒙时光 如有错误欢迎指教O(∩_∩)O谢谢 1.作用:提供主机符号符名与IP地址之间转换服务也称域名服务: 2..域名系统的层次型结构命名机制(服务器地址): 计算机名 ...