JZOJ 4738. 神在夏至祭降下了神谕 DP + 线段树优化
Description
Input
Output
Sample Input
4 1
0 0 1 1
Sample Output
5
Data Constraint
#include <cstdio>
#include <cstring>
#include <iostream>
#define mo 1000000007
#define LL long long
#define N 2000007
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
LL t[N],f[N/],sum;
int n,k,b[N/]; void Update(int p,int l,int r,int ain,int x){
if(l==r){
t[p]=(t[p]+x)%mo;
return;
}
int mid=(l+r)>>;
if(mid>=ain) Update(p<<,l,mid,ain,x);
else Update(p<<|,mid+,r,ain,x);
t[p]=(t[p<<]+t[p<<|])%mo;
return;
} void Find(int p,int l,int r,int L,int R){
if(l==L&&r==R){
sum=(sum+t[p])%mo;
return;
}
int mid=(l+r)>>;
if(mid>=R) Find(p<<,l,mid,L,R);
else if(mid<L) Find(p<<|,mid+,r,L,R);
else{
Find(p<<,l,mid,L,mid);
Find(p<<|,mid+,r,mid+,R);
}
return;
} void Init(){
scanf("%d%d",&n,&k);
rep(i,,n){
int x;
scanf("%d",&x);
if(x) b[i]=b[i-]+; else b[i]=b[i-]-;
}
f[]=;
Update(,,*n,n,);
} void Work(){
rep(i,,n){
int site=b[i]+n;
sum=;
Find(,,*n,max(,site-k),min(*n,site+k));
f[i]=sum;
Update(,,*n,site,f[i]);
}
printf("%lld", f[n]);
} int main(){
Init();
Work();
}
JZOJ 4738. 神在夏至祭降下了神谕 DP + 线段树优化的更多相关文章
- [测试题]神在夏至祭降下了神谕(oracle)
		
Description 我们村子在过去的 400 年中, 断绝与下界的接触, 过着自给自足的生活.夏至祭是一场迎接祖灵于夏季归来, 同时祈求丰收的庆典.村里的男人会在广场上演出夏之军和冬之军的战争. ...
 - 常州模拟赛d3t1 神在夏至祭降下了神谕
		
题目描述 我们村子在过去的400年中,断绝与下界的接触,过着自给自足的生活. 夏至祭是一场迎接祖灵于夏季归来,同时祈求丰收的庆典. 村里的男人会在广场上演出夏之军和冬之军的战争.夏之军会打倒冬之军的大 ...
 - 神在夏至祭降下了神谕(oracle)
		
首先这道题样例很多,先一个一个看 我们发现k为奇数是必为winter,其实可以证明 k为奇数时,k=a+(a+1)意味着可以直接实现winter士兵+1,summer士兵-1 k为偶数时,显然当m也为 ...
 - HDU 1025-Constructing Roads In JGShining's Kingdom(最长不降子序列,线段树优化)
		
分析: 最长不降子序列,n很大o(n^2)肯定超,想到了小明序列那个题用线段树维护前面的最大值即可 该题也可用二分搜索来做. 注意问题输出时的坑,路复数后加s #include <map> ...
 - 「10.10」神炎皇(欧拉函数)·降雷皇(线段树,DP)·幻魔皇
		
A. 神炎皇 很好的一道题,可能第一次在考场上遇到欧拉函数 题意:对于一个整数对 $(a,b)$,若满足 $a\times b\leq n$且$a+b$是$a\times b$的因子, 则称为神奇的数 ...
 - csps模拟67神炎皇,降雷皇,幻魔皇题解
		
题面:https://www.cnblogs.com/Juve/articles/11648975.html 神炎皇: 打表找规律?和$\phi$有关? 答案就是$\sum\limits_{i=2}^ ...
 - JZOJ P5829 HZOI 20190801 A string 线段树
		
JZOJ P5829 A. string 题面:https://www.cnblogs.com/Juve/articles/11286476.html 考场上想起了排序这道题:https://www. ...
 - 洛谷P1774 最接近神的人_NOI导刊2010提高(02) [2017年6月计划 线段树03]
		
P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门 ...
 - linux下TCP/IP及内核参数优化调优(转)
		
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...
 
随机推荐
- JVM基础知识2 垃圾收集器与内存分配策略
			
如何判断堆中的哪些对象可以被回收 主流的程序语言都是使用根搜索算法(GC Roots Tracing)判定对象是否存活 基本思路是:通过一系列名为“GC Roots”的对象作为起点,从这些节点开始向下 ...
 - 牛客网Java刷题知识点之构造函数是什么、一般函数和构造函数什么区别呢、构造函数的重载、构造函数的内存图解
			
不多说,直接上干货! 构造函数是什么? 构建创造对象时调用的函数. 构造函数是一种特殊的函数,用来在对象实例化时初始化对象的成员变量. 注意: 创建对象都必须要通过构造函数初始化. 构造函数的特点 ...
 - 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
			
不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...
 - 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录
			
一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...
 - 利用rand7()构造rand10()
			
题意 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10 参考代码 int rand7() { srand((int)time(NULL)) ...
 - matlab 常用函数(数学建模-复习)
			
常用函数 fscanf(fid, '%c', inf) -> 直接读取整个文件, 因为inf表示无穷 strtrim char(num): 将num转为ASCII字符 strtok(conten ...
 - rabbitmq的总结
			
rabbitmq的术语 组件 Server(broker):接收客户端连接,实现AMQP消息队列的路由功能的进程.简单来说就是消息队列服务器实体. Vhost:虚拟主机,一个broker里可以开设多个 ...
 - c#写word文档基础操作(自己控制样式)
			
下面一个函数,建立一个Word 文档,添加页眉.页脚,在内容中两个不同字体的Hello!!! 来自 <http://bbs.csdn.net/topics/340041961> pub ...
 - Openstack Ocata 多节点分布式部署
			
1 安装环境 1.1 安装镜像版本 建议最小化安装,这里用的是CentOS-7-x86_64-Minimal-1511. 1.2 网络规划 本文包含控制节点controller3,计算节点comput ...
 - 【干货】Html与CSS入门学习笔记12-14【完】
			
十二.HTML5标记 现代HTML html5新增的元素:header nav footer aside section article time 这些新增元素使页面结构更清晰,取代<div i ...