模拟(思维)
Posted bhd123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟(思维)相关的知识,希望对你有一定的参考价值。
codeforces 1038 c
题意:
两个人,各有一堆数,每个人都有两种选择,1:把自己的最大的数加到和里。2:丢掉对方的一个数(最大)。
求第一个人的和 - 第二个人和。
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> typedef long long ll; using namespace std; int main() { ll n; ll a[100010],b[100010],i,j,ans1=0,ans2=0; scanf("%lld",&n); for(i=1;i<=n;i++) scanf("%lld",&a[i]); for(i=1;i<=n;i++) scanf("%lld",&b[i]); sort(a+1,a+n+1); sort(b+1,b+n+1); int flag=1; i=n;j=n; while(i!=0||j!=0) { if(flag) { flag=0; if(a[i]>b[j]) { ans1+=a[i]; i--; } else j--; } else { flag=1; if(b[j]>a[i]) { ans2+=b[j]; j--; } else i--; } } printf("%lld ",ans1-ans2); }
以上是关于模拟(思维)的主要内容,如果未能解决你的问题,请参考以下文章