BZOJ1034[ZJOI2008]泡泡堂BNB--贪心(田忌赛马)
2017-12-10 09:34
302 查看
【链接】
bzoj1034
【解题报告】
田忌赛马。
第一问直接求自己的最好情况下的得分。
第二问就是2∗n−别人最好情况下的得分。
bzoj1034
【解题报告】
田忌赛马。
第一问直接求自己的最好情况下的得分。
第二问就是2∗n−别人最好情况下的得分。
#include<cstdio> #include<algorithm> using namespace std; const int maxn=100005; int n,ans,sum,a[maxn],b[maxn]; inline int nc() { static char buf[100000],*l,*r; if (l==r) r=(l=buf)+fread(buf,1,100000,stdin); if (l==r) return EOF; return *l++; } inline int Read() { int res=0,f=1; char ch=nc(),cc=ch; while (ch<'0'||ch>'9') cc=ch,ch=nc(); if (cc=='-') f=-1; while (ch>='0'&&ch<='9') res=res*10+ch-48,ch=nc(); return res*f; } int Work() { ans=0; int l=1,r=n,s=1,t=n; while (l<=r) { if (a[l]>b[s]) l++,s++,ans+=2; else if (a[r]>b[t]) r--,t--,ans+=2; else ans+=(a[l]==b[t]),l++,t--; } return ans; } int main() { freopen("1034.in","r",stdin); freopen("1034.out","w",stdout); n=Read(); for (int i=1; i<=n; i++) a[i]=Read(); sort(a+1,a+1+n); for (int i=1; i<=n; i++) b[i]=Read(); sort(b+1,b+1+n); printf("%d ",Work()); swap(a,b); printf("%d",2*n-Work()); return 0; }
相关文章推荐
- bzoj 1034 n [ZJOI2008]泡泡堂BNB 贪心 田忌赛马
- BZOJ 1034: [ZJOI2008]泡泡堂BNB 贪心 田忌赛马
- bzoj 1034: [ZJOI2008]泡泡堂BNB(贪心)
- [BZOJ1034][ZJOI2008]泡泡堂BNB 贪心
- 【贪心】[ZJOI2008][HYSBZ/BZOJ1034]泡泡堂BNB
- [BZOJ 1034][ZJOI2008]泡泡堂BNB(类田忌赛马贪心)
- bzoj 1034: [ZJOI2008]泡泡堂BNB 贪心
- BZOJ 1034: [ZJOI2008]泡泡堂BNB(贪心)
- bzoj 1034 [ZJOI2008]泡泡堂BNB(贪心)
- [BZOJ1034][ZJOI2008]泡泡堂BNB(贪心)
- BZOJ 1034: [ZJOI2008]泡泡堂BNB( 贪心 )
- HYSBZ/BZOJ 1034 [ZJOI2008] 泡泡堂BNB - 贪心
- [BZOJ1034] [ZJOI2008] 泡泡堂BNB - 贪心
- bzoj 1034: [ZJOI2008]泡泡堂BNB【贪心】
- BZOJ 1034: [ZJOI2008]泡泡堂BNB 贪心题解
- bzoj1034 [ZJOI2008]泡泡堂BNB(贪心)
- BZOJ1034 [ZJOI2008]泡泡堂BNB 【贪心】
- 【BZOJ1034】[ZJOI2008]泡泡堂BNB【贪心】【田忌赛马】
- BZOJ1034 [ZJOI2008]泡泡堂BNB 【贪心】
- [bzoj1034][ZJOI2008]泡泡堂BNB【贪心】