http://codeforces.com/contest/808/problem/D

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
#include<utility>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
ll a[maxn];
ll sum[maxn];
multimap<ll,int> m;
multimap<ll,int> ::iterator it;
pair<multimap<ll,int>::iterator,multimap<ll,int>::iterator> pos;
int main()
{
int n;
scanf("%d",&n);
memset(sum,,sizeof(sum));
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
m.insert(make_pair(a[i],i));
sum[i]=sum[i-]+a[i];
}
if(sum[n]%==)
{
printf("NO\n");
return ;
}
ll half=sum[n]/;
for(int i=;i<=n;i++)
{
ll s=sum[i]-half;
if(s==)
{
printf("YES\n");
return ;
}
else if(s>)
{
pos=m.equal_range(s);
while(pos.first!=pos.second)
{
if(pos.first->second<=i)
{
printf("YES\n");
return ;
}
pos.first++;
}
}
else
{
s=-s;
pos=m.equal_range(s);
while(pos.first!=pos.second)
{
if(pos.first->second>i)
{
printf("YES\n");
return ;
}
pos.first++;
}
}
}
printf("NO\n"); return ;
}

equal_range的用法:

//定义pair 对象position; pair数据类型是 2个 multimap<string,string>::iterator 指针。
    pair<multimap<string, string>::iterator, multimap<string, string>::iterator> position;
    //如果键存在,函数返回2个指针,第一个指针指向键第一个匹配的元素
    //第二个指针指向键最后一个匹配的元素的下一位置
    position = author.equal_range(search_item);
    while (position.first != position.second)
    {
        cout << position.first->first << "  " << position.first->second << "\n";
        position.first++;
    }
    cout << endl;

map的find函数只能找key,所以需要把a[i]作为key,但同一个数可以出现多次,所以需要用multimap,multimap内容根据key排序后,equal_range函数key出现的区间。

【multimap的应用】D. Array Division的更多相关文章

  1. Educational Codeforces Round 21 D.Array Division(二分)

    D. Array Division time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...

  2. Array Division 808D

    D. Array Division time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  3. Array Division CodeForces - 808D (构造+实现)

    Vasya has an array a consisting of positive integer numbers. Vasya wants to divide this array into t ...

  4. Codeforces 808D. Array Division

    题目大意 给定你一个长为\(n\)的序列,问能否在最多一次取出某一元素然后插入到某一点后可以将整个序列分成两段使得其两段的元素之和相同. \(n \leq 10^5\) 题解 发现插入操作实际上是让某 ...

  5. D. Array Division

    http://codeforces.com/contest/808/problem/D 一开始是没什么想法的,然后回顾下自己想题的思路,慢慢就想出来了.首先要找到是否有这样的一个位置使得: 前缀和 = ...

  6. Educational Codeforces Round 21 D - Array Division (前缀和+二分)

    传送门 题意 将n个数划分为两块,最多改变一个数的位置, 问能否使两块和相等 分析 因为我们最多只能移动一个数x,那么要么将该数往前移动,要么往后移动,一开始处理不需要移动的情况 那么遍历sum[i] ...

  7. codeforces 808 D. Array Division(二分)

    题目链接:http://codeforces.com/contest/808/problem/D 题意:有一串长度为n的数组,要求选择一个数字交换它的位置使得这串数能够分成两串连续的和一样的数组. 这 ...

  8. Codeforces D. Array Division

    题目链接:http://codeforces.com/contest/808/problem/D 题意: 这一题给你一个数组,你可以调换某一个数的位置,使得这个数组可以分成2半,前半段的和等于后半段( ...

  9. CF808D STL

    D. Array Division time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

随机推荐

  1. .net excel 导入 导出

    哎,好好的代码今天说来个实验,结果用的是office15 气死人了,网上最高office14.dll 文章转自2012年 QQ群:13615607 MR.Young protected void Bt ...

  2. SpringBoot 2.x (8):模板引擎

    SpringBoot中有很多的starter:本质是多个JAR包集合 比如我们常用的: <dependency> <groupId>org.springframework.bo ...

  3. Kali部署openvas初探与实践

    openvas安装 1.我用的清华大学的源,所以我把/etc/apt/source.list中下入如下源地址 #清华大学deb http://mirrors.tuna.tsinghua.edu.cn/ ...

  4. VCS 查看代码覆盖率

    代码覆盖率 代码覆盖率测试一般包括行覆盖,条件覆盖,FSM覆盖,翻转覆盖率等.在不同的代码级别有不同的覆盖率,Behavioral code包含line+condition+path(branch)+ ...

  5. axios的简单封装及在组件内使用

    /**第一步 * 配置编译环境和线上环境之间的切换 * baseUrl: 域名地址 * routerMode: 路由模式 * imgBaseUrl: 图片所在域名地址 * */ let Host = ...

  6. Chrome开发者工具关于网络请求的一个隐藏技能

    这个隐藏技能的背景是,最近出于学习目的,我写了一个百度贴吧的网络爬虫,专门爬取一些指定主题的贴吧帖子. 抓取帖子用的JavaScript函数如下: function getPostByAJAX(req ...

  7. 两个div之间的蜜汁间隙

    两个div左右相邻,想让他们紧挨在一起 加了margin:0:padding:0: 不知道为什么还是会有间隙. 然后在两个div的父元素加了:font-size:0: 就终于挨在一起惹.

  8. JavaEE-06 Servlet基础

    学习要点 Servlet生命周期 Servlet API的常用接口和类 Servlet的部署和配置 Servlet处理用户请求 Servlet JSP回顾 JSP技术开发web应用在服务器端生成网页的 ...

  9. More Effective C++ - 章节二 : 操作符(operators)

    5. 对定制的 "类型转换函数" 保持警觉 允许编译器执行隐式类型转换,害处多过好处,不要提供转换函数,除非你确定需要. class foo { foo(int a = 0, in ...

  10. InnoDB INFORMATION_SCHEMA Metrics Table

    InnoDB INFORMATION_SCHEMA Metrics Table INNODB_METRICS表将所有InnoDB性能和资源相关计数器合并到一个INFORMATION_SCHEMA表中. ...