博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF 988C Equal Sums 思维 第九题 map
阅读量:7179 次
发布时间:2019-06-29

本文共 3575 字,大约阅读时间需要 11 分钟。

Equal Sums
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given kk sequences of integers. The length of the ii-th sequence equals to nini.

You have to choose exactly two sequences ii and jj (iji≠j) such that you can remove exactly one element in each of them in such a way that the sum of the changed sequence ii (its length will be equal to ni1ni−1) equals to the sum of the changed sequence jj (its length will be equal to nj1nj−1).

Note that it's required to remove exactly one element in each of the two chosen sequences.

Assume that the sum of the empty (of the length equals 00) sequence is 00.

Input

The first line contains an integer kk (2k21052≤k≤2⋅105) — the number of sequences.

Then kk pairs of lines follow, each pair containing a sequence.

The first line in the ii-th pair contains one integer nini (1ni<21051≤ni<2⋅105) — the length of the ii-th sequence. The second line of the ii-th pair contains a sequence of nini integers ai,1,ai,2,,ai,niai,1,ai,2,…,ai,ni.

The elements of sequences are integer numbers from 104−104 to 104104.

The sum of lengths of all given sequences don't exceed 21052⋅105, i.e. n1+n2++nk2105n1+n2+⋯+nk≤2⋅105.

Output

If it is impossible to choose two sequences such that they satisfy given conditions, print "NO" (without quotes). Otherwise in the first line print "YES" (without quotes), in the second line — two integers ii, xx (1ik,1xni1≤i≤k,1≤x≤ni), in the third line — two integers jj, yy (1jk,1ynj1≤j≤k,1≤y≤nj). It means that the sum of the elements of the ii-th sequence without the element with index xx equals to the sum of the elements of the jj-th sequence without the element with index yy.

Two chosen sequences must be distinct, i.e. iji≠j. You can print them in any order.

If there are multiple possible answers, print any of them.

Examples
input
Copy
2 5 2 3 1 3 2 6 1 1 2 2 2 1
output
Copy
YES 2 6 1 2
input
Copy
3 1 5 5 1 1 1 1 1 2 2 3
output
Copy
NO
input
Copy
4 6 2 2 2 2 2 2 5 2 2 2 2 2 3 2 2 2 5 2 2 2 2 2
output
Copy
YES 2 2 4 1
Note

In the first example there are two sequences [2,3,1,3,2][2,3,1,3,2] and [1,1,2,2,2,1][1,1,2,2,2,1]. You can remove the second element from the first sequence to get [2,1,3,2][2,1,3,2] 

and you can remove the sixth element from the second sequence to get [1,1,2,2,2][1,1,2,2,2].The sums of the both resulting sequences equal to 88, i.e. the sums are equal.

题意: 给你k个数列(2<=k<=2*10^5),每个数列长度是n(n<=2*10^5),所有序列的总长度小于等于2*10^5,问是否有两个序列去掉序列其中一个值后两个序列序列和相等

用一个map存下每个序列去掉其中一个值后的剩余值及其的位置

然后遍历每个序列,看有没有一个序列去掉一个值后的剩余值被map记录,若有则输出这个值的位置及遍历到的值的位置,没有输出NO

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#define debug(a) cout << #a << " " << a << endlusing namespace std;const int maxn = 1e6 + 10;const int mod = 1e9 + 7;typedef long long ll;ll a[maxn];int main(){ std::ios::sync_with_stdio(false); ll T; while( cin >> T ) { ll flag = false; map< ll, pair< ll, ll > > mm; for( ll i = 1; i <= T; i ++ ) { ll n, sum = 0, t; cin >> n; for( ll j = 1; j <= n; j ++ ) { cin >> a[j]; sum += a[j]; } for( ll j = 1; j <= n; j ++ ) { t = sum - a[j]; if( mm.count(t) && !flag && mm[t].first != i ) { cout << "YES" << endl; cout << i << " " << j << endl; cout << mm[t].first << " " << mm[t].second << endl; flag = true; } mm[t] = make_pair( i, j ); } } if( !flag ) { cout << "NO" << endl; } } return 0;}

 

转载于:https://www.cnblogs.com/l609929321/p/9220742.html

你可能感兴趣的文章
keep-alive:组件级缓存
查看>>
flex 布局基本要点
查看>>
TextWatcher的使用及源码解析
查看>>
linux ssh 免密登录
查看>>
基于vue全家桶的webapp音乐播放器
查看>>
wepy笔记之原生小程序、vue、wepy之间的差异记录
查看>>
mpvue实现图书小程序
查看>>
Neo4j系统实战一
查看>>
Node.js Stream(流)
查看>>
js 函数柯里化 实现
查看>>
存储类区块链项目落地的关键性能指标——QoS!
查看>>
《Java编程思想》笔记
查看>>
长春新高三数理化暑假复习训练/高中理综补习班推荐
查看>>
JS中this的绑定规则
查看>>
Flutter入门进阶之旅(十六)Scaffold 脚手架
查看>>
Android进阶:九、自定义View之手写Loading动效
查看>>
每日一道面试题(第1期)---自定义handler如何有效保证内存泄漏问题
查看>>
红宝书总结-执行环境、作用域链
查看>>
sklearn 多项式回归
查看>>
iOS__播放mp3文件根据光线传感器设置外置或者听筒播放
查看>>