codeforces contest 344
2016-11-25 21:05
357 查看
http://codeforces.com/contest/344
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
B 344B Simple
Molecules
题意:给出三个点的度数,求出三个点之间各有几条边。不能构成图输出impossible
题解:
解法一:贪心。每次选度最大的两个点连边。
解法二:知道所有点的度,由握手定理得知所有的边数,那么bc之间的边数=总边数-a的度。
比赛的时候只想出了解法一。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
#include <string>
#include <cmath>
#include <queue>
#include <set>
#include <map>
using namespace std;
typedef long long ll;
#define de(x) cout << #x << "=" << x << endl
int main() {
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c)) {
int ab=0,bc=0,ca=0;
int flag=0;
for(;;) {
if(a==0&&b==0) {
flag=1;
break;
}
if(b==0&&c==0) {
flag=1;
break;
}
if(c==0&&a==0) {
flag=1;
break;
}
if(a<=b&&a<=c) {
--b;
--c;
++bc;
} else if(b<=a&&b<=c) {
--a;
--c;
++ca;
} else {
--a;
--b;
++ab;
}
if(a+b+c==0) {
break;
}
}
if(flag) {
puts("Impossible");
} else {
printf("%d %d %d\n",ab,bc,ca);
}
}
return 0;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
E 343C Read
Time
题意:有n个针头,m个待读取的磁盘,给出针头和磁盘在坐标轴的位置,求针头的最大值最小。
题解:二分ans。check的写法见代码。
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
B 344B Simple
Molecules
题意:给出三个点的度数,求出三个点之间各有几条边。不能构成图输出impossible
题解:
解法一:贪心。每次选度最大的两个点连边。
解法二:知道所有点的度,由握手定理得知所有的边数,那么bc之间的边数=总边数-a的度。
比赛的时候只想出了解法一。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>
#include <string>
#include <cmath>
#include <queue>
#include <set>
#include <map>
using namespace std;
typedef long long ll;
#define de(x) cout << #x << "=" << x << endl
int main() {
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c)) {
int ab=0,bc=0,ca=0;
int flag=0;
for(;;) {
if(a==0&&b==0) {
flag=1;
break;
}
if(b==0&&c==0) {
flag=1;
break;
}
if(c==0&&a==0) {
flag=1;
break;
}
if(a<=b&&a<=c) {
--b;
--c;
++bc;
} else if(b<=a&&b<=c) {
--a;
--c;
++ca;
} else {
--a;
--b;
++ab;
}
if(a+b+c==0) {
break;
}
}
if(flag) {
puts("Impossible");
} else {
printf("%d %d %d\n",ab,bc,ca);
}
}
return 0;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
E 343C Read
Time
题意:有n个针头,m个待读取的磁盘,给出针头和磁盘在坐标轴的位置,求针头的最大值最小。
题解:二分ans。check的写法见代码。
#include <algorithm> #include <iostream> #include <cstring> #include <vector> #include <cstdio> #include <string> #include <cmath> #include <queue> #include <set> #include <map> using namespace std; typedef long long ll; #define de(x) cout << #x << "=" << x << endl const int N=100005; ll a ,b ,vis ; int n,m; bool check(ll dis) { int p=1; for(int i=1;i<=n&&p<=m;++i) { ll t=a[i]; if(b[p]<a[i]) { if(dis<a[i]-b[p]) return 0; ll t1=a[i]+dis-2*(a[i]-b[p]); ll t2=a[i]+(dis-(a[i]-b[p]))/2; t=max(t1,t2); } else { t+=dis; } while(p<=m&&b[p]<=t) ++p; } return p>m; } int main() { while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;++i) scanf("%I64d",&a[i]); for(int i=1;i<=m;++i) scanf("%I64d",&b[i]); ll l=0,r=20000000005,ans=-1; while(l<=r) { ll mid=l+r>>1; if(check(mid)) { r=mid-1; ans=mid; } else { l=mid+1; } } printf("%I64d\n",ans); } return 0; }
相关文章推荐
- Codeforces 501A:Contest(水题)
- Codeforces April Fools Contest 2017
- CodeForces-April Fools Day Contest 2013 - A
- codeforces contest 358
- codeforces contest 349
- codeforces 2016-2017 TW Wrold Final Contest J. Zero Game
- CodeForces 377 B. Preparing for the Contest
- CodeForces 501A Contest(水题,感觉BUG)
- CodeForces 377B---Preparing for the Contest(二分+贪心)
- Codeforces 2016 ACM Amman Collegiate Programming Contest B. The Little Match Girl(贪心)
- Codeforces-20152016-northwestern-european-regional-contest-nwerc-A题
- codeforces contest 339
- codeforces contest 383 problem C(树状数组+dfs序)
- Codeforces 656 B. Scrambled(April Fools Day Contest 2016)
- Codeforces 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest B题 (排序贪心)
- Codeforces 2016 ACM Amman Collegiate Programming Contest B. The Little Match Girl(贪心)
- CodeForces-999A-Mishka and Contest
- CodeForces 377B---Preparing for the Contest(二分+贪心)
- CodeForces - 681A A Good Contest
- Codeforces 877 A Alex and broken contest