zoukankan      html  css  js  c++  java
  • Codeforces Round #486 (Div. 3) C "Equal Sums" (map+pair<>)

    传送门

    •题意

      给你 k 个序列,第 i 个序列含有 ni 个元素;

      问是否存在两个不同的序列 i,j;

      满足序列 i 删除某个数后的总和等于序列 j 删除某个数后的总和;

    题解

      定义 map<int , pair<int ,int > >f;

      为了方便表述,将上述定义改为 map<x ,pair<y ,z > >f;

      表示序列 y 删除第 z 个数后的总和为 x;

      对于第 i 个序列,在删除第 j 个数后,求出删除后的总和 cur;

      判断 f 中是否存在 cur,如果存在,直接输出,反之继续找;

    •Code

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define pii pair<int ,int >
     4 const int maxn=2e5+50;
     5 
     6 int k;
     7 int a[maxn];
     8 map<int ,pii >f;
     9 
    10 int main()
    11 {
    12     scanf("%d",&k);
    13     for(int i=1;i <= k;++i)
    14     {
    15         int n;
    16         scanf("%d",&n);
    17 
    18         int sum=0;
    19         for(int j=1;j <= n;++j)
    20         {
    21             scanf("%d",a+j);
    22             sum += a[j];
    23         }
    24 
    25         for(int j=1;j <= n;++j)
    26         {
    27             int cur=sum-a[j];
    28 
    29             ///判断之前的序列是否存在cur
    30             ///f[cur].first != i 是必要的
    31             ///测试如下样例便可明白
    32             /**
    33                 1
    34                 2
    35                 1 1
    36             */
    37             if(f.count(cur) && f[cur].first != i)
    38             {
    39                 puts("YES");
    40                 pii tmp=f[cur];
    41                 printf("%d %d
    ",i,j);
    42                 printf("%d %d
    ",tmp.first,tmp.second);
    43                 return 0;
    44             }
    45             f[cur]=pii(i,j);
    46         }
    47     }
    48     puts("NO");
    49 
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    My Vim
    POJ 3292 Semi-prime H-numbers
    洛谷P3954 成绩【民间数据】
    数据结构—栈/队列
    说服式设计(persuasive design)的行为模型
    发送邮件给某人:mailto标签
    如何识别和利用用户情绪
    HDU Good Numbers (热身赛2)
    atlas z 轴
    什么叫“默认邮件客户端没有正确安装”?
  • 原文地址:https://www.cnblogs.com/violet-acmer/p/11228413.html
Copyright © 2011-2022 走看看