codeforces_D. Social Circles
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的更多相关文章
- 1060D Social Circles(贪心)
题意:有n个客人,第i个客人希望左边至少Li个空椅子,右边至少Ri个空椅子,每个客人都属于一个圈,问你最少需要准备的椅子数量 贪心做,每个人都可以去和另一个人牵手,组成一个新的人,那么我们让大的和大的 ...
- cf1060D. Social Circles(贪心)
题意 题目链接 Sol 我是这样考虑的:从大到小考虑每个\(l, r\),最大的\(l\)应该和最大的\(r\)匹配(不然就亏了),其次次大的\(r\)应该和次大的\(l\)匹配 然后就过了.. /* ...
- CF1060D Social Circles
思路: 贪心.既然每个人的左边是其他人的右边,每个人的右边是其他人的左边,那么使重叠的部分最多即可. 实现: #include <bits/stdc++.h> using namespac ...
- 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 ...
- 海量数据挖掘MMDS week3:社交网络之社区检测:高级技巧
http://blog.csdn.net/pipisorry/article/details/49052255 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 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-> ...
- Codeforces Round #513 游记
Codeforces Round #513 游记 A - Phone Numbers 题目大意: 电话号码是8开头的\(1\)位数字.告诉你\(n(n\le100)\)个数字,每个数字至多使用一次.问 ...
- Codeforces Round #513 by Barcelona Bootcamp
A. Phone Numbers 签. #include <bits/stdc++.h> using namespace std; #define N 110 char s[N]; ], ...
- 【前行&赛时总结】◇第4站&赛时9◇ CF Round 513 Div1+Div2
◇第4站&赛时9◇ CF Round 513 Div1+Div2 第一次在CF里涨Rating QWQ 深感不易……作blog以记之 ( ̄▽ ̄)" +Codeforces 的门为你打 ...
随机推荐
- Lucene dvd dvm文件便是docvalues文件——就是针对field value的列存储
public final class Lucene54DocValuesFormat extends DocValuesFormat Lucene 5.4 DocValues format. Enco ...
- HTTP传输二进制初探
[转]HTTP传输二进制初探 http://www.51testing.com/?uid-390472-action-viewspace-itemid-233993 [转]HTTP传输二进制初探 上一 ...
- bzoj-1192 [HNOI2006]鬼谷子的钱袋(水题)
题目链接: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec Memory Limit: 162 MB Description 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各 ...
- 关于JAVA通过REST接口对arcGis Server数据进行增删改查
一: 添加要素 public void create(BoxVo boxVo) throws Exception { // 创建HTTP客户端 CloseableHttpClient httpclie ...
- bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】
这么简单的dp我怎么没想到x2 f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]=max(g[u][k],f[u][k-j-1 ...
- pycharm快捷键及一些常用设置(转载)
转载于:http://blog.csdn.net/wangtong95/article/details/51100872 在PyCharm /opt/pycharm-3.4.1/help目录下可以找到 ...
- [SRM613~] TaroCheckers
一定要注意Topcoder的提交机制 Links: 原题地址 Vjudge Solution 这道题思维比较巧妙. 一看就基本知道是一个Dp题. 首先转换一下,用列而不是行来设第一维的状态,因为每列只 ...
- 洛谷 P1288 取数游戏II
奇奇怪怪的游戏,不多写了 #include<cstdio> ]; int main() { int i; scanf("%d",&n); ;i<=n;i+ ...
- String Mark Codeforces - 895D
一看好像会做的样子,就去做了一下,结果 猝不及防地T掉了 赶紧查了一下,没有死循环,复杂度也是对的,无果,于是翻了题解 题解没看懂,但是找到了标程,然后发现我被卡常了... 而且好像当时还过了前10个 ...
- 比较C#中几种常见的复制字节数组方法的效率[转]
[原文链接] 在日常编程过程中,我们可能经常需要Copy各种数组,一般来说有以下几种常见的方法:Array.Copy,IList<T>.Copy,BinaryReader.ReadByte ...