【jzoj4866】【禅与园林艺术】【树状数组】
来源:互联网 发布:淘宝 睿智表行 编辑:程序博客网 时间:2024/04/29 01:25
题目大意
有一个长度为 n 的数列{ai},为一列树木的美观值。现在有m 次询问,每次给出三个数l,r和P,询问对于所有的l <= l’ <= r’ <= r (a[l’] + a[l’ + 1] + … + a[r’]) mod P的最小值。
解题思路
发现区间长度大于模数时答案为零,所以用个树状数组维护一下就可以了。
code
#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL long long#define LD double#define max(a,b) ((a>b)?a:b)#define min(a,b) ((a>b)?b:a)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const inf=2147483647;int const maxn=5*1e4,maxp=100;int n,m,a[maxn+10],t[maxp+10];void change(int pos){ int p=pos; for(;p<=maxp;){ t[p]=max(t[p],pos); p+=p&(-p); }}int qury(int p){ int ans=0; for(;p>0;){ ans=max(ans,t[p]); p-=p&(-p); } return ans;}int main(){ //freopen("psy.in","r",stdin); //freopen("psy.out","w",stdout); freopen("garden.in","r",stdin); freopen("garden.out","w",stdout); scanf("%d%d",&n,&m); fo(i,1,n)scanf("%d",&a[i]); fo(i,1,m){ int l,r,p;scanf("%d%d%d",&l,&r,&p); if(r-l+2>p)printf("0\n"); else{ fo(j,0,p)t[j]=0; int sum=0,ans=inf; change(1); fo(j,l,r){ sum=(sum+a[j])%p; if(qury(sum+1))ans=min(ans,sum+1-qury(sum+1)); change(sum+1); } printf("%d\n",ans); } } return 0;}
0 0
- 【jzoj4866】【禅与园林艺术】【树状数组】
- 【JZOJ4866】禅与园林艺术
- [JZOJ4866] 禅与园林艺术
- JZOJ4866【NOIP2016提高A组集训第8场11.5】禅与园林艺术
- JZOJ 4866 禅与园林艺术
- XJOJ645 人类基因 禅与园林艺术 心理学概论
- 【JZOJ 4866】 【NOIP2016提高组集训】禅与园林艺术
- SSL2562 2016年提高组模拟试题 禅与园林艺术
- 【NOIP2016提高A组集训第8场11.5】禅与园林艺术
- 【NOIP2016提高A组集训第8场11.5】禅与园林艺术
- JZOJ 4866. 【NOIP2016提高A组集训第8场11.5】禅与园林艺术
- 禅与园林艺术【NOIP2016提高A组集训第8场11.5】
- JZOJ 4866 【NOIP2016提高A组集训第8场11.5】禅与园林艺术
- Mobius反演与树状数组
- 线段树与树状数组
- 线段树与树状数组
- 树状数组理论与实现
- 树状数组与线段树
- kvm虚拟化管理平台WebVirtMgr部署
- Django开发教程一:在PyCharm下搭建开发环境
- PAT(basic level) 1008 数组元素循环右移问题
- mysql中数据库名字怎么分大小写
- Java-位运算符
- 【jzoj4866】【禅与园林艺术】【树状数组】
- 读者-写者问题
- 玩转树莓派
- Java时间日期格式转换
- Regulator framework
- Servlet
- caffe安装过程中的问题
- vs2015工程配置
- 二分搜索与三分搜索的应用