51nod 1617 奇偶数组
2024-10-14 04:12:29
回来看一眼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);
}
}
最新文章
- Struct2
- php获取网页内容方法总结
- javascript学习-原生javascript的小特效(简单的运动效果)
- iOS开发 判断用户是否开启了定位
- EXTJS 4.2 资料 控件之radiogroup 的用法
- mysql 存储过程项目小结
- sql服务器内部参数使用详情(存储过程)
- 关于js中的事件
- typeof操作符的返回值
- mysql备份数据库几种方法
- art patchoat
- .net core 2使用ef core 2.0以db first方法创建实体类
- git使用之错误分析及解决(持续更新)
- 《剑指offer》二叉树中和为某一值的路径
- Android+Servlet+MySql+JSON实现简单的数据查询操作--C/S架构
- 目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
- BZOJ5323:[JXOI2018]游戏
- Smart Pointer 智能指针
- Nginx服务器的启动控制
- 连接到 Linux 服务器时首先要运行的 5 个命令
热门文章
- Java使用DOM4J对XML文件进行增删改查操作
- SEO学习知识
- 第三节:SignalR之PersistentConnection模型详解(步骤、用法、分组、跨域、第三方调用)
- 关于并查集的路径压缩(Path Compress)优化
- Python 3中bytes/string的区别
- 函数的if--while流程控制
- nginx+tomcat:动静分离+https
- jdbc连接sqlserver,mysql,oracle
- Java——静态变量/方法与实例变量/方法的区别
- docker修改默认存储位置