传送门

  回来看一眼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 奇偶数组的更多相关文章

  1. 51nod 1050 循环数组最大子段和

    题目链接:51nod 1050 循环数组最大子段和 #include<stdio.h> #include<algorithm> using namespace std; ; l ...

  2. 51nod 1050 循环数组最大子段和 单调队列优化DP

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 这个呢,这个题之前 求一遍最大值  然后求一遍最小值 ...

  3. 51Nod 1294 修改数组 —— LIS

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1294 1294 修改数组  题目来源: HackerRank ...

  4. 51nod 1050 循环数组最大子段和 (dp)

    http://www.51nod.com/onlineJudge/questionCode.html#problemId=1050&noticeId=13385 参考:http://blog. ...

  5. 51nod 1294 修改数组

    若a[i]-i(i从1开始)的值小于0,那么a[i]必须改变 若a[i]-i的值大于等于0,将a[i]-i存入新的数组中,求出新数组的最长非严格上升子序列,所得即最多的,不用改变的数. #includ ...

  6. 51Nod - 1001:数组中和等于K的数对

    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A: ...

  7. 51Nod 1050 循环数组最大子段和 | DP

    Input示例 6 -2 11 -4 13 -5 -2 Output示例 20 分析: 有两种可能,第一种为正常从[1 - n]序列中的最大子字段和:第二种为数组的total_sum - ([1-n] ...

  8. 51nod 1050 循环数组最大子段和【环形DP/最大子段和/正难则反】

    1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该 ...

  9. 51nod 1050 循环数组最大子段和【动态规划】

    N个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n] ...

随机推荐

  1. ASP.NET Web API 2 之路由配置

    Ø  简介 ASP.NET Web API 路由配置也是必须掌握的技术点之一,要真正的完全掌握和理解它也是需要一定的过程的.不过,在平常的开发过程中,对它有基本的了解就足够了.因为我们主要关注点并不在 ...

  2. Python3:OOP Demo

    方便快速回顾Python的OOP语法 ###################### # 类的私有专有方法 # ###################### # __init__ : 构造函数,在生成对 ...

  3. webpack 代码优化压缩方法

    在配置基于webpack的react单页面脚手架时,公共依赖库代码打包至vender.js中,页面逻辑代码打包至app.js中,使用webpack-bundle-analyzer分析发现,两个js中包 ...

  4. Wndows下Apache+php+Mysql环境的搭建及其涉及的知识(转)

    一.安装Apache 1. 在网上搜索以下3个文件,以及找一个地方新建一个文件夹 好吧,这里有下载链接:http://pan.baidu.com/s/1hr9IdSS 文件夹内有:apache,mys ...

  5. List总结

    List是接口,不能直接new,需要使用它的实现类 所有已知实现类:AbstractList, AbstractSequentialList, ArrayList, AttributeList, Co ...

  6. uap

    1.UAP 从前端到后端 详细教程 (一) 博主友好几篇相关的文章

  7. CMake set 语法

    参考CMake官方文档:https://cmake.org/cmake/help/v3.14/command/set.html 1. 普通变量 set(<variable> <val ...

  8. Java消息队列--ActiveMq 初体验

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...

  9. Laravel 开发环境搭建 - Windows

    Laravel 开发环境搭建 - Windows  :   https://laravel-china.org/docs/laravel-development-environment/5.5/dev ...

  10. fiddler主要图标说明

    主要图标含义说明: 正在将请求数据发往服务器 正在从服务器下载返回数据 请求过程中暂停 返回过程中暂停 请求中使用了HTTP HEAD方法; 返回中应该没有body内容 请求中使用了HTTP CONN ...