HDU 4193
本题思路:用sum[]数组维护前缀和, 当然这里需要把原数组扩大为原来的两倍。
然后对于任意一个长度为n的区间 k.....k+n-1,如果有该区间内的最小值大于等于sum[k-1]那么该种情况就符合要求。
刚开始想到了线段树,RMQ.....汗颜~~当然只试了一下RMQ, 明显的MLE。真的没有想到去用单调队列。
以后用该牢记,当需要求定长区间的最值时应该想到去尝试单调队列。
感觉这遍关于单调队列的文章很好理解:点击打开链接
附上代码:
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; #define MAX_N (2000000 + 2) int sum[MAX_N], q[MAX_N];
int n, cnt, front , rear; inline void in(int i) {
while (front <= rear && sum[q[rear]] >= sum[i]) rear--; q[++rear] = i;
} inline void out(int i, int n) {
if (q[front] <= i - n) front++; if (sum[q[front]] - sum[i-n] >= ) cnt++;
} int main(void) {
while (~scanf("%d", &n) && n) { sum[] = ;
cnt = ;
front = ;
rear = -; for (int i = ; i <= n; i++) {
scanf("%d", sum + i);
sum[i + n] = sum[i];
}
for (int i = ; i < n + n; i++)
sum[i] += sum[i-]; for (int i = ; i < n; i++)
in(i); for (int i = n; i < n + n; i++) {
in(i);
out(i, n);
} printf("%d\n", cnt);
} return ;
}
HDU 4193的更多相关文章
- HDU 4193 Non-negative Partial Sums(想法题,单调队列)
HDU 4193 题意:给n个数字组成的序列(n <= 10^6).求该序列的循环同构序列中,有多少个序列的随意前i项和均大于或等于0. 思路: 这题看到数据规模认为仅仅能用最多O(nlogn) ...
- hdu 4193 Non-negative Partial Sums
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4193 题意:给出一个n数列,要求把前i(1<=i<=n)个数移到剩余数列的后面形成新的数列 ...
- HDU 4193 Non-negative Partial Sums【单调队列】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4193 题意: 给定序列,可以把后面的连续的部分移到最前面来,问多少种移法使得最终得到的序列的前i项和 ...
- hdu 4193 Non-negative Partial Sums 单调队列。
Non-negative Partial Sums Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- hdu 4193 - Non-negative Partial Sums(滚动数列)
题意: 给定一个由n个整数组成的整数序列,可以滚动,滚动的意思就是前面k个数放到序列末尾去.问有几种滚动方法使得前面任意个数的和>=0. 思路: 先根据原来的数列求sum数组,找到最低点,然后再 ...
- HDU 4193 Non-negative Partial Sums(单调队列)
题目大意: 给定一个长度为n的循环序列.从n个不同位置開始,问有几个位置使得一下情况成立:全部前缀的和都大等于0(n <=1000000). 下午的训练赛.之前没学过单调队列所以用的线段树 ...
- hdu 4193 单调队列
题意是给你n个数 组成的环 求以一个数开头 的数列全部前缀都为非负数的数列的个数: 思路: 先扩展成2*n的数列 然后求出sum[i]表示前i项的和 对每一个i>.=n结尾的数 ...
- HDU 1710 Binary Tree Traversals(树的建立,前序中序后序)
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- mysql利用MySQLWorkbench生成数据表之间的关系图
先看结果,默认是展开的,我手动把表折叠了 那么如何实现呢 先点击这里 然后通过向导来创建即可,一直到finish就行了
- 第15章 RMAN备份
第15章 RMAN备份 oracle推荐的备份工具是rman(恢复管理器:recovery manager),用操作系统命令执行的备份被称为用户管理的备份.使用rman执行的备份被称为服务器管理备份. ...
- jqGrid首次加载时不加载任何数据
1. 首次加载时候设置 jqGrid 属性 datatype: 'local' $("#grid").jqGrid({ url:"#", datatype:&q ...
- Vuejs实战项目:登陆页面
1.在view文件夹下创建login文件夹,创建index.vue:代表登录的组件 配置router.js,导入登录组件 import Vue from "vue"; import ...
- spring源码学习之springMVC(一)
个人感觉<Spring技术内幕:深入解析Spring架构与设计原理(第2版)>这本书对spring的解读要优于<Spring源码深度解析(第2版)>这本书的,后者感觉就是再陈述 ...
- bzoj 1266 [AHOI2006] 上学路线
传送门 传说中的经典容斥+卢卡斯定理+中国剩余定理 题解传送门 //Achen #include<algorithm> #include<iostream> #include& ...
- for循环遍历json(附习题及答案)
三种方法 var mapColumn = { "vdoing" : "访问深度", "_visitorNumber": "访问量& ...
- 读书笔记--Head First Networking目录
1.解决物理网络 2.规划网络布局 3.工具和故障排除 4.包分析 5.网络设备和流量 6.连接网络的路由器 7.路由协议 8.域名系统 9.监控和故障排除 10.无线网络 11.网络安全 12.网络 ...
- gomod
package main import "mycore" func main(){ mycore.ShowName() } main.go module mytest requir ...
- 关于springmvc 只能在index.jsp页面显示图片的处理办法jsp页面无法显示图片
首先,已经配置好了mvc对静态资源的处理 只有index,jsp可以显示图片 其他页面同样的代码则不显示 后来折腾了半天,发现 index是static的父目录的级别文件 可以向下访问 但是其他的js ...