Codeforces Round #445 Div. 2 A ACM ICPC+B Vlad and Cafes
A
emmmmmm……虽然只有6个数……拿来练dfs好了……
orz……读题啊……6个人分两组,每组三个人,问6个数能不能分为和相等的两组。(=-=没看到三个人,还WA了orz)
#include<iostream> //水过…… using namespace std; int n,a[7]; int sum=0; int flag=0; int cnt=0; void dfs(int x,int i) { if(x==sum-x&&i==7&&cnt==3) { flag=1; return ; } if(i==7) return ; cnt++; dfs(x+a[i],i+1); cnt--; dfs(x,i+1); } int main() { for(int i=1;i<=6;i++) { cin>>a[i]; sum+=a[i]; } dfs(0,1); if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }
B
emmm……就记一下数,然后按顺序扫一遍……看哪个个数先减到0……就可以了
#include<iostream> #include<stdio.h> #include<algorithm> #include<map> using namespace std; const int N=2e5; int n; int a[N]; map<int,int>p; int main() { scanf("%d",&n); p.clear(); for(int i=0;i<n;i++) { cin>>a[i]; p[a[i]]++; } for(int i=0;i<n;i++) { p[a[i]]--; if(p[a[i]]==0) { cout<<a[i]<<endl; break; } } return 0; }