http://codeforces.com/contest/1060/problem/D

题意:

n个客人,每个客人希望自己左边空li个座位,右边空ri个座位,可以形成任意个圆,问最少多少个座位。

思路:

1、问题可以看作,给每个客人gi的左边找一个合适的另一个客人gj。其之间的空座数为max(l(gi),r(gj))。这样匹配,自然会匹配为若干个圆。

2、将l和r排序,按大小顺利依次匹配,这样的总座位数最少。

证明:假设现在l和r都递增排好序。从匹配中任意找两对,例如(a, b),(c,d),且a!=c,b!=d,将其换为(c, b),(a, d)。

1)当c<=b时,已知a<c和b<d,得a<c<=b<d,交换后,max(a, b)==max(c, b)==b,max(c, d)==max(a, d)==d

2)当c>b时,

2.1)c<=d。得a<c,b<c,c<=d。max(a, b)<max(c, b),max(c, d)==max(a, d)

2.2)c>d。得b<d<c,a<c。max(c, d)==max(c, b),max(a, b) 不可能大于 max(a, d)

证得,交换l序列中任意两个不同得数,总座位数不会减少。

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long int main()
{
int n,l[],r[];
while(scanf("%d",&n)!=EOF)
{
for(int i=;i<n;i++)
scanf("%d%d",&l[i],&r[i]);
sort(l,l+n);
sort(r,r+n);
LL res=n;
for(int i=;i<n;i++)
res+=max(l[i],r[i]);
printf("%I64d\n",res);
}
return ;
}

codeforces_D. Social Circles的更多相关文章

  1. 1060D Social Circles(贪心)

    题意:有n个客人,第i个客人希望左边至少Li个空椅子,右边至少Ri个空椅子,每个客人都属于一个圈,问你最少需要准备的椅子数量 贪心做,每个人都可以去和另一个人牵手,组成一个新的人,那么我们让大的和大的 ...

  2. cf1060D. Social Circles(贪心)

    题意 题目链接 Sol 我是这样考虑的:从大到小考虑每个\(l, r\),最大的\(l\)应该和最大的\(r\)匹配(不然就亏了),其次次大的\(r\)应该和次大的\(l\)匹配 然后就过了.. /* ...

  3. CF1060D Social Circles

    思路: 贪心.既然每个人的左边是其他人的右边,每个人的右边是其他人的左边,那么使重叠的部分最多即可. 实现: #include <bits/stdc++.h> using namespac ...

  4. 10 signs you’re dating the wrong person

    10 signs you’re dating the wrong person10个迹象表明TA不是你的真心人       Do you have any exes who were so awful ...

  5. 海量数据挖掘MMDS week3:社交网络之社区检测:高级技巧

    http://blog.csdn.net/pipisorry/article/details/49052255 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  6. Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C D

    C - Maximum Subrectangle 因为是两个数组相乘的到的 矩阵所以  a(i ->j)*b(x->y) 的面积 就是   a(i ->j) 的和乘与b(x-> ...

  7. Codeforces Round #513 游记

    Codeforces Round #513 游记 A - Phone Numbers 题目大意: 电话号码是8开头的\(1\)位数字.告诉你\(n(n\le100)\)个数字,每个数字至多使用一次.问 ...

  8. Codeforces Round #513 by Barcelona Bootcamp

    A. Phone Numbers 签. #include <bits/stdc++.h> using namespace std; #define N 110 char s[N]; ], ...

  9. 【前行&赛时总结】◇第4站&赛时9◇ CF Round 513 Div1+Div2

    ◇第4站&赛时9◇ CF Round 513 Div1+Div2 第一次在CF里涨Rating QWQ 深感不易……作blog以记之 ( ̄▽ ̄)" +Codeforces 的门为你打 ...

随机推荐

  1. unbantu16.04安装jdk

    1,解压缩jdk到指定目录 2,修改目录,方便使用 3,配置环境变量 sudo gedit /etc/environment 末尾加入以下配置(JAVA_HOME 后的路径就是jdk的文件位置) PA ...

  2. POJ - 1986 Distance Queries(离线Tarjan算法)

    1.一颗树中,给出a,b,求最近的距离.(我没考虑不联通的情况,即不是一颗树的情况) 2.用最近公共祖先来求, 记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - ...

  3. 洛谷 P1315 观光公交 —— 贪心

    题目:https://www.luogu.org/problemnew/show/P1315 问题是想不明白改动一条边会对后面造成怎样的影响: 实际上影响的会是一段,当某个车站出发时间受其来人牵制时, ...

  4. hdu 2553(N皇后问题)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  5. vue 使用过程中自己遇到的bug

    需要安装npm git(windows系统需要安装) npm 是node的包管理工具 npm 国内的网站比较慢,推荐使用cnpm(淘宝的镜像) cnpm(npm) install 创建依赖-----因 ...

  6. 1.Ext.onReady详解

    转自:https://blog.csdn.net/xufang461010923/article/details/37660139 我们知道,只有在Ext框架全部加载完后才能在客户端的代码中使用Ext ...

  7. join示例分析

    join示例分析 public class TestJoin { public static void main(String[] args) throws InterruptedException ...

  8. IDEA Terminal

    如果IDEA在Terminal中无法使用环境变量,提示没有此命令的话,请查看在cmd中是否可以正常使用,然后,请右击IDEA以管理员方式进行运行,Terminal就可以正常使用了

  9. bzoj 4247: 挂饰【dp】

    bzoj上访问负下标会跑到奇怪的地方-- 其实可以滚动数组优化,但是我看能过就懒得改了 设f[i][j]为已经算了前i个挂饰,当前有j个空的钩子,转移就是f[i][j]=max(f[i-1][j],f ...

  10. bzoj 1027: [JSOI2007]合金【凸包+Floyd】

    参考:https://www.cnblogs.com/zhuohan123/p/3237246.html 因为一c可以由1-a-b得出,所以删掉c,把a,b抽象成二维平面上的点.首先考虑一个客户需求能 ...