51nod 1617 奇偶数组
回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3。
一眼不会做,这种东西应该慢慢找规律吧……然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊。
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std; ll n,l,r,L,R;int m,MOD;
int M(int x){while(x>=MOD)x-=MOD;while(x<)x+=MOD;return x;}
int f(ll x){x%=MOD;return (x*(x+)>>)%MOD;} struct na{
int sum,n;
na(int _sum=,int _n=):sum(_sum),n(_n){};
};
na operator + (na a,na b){return na(M(a.sum+b.sum),M(a.n+b.n));}
na cgl(na a){return na(M(a.sum*-a.n),a.n);}
na cgr(na a){return na(M(a.sum*),a.n);}
na mmh(ll n,ll l,ll r,ll L,ll R){
if (L>n||L>R||l>n||r<||R<) return na(,);
if (l<) l=;if (r>n) r=n;if (R>n) R=n;
if (l==&&r==n) return na(M(f(R)-f(L-)),(R-L+)%MOD);
ll mid=(n+)>>;
na MMH=cgl(mmh(mid,l,r,(L>>)+,R+>>))+cgr(mmh(n-mid,l-mid,r-mid,L+>>,R>>));
return MMH;
}
int main(){
scanf("%lld%d%d",&n,&m,&MOD);
while(m--){
scanf("%lld%lld%lld%lld",&l,&r,&L,&R);
printf("%d\n",mmh(n,l,r,L,R).sum);
}
}
51nod 1617 奇偶数组的更多相关文章
- 51nod 1050 循环数组最大子段和
题目链接:51nod 1050 循环数组最大子段和 #include<stdio.h> #include<algorithm> using namespace std; ; l ...
- 51nod 1050 循环数组最大子段和 单调队列优化DP
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 这个呢,这个题之前 求一遍最大值 然后求一遍最小值 ...
- 51Nod 1294 修改数组 —— LIS
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1294 1294 修改数组 题目来源: HackerRank ...
- 51nod 1050 循环数组最大子段和 (dp)
http://www.51nod.com/onlineJudge/questionCode.html#problemId=1050¬iceId=13385 参考:http://blog. ...
- 51nod 1294 修改数组
若a[i]-i(i从1开始)的值小于0,那么a[i]必须改变 若a[i]-i的值大于等于0,将a[i]-i存入新的数组中,求出新数组的最长非严格上升子序列,所得即最多的,不用改变的数. #includ ...
- 51Nod - 1001:数组中和等于K的数对
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A: ...
- 51Nod 1050 循环数组最大子段和 | DP
Input示例 6 -2 11 -4 13 -5 -2 Output示例 20 分析: 有两种可能,第一种为正常从[1 - n]序列中的最大子字段和:第二种为数组的total_sum - ([1-n] ...
- 51nod 1050 循环数组最大子段和【环形DP/最大子段和/正难则反】
1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该 ...
- 51nod 1050 循环数组最大子段和【动态规划】
N个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n] ...
随机推荐
- org.hibernate.ObjectNotFoundException: No row with the given identifier exists解决办法
hibernate-取消关联外键引用数据丢失抛异常的设置@NotFound hibernate项目里面配了很多many-to-one的关联,后台在查询数据时已经作了健全性判断,但还是经常抛出对象找不到 ...
- QGE 在齐次 Besov 空间中的准则
在 [Zhang, Zujin. On the blow-up criterion for the quasi-geostrophic equations in homogeneous Besov s ...
- luogu 3166 组合与gcd(数三角形)结论
在n*m的点格图中选取三个点满足三角形的个数 结论:点(x1,y1)和(x2,y2) 中间有gcd(x2-x1,y2-y1)+1个和两点连成的线段直线共线 那么大力枚举 x2-x1和y2-y1,然后发 ...
- C# mvc 前端调用 redis 缓存的信息
新手 这几天网上学习下redis ,自己总结下过程,怕之后忘记了,基本会用最简单的,有的还是不懂,先记下来,自己摸索的. 没有安装redis的先安装,教程:http://www.cnblogs.com ...
- sqlserver 获取所有表的字段类型等信息
USE [MultipleAnalysisDataFY] GO /****** Object: View [dbo].[selectfieldtype] Script Date: 2018/11/7 ...
- Stm32 GPIO复习
地点:中图四楼. 1.七个寄存器 配置寄存器:GPIOx_CPL.GPIOx_CPH; 数据寄存器:GPIOx_IDR.GPIOx_ODR: 置位/复位寄存器:GPIOx_BSRR 复位寄存器:GPI ...
- 【Java编程思想笔记】注解--元注解
参考文章:(小白的小小白的白 )https://blog.csdn.net/weixin_42315600/article/details/80630669 https://www.cnblogs.c ...
- dubbo服务运行的三种方式
dubbo服务运行,也就是让生产服务的进程一直启动.如果生产者进程挂掉,也就不存在生产者,消费者不能进行消费. Dubbo服务运行的三种方式如下:1.使用Servlet容器运行(Tomcat.Jett ...
- pom文件报错org.apache.maven.archiver.mavenarchiver.getmanifest
eclipse导入新的maven项目时,pom.xml第一行报错: org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.mav ...
- Gradle part1 HelloWorld
(https://spring.io/guides/gs/gradle/#scratch) ----gradle helloworld----- 1.下载后安装 Unzip the file to y ...