[BZOJ1034][ZJOI2008]泡泡堂BNB(贪心)
2017-05-03 17:20
357 查看
题目描述
传送门题目大意:给出浙江队n个人的权值,和对手n个人的权值,两人战平各得1分,胜2分,败0分,问最好和最坏情况下浙江队得多少分。
题解
一个田忌赛马问题首先排序,若当前最弱的>对方当前最弱的,那么打;若当前最强的>对方当前最强的,那么也打;否则用最弱的去打对方最强的
由于两个人得分和一定是2n,第二问就将两个队反一下然后再用2n减去就可以了
代码
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; #define N 100005 int n,ans1,ans2,a ,b ; int solve(int *a,int *b) { int al=1,ar=n,bl=1,br=n,ans=0; while (al<=ar&&bl<=br) { if (a[al]>b[bl]) ans+=2,++al,++bl; else if (a[ar]>b[br]) ans+=2,--ar,--br; else { if (a[al]==b[br]) ++ans; ++al,--br; } } return ans; } int main() { scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%d",&a[i]);sort(a+1,a+n+1); for (int i=1;i<=n;++i) scanf("%d",&b[i]);sort(b+1,b+n+1); ans1=solve(a,b); ans2=solve(b,a); printf("%d %d\n",ans1,2*n-ans2); }
相关文章推荐
- bzoj 1034: [ZJOI2008]泡泡堂BNB【贪心】
- BZOJ 1034: [ZJOI2008]泡泡堂BNB(贪心)
- BZOJ 1034: [ZJOI2008]泡泡堂BNB 贪心 田忌赛马
- 【bzoj1034】[ZJOI2008]泡泡堂BNB 贪心
- [BZOJ1034] [ZJOI2008] 泡泡堂BNB - 贪心
- bzoj1034 [ZJOI2008]泡泡堂BNB(贪心)
- [BZOJ 1034][ZJOI2008]泡泡堂BNB(类田忌赛马贪心)
- bzoj 1034: [ZJOI2008]泡泡堂BNB 贪心
- [bzoj1034][ZJOI2008]泡泡堂BNB【贪心】
- BZOJ1034 [ZJOI2008]泡泡堂BNB 【贪心】
- BZOJ1034 [ZJOI2008]泡泡堂BNB 【贪心】
- bzoj 1034 [ZJOI2008]泡泡堂BNB(贪心)
- 【贪心】[ZJOI2008][HYSBZ/BZOJ1034]泡泡堂BNB
- [BZOJ 1034] [ZJOI2008] 泡泡堂BNB 【贪心】
- BZOJ1034[ZJOI2008]泡泡堂BNB--贪心(田忌赛马)
- BZOJ 1034: [ZJOI2008]泡泡堂BNB (贪心
- [BZOJ1034][ZJOI2008]泡泡堂BNB 贪心
- 【BZOJ1034】[ZJOI2008]泡泡堂BNB【贪心】【田忌赛马】
- BZOJ 1034: [ZJOI2008]泡泡堂BNB( 贪心 )
- 【BZOJ】1034: [ZJOI2008]泡泡堂BNB(贪心)