河南理工大学算法协会暑期集训积分赛(二)网络同步赛-Numbers of interval-尺取法

原题链接:https://hpuoj.com/contest/24/problem/E/

思路:一般的尺取法,不断更新左端点的值。

 1 #include<iostream>
 2 #include<iomanip>
 3 #include<string.h>
 4 #include<set>
 5 #include<map>
 6 #include<stdio.h>
 7 #include<queue>
 8 #define inf 0x3f3f3f3f
 9 const int N=1000020;
10 using namespace std;
11 typedef long long ll;
12
13 int a[N];
14
15 int main()
16 {
17     std::ios::sync_with_stdio(false);
18     cin.tie(0);
19     cout.tie(0);
20     int n,k;
21     cin>>n>>k;
22     memset(a,0,sizeof(a));
23     // memset(sum,0,sizeof(sum));
24     //  sum[0]=0;
25     int l=1;
26     ll sum=0,ans=0;//ans要设成ll,不然第二组数据就过不去
27     for(int i=1; i<=n; i++)
28     {
29         cin>>a[i];
30         //sum[i]=sum[i-1]+a[i];
31         sum+=a[i];
32         while(l<=i&&sum>=k)
33         {
34             //  l++;
35             ans=ans+n-i+1;
36             sum-=a[l];
37             l++;
38         }
39     }
40     cout<<ans<<endl;
41     return 0;
42 }

这是直接调用库函数的一种写法(和上面的原理一样):

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e6+100;
 4 typedef long long ll;
 5 long long a[N],sum[N];
 6 int main()
 7 {
 8     int n,k;
 9     cin>>n>>k;
10     for(int i=1; i<=n; i++)
11     {
12         cin>>a[i];
13         sum[i]=sum[i-1]+a[i];
14     }
15
16     long long ans=0;
17     for(int l=1; l<=n; l++)
18     {
19         int id=lower_bound(sum+1,sum+n+1,k+sum[l-1])-sum;
20         ans+=(n-id+1);
21     }
22     cout<<ans<<endl;
23     return 0;
24 }

原文地址:https://www.cnblogs.com/OFSHK/p/11259339.html

时间: 2024-10-09 14:57:53

河南理工大学算法协会暑期集训积分赛(二)网络同步赛-Numbers of interval-尺取法的相关文章

HPU暑期集训积分赛1

A. Nth power of n 单点时限: 1.0 sec 内存限制: 512 MB 求 nn 的个位数. 输入格式 多组输入,处理到文件结束.每组数据输入一个 n.(1≤n≤109) 输出格式 输出 nn 的个位数. 思路: 简单的快速幂. B. 复读机的力量 单点时限: 2.0 sec 内存限制: 512 MB Codancer: “我好菜啊!”Dicer: “我好菜啊!”Todest: “我好菜啊!”CaprYang: “我好菜啊!”…大佬们又开始装弱了,真正的菜鸡瑟瑟发抖不敢说话.

HPU暑期集训积分赛2

A. 再战斐波那契 单点时限: 1.0 sec 内存限制: 512 MB 小z 学会了斐波那契和 gcd 后,老师又给他出了个难题,求第N个和第M个斐波那契数的最大公约数,这可难倒了小z ,不过在小z 的再三请求下,老师又告诉他了个条件,gcd(N,M)∈[1,90]. 可是,笨拙的小z 还是不会,于是请求你帮他解答这个问题. 输入格式 输入包括 T 组,T∈[1,10].  接下来 T 行,每行两个整数 N,M, 表示斐波那契的第 N 项和第 M 项,(N,M∈[1,1018]). 输出格式

哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练. 题解: E666 这个题是让求有多少个子串只含有6.寻找连续的6,然后用n*(n+1)/2求出这一段的子串个数,然后把每一段连续的加起来. 做的时候wa了很多次,原来是在n*(n+1)的地方已经超过int型了,所以需要设置类型为long long. #include <cstdio> #inc

