传送门

  回来看一眼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);
}
}

最新文章

  1. Struct2
  2. php获取网页内容方法总结
  3. javascript学习-原生javascript的小特效(简单的运动效果)
  4. iOS开发 判断用户是否开启了定位
  5. EXTJS 4.2 资料 控件之radiogroup 的用法
  6. mysql 存储过程项目小结
  7. sql服务器内部参数使用详情(存储过程)
  8. 关于js中的事件
  9. typeof操作符的返回值
  10. mysql备份数据库几种方法
  11. art patchoat
  12. .net core 2使用ef core 2.0以db first方法创建实体类
  13. git使用之错误分析及解决(持续更新)
  14. 《剑指offer》二叉树中和为某一值的路径
  15. Android+Servlet+MySql+JSON实现简单的数据查询操作--C/S架构
  16. 目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
  17. BZOJ5323:[JXOI2018]游戏
  18. Smart Pointer 智能指针
  19. Nginx服务器的启动控制
  20. 连接到 Linux 服务器时首先要运行的 5 个命令

热门文章

  1. Java使用DOM4J对XML文件进行增删改查操作
  2. SEO学习知识
  3. 第三节:SignalR之PersistentConnection模型详解(步骤、用法、分组、跨域、第三方调用)
  4. 关于并查集的路径压缩(Path Compress)优化
  5. Python 3中bytes/string的区别
  6. 函数的if--while流程控制
  7. nginx+tomcat:动静分离+https
  8. jdbc连接sqlserver,mysql,oracle
  9. Java——静态变量/方法与实例变量/方法的区别
  10. docker修改默认存储位置