HLJU 1223: 寻找区间和 (交替推进法)
来源:互联网 发布:voa听力软件下载 编辑:程序博客网 时间:2024/05/16 18:06
1223: 寻找区间和
Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 13 Solved: 4
[Submit][Status][Web Board]
Description
N个正整数组成的序列(N<10^6),给你一个K(0<k<10^9),求出有多少个连续的区间之和为K。
例如序列:1 2 3 1 5 且 K=6时,满足的区间有[1,3],[2,4],[4,5]三个。
Input
多组数据。
第一行N,K。
第二行A1,A2,…,An。 (0<Ai<10^9)
Output
输出区间个数。
Sample Input
5 61 2 3 1 53 51 2 1
Sample Output
30
HINT
Source
tyh
解析:交替推进区间左右端点。若区间和小于k,则向右推进区间右端点;若大于,则将区间左端点向右推进。若等于,则统计。
AC代码:
#include <bits/stdc++.h>using namespace std;int a[1000002];int main(){ #ifdef sxk freopen("in.txt", "r", stdin); #endif // sxk int n, k; while(~scanf("%d%d", &n, &k)){ for(int i=0; i<n; i++) scanf("%d", &a[i]); int ans = 0, sum = 0; int s = 0; for(int i=0; i<n; ){ while(sum < k && i < n) sum += a[i ++]; //推进右端点 while(sum >= k){ if(sum == k) ans ++; //统计 sum -= a[s ++]; //推进左端点 } } printf("%d\n", ans); } return 0;}
0 0
- HLJU 1223: 寻找区间和 (交替推进法)
- 反复推进区间开头和末尾, 求解最小区间
- HLJU 1188 Matrix (二维树状数组)
- HLJU 1220: AC100天 (枚举)
- HLJU 1222: 01串plus (模拟)
- HLJU 1036: Teamwork Brings Profits! (dfs)
- CCF (HLJU 1180)点击窗口 (模拟)
- HLJU 1046: 钓鱼(数据增强版) (贪心+优化)
- HLJU 1221: 高考签到题 (三分求极值)
- HLJU 1042 Fight (种类并查集)
- 餐馆联邦一次运行的时间推进序列 (按时间排序的时间推进请求和time grant序列)
- 436. Find Right Interval (寻找最近的右区间)
- 字符交替(算法)
- 侦察兵(区间和)
- 日期和天气交替显示
- POJ 1459(预留推进)
- 餐馆联邦一次运行的时间推进序列 (按时间排序的时间推进请求和time grant序列) 续
- 最大子序列和问题的解(共4种,层层推进)
- 借助网盘离线下载从官网下载DB2-Express C
- 敏捷负载测试
- ThreadingTCPServer 如何设置端口重用
- NSPredicate谓词搜索使用小记
- 从零开始学习jQuery
- HLJU 1223: 寻找区间和 (交替推进法)
- ASPxGridView 用法整理
- RHEL5.4 x86_64 使用CentOS5的更新源
- 信鸽推送_使用自定义参数
- jmx配置远程监控
- Leetcode[4]-Median of Two Sorted Arrays
- R.java文件中的资源在Activity中得不到引用的问题
- cdlinux 安装到虚拟机中,百度经验上是错误的。
- 如何解决智能硬件互联不智慧难题?