2014年CCNU-ACM暑期集训总结

2014年CCNU-ACM暑期集训总结 那个本期待已久的暑期集训竟然就这样的,溜走了.让自己有点措手不及,更多的是对自己的疑问,自己能否在ACM这个领域有所成就.带着这个疑问,先对这个暑假做个总结吧. 第一周来的时候,状态还没有融入进去,学长们也不在,就直接布置了一套题目,考察的是贪心策略.学习的时候很有激情,毕竟是期待了那么久的场景,所以大家都很认真,希望自己能够有所进步. 第二周,搜索专题.主要学习宽度优先搜索(BFS)与深度优先搜索(DFS),刚开始学比较吃力,因为自己对这方面的领悟有点迟

第二第三周暑期集训总结

##第二第三周暑期集训总结在第二第三周中,我主要看了状压DP,数位DP,树状DP的主要内容.同时,在做训练赛的过程中,发现一些知识点掌握的不好,于是又回头复习了一下,包括图的一些基本概念,最短路算法,并查集,最小生成树,图的存储方法(矩阵,邻接表(数组)).还有很关键的一件事就是参加了今年的CCPC网络选拔赛.####状压DP刚开始看的时候,我觉得状压DP很难.在恶补了位运算的知识后,我又自己敲了一遍代码,突然有一种茅塞顿开的感觉.这是我对状压DP的理解:状压DP其实也没什么深奥的,就是利用位运

题解报告(CDUT暑期集训——第三场)

题解报告(CDUT暑期集训--第三场) A - Problem A. Ascending Rating HDU - 6319 思路:单调队列板子题?(但是弱的一批的我还是不会用(有空补上 用的滑动窗口算法 按着题解的从后往前做(ps:菜是原罪 AC代码 #include<stdio.h> #include<iostream> #include<math.h> #include<algorithm> #include<string.h> #incl

河南理工大学第六届程序设计大赛

问题 A: 感恩节KK专场——送给新生的礼物 时间限制: 1 Sec  内存限制: 128 MB 提交: 633  解决: 189 [提交][状态][讨论版] 题目描述 学长KK要送给学弟学妹们礼物,他送给学弟每人一个礼物,送给学妹每人两个礼物.为什么?KK单身好多年了. 现在KK想知道他需要准备的礼物数目.注意:如果没有学妹,KK会十分伤心,就不会给任何人发礼物. 输入 给定一个整数t,表示有t(t<=30)组测试数据.每组测试数据有两个整数b(0<=b<=100)和g(0<=g

2016暑期集训集中贴

暑假期间网上练习的题解将在此博客公布,具体内容见后文. 题目链接:  点我 以下是暑期集训各队员题量统计(包括赛后补的题) 2016暑期集训AcBoard(截至07-23) 总题量 5 5 7 5   10 10 10 11    63 队员名称 cf-1 cf-2 cf-3 cf-4 cf-5 模拟训练1 模拟训练2 模拟训练3 模拟训练4 模拟训练5 题量小计 cb 2 2 3 3   6 6 6 4   32 fdf 4 3 3 2   5 7 2 4   30  ctr 3 3 3 3

2015年CCNU-ACM暑期集训总结

2015年CCNU-ACM暑期集训总结 本来很早就该做个总结的,可是一直拖到今天,也就是回学校的前一天晚上才下笔,拖延症越来越严重了.为了写这篇总结,我还特意去看了下去年的,映入眼帘的是一道流水账.=_= 往事不堪回首,还是简要说说2015年暑期集训的感想吧. 又是一年暑期集训,大三狗了,还有不到两年学生生涯,想想还蛮伤感的.额,扯远了扯远了.对今年暑期集训呢,其实说实话也没什么感想,唯一的感想就是越来越发现自己弱得一逼.首先说一下多校.多校就是一个让自己受虐的地方,不是那谁说的,要在受虐中成长