九度 OJ 1554:区间问题 (set +前缀 +map)
来源:互联网 发布:知天下事的动物 编辑:程序博客网 时间:2024/06/05 17:39
- 题目描述:
给定一个数组,判断数组内是否存在一个连续区间,使其和恰好等于给定整数k。
- 输入:
输入包含多组测试用例,每组测试用例由一个整数n(1<=n<=10000)开头,代表数组的大小。
接下去一行为n个整数,描述这个数组,整数绝对值不大于100。
最后一行为一个整数k(大小在int范围内)。
- 输出:
对于每组测试用例,若存在这个连续区间,输出其开始和结束的位置,s,e(s <= e)。
若存在多个符合条件的输出,则输出s较小的那个,若仍然存在多个,输出e较小的那个。
若不存在,直接输出"No"。
- 样例输入:
5-1 2 3 -4 953-1 2 -372-1 10
- 样例输出:
2 3No1 2
- 来源:
- 2014年王道论坛计算机考研机试全真模拟考试
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<stack>#include<vector>#include<set>#include<map>#define L(x) (x<<1)#define R(x) (x<<1|1)#define MID(x,y) ((x+y)>>1)#define eps 1e-8//typedef __int64 ll;#define fre(i,a,b) for(i = a; i < b; i++)#define free(i,a,b) for(i = a; i >= b;i--)#define mem(t, v) memset ((t) , v, sizeof(t))#define ssf(n) scanf("%s", n)#define sf(n) scanf("%d", &n)#define sff(a,b) scanf("%d %d", &a, &b)#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)#define pf printf#define bug pf("Hi\n")using namespace std;#define INF 0x3f3f3f3f#define N 100005int n;int sum[N],k;int a[N];set<int>le;map<int ,int>mp;void solve(){int i,j; le.clear(); mp.clear(); bool flag=false; int s,e;free(i,n,1){ le.insert(sum[i]); mp[sum[i]]=i; if(le.find(sum[i-1]+k)!=le.end()) { s=i; e=mp[sum[i-1]+k]; flag=true; }} if(flag) pf("%d %d\n",s,e); else pf("No\n");}int main(){ int i,j,t,ca=0; while(~scanf("%d",&n)) { fre(i,1,n+1) { sf(a[i]);sum[i]=sum[i-1]+a[i]; } sf(k); solve(); } return 0;}
1 0
- 九度 OJ 1554:区间问题 (set +前缀 +map)
- 九度 OJ 1554 区间问题
- 九度OJ题目1554:区间问题
- 九度oj 1554 区间问题
- 九度 oj 题目1554:区间问题
- 九度OJ 区间问题
- 九度 1554 区间问题
- 九度:题目1554:区间问题
- 【九度】题目1554:区间问题
- 九度OJ 区间问题 10000个随机正负数生成
- 九度OJ 1548 map的用法
- 九度OJ货币问题
- 区间和问题——九度 1554
- 九度OJ 1544 数字序列区间最小值
- 九度OJ 1544 数字序列区间最小值
- 九度OJ 1333:考研海报 (区间操作)
- 九度oj 题目1544:数字序列区间最小值
- STL之九 set map
- form提交后仍然是当前页面的简单实现
- UIDeviceOrientation 和 UIInterfaceOrientation 设备旋转的用法 (实例)
- Android Fragment应用实战,使用碎片向ActivityGroup说再见(三)
- Swift基础语法: 26 - Swift的存储属性, 计算属性, 属性监视器
- PHP register_shutdown_function函数详解
- 九度 OJ 1554:区间问题 (set +前缀 +map)
- sudo: /etc/sudoers is mode 0640, should be 0440解决办法
- 解析2015两会文化领域 占比率大
- 精简版开发工具使用手记2(图解)
- java【工具类】读取,修改Properties
- android textView 排版显示参差不齐的解决方法
- Hadoop版本选择探讨
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序(二)
- 阿里云CentOS 安装tcpdump