传送门

  回来看一眼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. openstack项目【day23】:keystone组件HTTP协议

    阅读目录 一 为何要学习HTTP协议 二 用户上网过程 三 HTTP协议 part1 http协议概述 part2 请求协议 part3 响应协议 四 抓包分析HTTP协议 一 为何要学习HTTP协议 ...

  2. Java NIO系列教程(一) Java NIO 概述

    <I/O模型之四:Java 浅析I/O模型> 一.阻塞IO与非阻塞IO 阻塞IO: 通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据.同样,写入调用将会阻塞直至数 ...

  3. jQuery1.9及以上版本检测IE版本号

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. ...

  4. java8 按条件过滤集合

    //黄色部分为过滤条件list.stream().filter(user-> user.getId() > 5 && "1组".equals(user. ...

  5. 玩转ubuntu之初体验

    安装的是ubuntu16.04.1,分区和具体细节就不多说了,非常简单 安装完之后要做的几件事: 1.设置root密码 #设置root密码 sudo passwd root 2.检查并更新系统 #ub ...

  6. 消除导入MNIST数据集发出的警告信息

    原本导入数据集你仅需这样: # Import MNIST data from tensorflow.examples.tutorials.mnist import input_data mnist = ...

  7. LOJ #556. 「Antileaf's Round」咱们去烧菜吧

    好久没更博了 咕咕咕 现在多项式板子的常数巨大...周末好好卡波常吧.... LOJ #556 题意 给定$ m$种物品的出现次数$ B_i$以及大小$ A_i$ 求装满大小为$[1..n]$的背包的 ...

  8. curl 模拟 GET\POST 请求,以及 curl post 上传文件

    curl GET 请求 curl命令 + 请求接口的地址. curl localhost:9999/api/daizhige/article 如上,我们就可以请求到我们的数据了,如果想看到详细的请求信 ...

  9. PowerDesigner使用总结(转)

    PowerDesigner使用总结一.使用PowerDesigner生成HTML功能 使用PowerDesigner设计数据库关系以后,可以生成HTML,供团队成员进行讨论. Step 1:创建一个n ...

  10. Python-Django-常用字段和参数

    -1 表模型如果不写主键,orm会自动创建一个主键 -2 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名 ...