CF988 C. Equal Sums【map+pair/hash/任選兩個序列,兩個序列都除去他們中的一個數,使的總和相同】
阿新 • • 發佈:2018-06-03
相同 value can 個數 sca code esp 分析 return
【鏈接】:CF988C
【題意】:在n個序列中任選兩個序列,兩個序列都除去他們中的一個數,使的總和相同
【分析】:map
【代碼】:
#include <bits/stdc++.h> using namespace std; const int N = 2*1e5+5; int n,m,a[N]; map<int,pair<int,int> > mp; int main() { int n; int m; scanf("%d",&n); for(int j=0;j<n;j++) { scanf("%d",&m); int sum=0; for(int i=0;i<m;i++) { scanf("%d",&a[i]); sum+=a[i]; } //cout<<"sum = "<<sum<<endl; for(int i=0;i<m;i++) { //cout<<"sum-a["<<i+1<<"] = "<<sum-a[i]<<endl; if(mp.count(sum-a[i])) { cout<<"YES"<<endl<<mp[sum-a[i]].first<<' '<<mp[sum-a[i]].second<<endl<<j+1<<' '<<i+1<<endl; return 0; } } for(int i=0;i<m;i++) { mp[sum-a[i]]={j+1,i+1}; //cout<<"mp["<<sum-a[i]<<"]:"<<"j="<<j+1<<' '<<"i="<<i+1<<endl; } } cout<<"NO"<<endl; } /* 2 5 2 3 1 3 2 sum = 11 sum-a[1] = 9 sum-a[2] = 8 sum-a[3] = 10 sum-a[4] = 8 sum-a[5] = 9 mp[9]:j=1 i=1 mp[8]:j=1 i=2 mp[10]:j=1 i=3 mp[8]:j=1 i=4 mp[9]:j=1 i=5 6 1 1 2 2 2 1 sum = 9 sum-a[1] = 8 YES 1 4 2 1 */
CF988 C. Equal Sums【map+pair/hash/任選兩個序列,兩個序列都除去他們中的一個數,使的總和相同】