博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[AH2017/HNOI2017]礼物
阅读量:4654 次
发布时间:2019-06-09

本文共 1083 字,大约阅读时间需要 3 分钟。

m很小100,一个O(nm)的复杂度

两个手环增加非负整数亮度,等于其中一个增加一个整数亮度(可以为负)

显而易见,最多增加[-m,m]个亮度

考虑O(n)枚举对齐方式,O(m)枚举差距的亮度

亮度增加的时候,维护平方和,只用维护之前的平方和,所有项的和即可

但是每次旋转,初始的对齐位置会发生改变,所以暴力可以O(N^2)

我们只关心初始的平方和

拆开,其实就要求∑ai*bj

由于旋转,所以b倍长,

对应下标差一定,求乘积

把a数组reverse,然后NTT快乐搞定

 

开始没有注意两个环都可以增亮,,所以只枚举了[0,m],没想到有95pts、。。。

代码:

#include
#define reg register int#define il inline#define numb (ch^'0')#define int long longusing namespace std;typedef long long ll;il void rd(int &x){ char ch;x=0;bool fl=false; while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true); for(x=numb;isdigit(ch=getchar());x=x*10+numb); (fl==true)&&(x=-x);}namespace Miracle{const int N=100000+5;const int mod=998244353;const int G=3;const int GI=332748118;const int inf=0x3f3f3f3f;int n,m;ll qm(ll x,ll y){ ll ret=1; while(y){ if(y&1) ret=ret*x%mod; x=x*x%mod; y>>=1; } return ret;}int rev[8*N];ll a[8*N],b[8*N];void NTT(ll *f,int n,int c){ for(reg i=0;i
>1]>>1)|((i&1)?(len>>1):0); }// for(reg i=0;i
View Code

 

转载于:https://www.cnblogs.com/Miracevin/p/10251385.html

你可能感兴趣的文章
使用Android NDK和Java测试Linux驱动
查看>>
java_设计模式_组合模式_Composite Pattern(2016-08-12)
查看>>
Java开发环境的搭建以及使用eclipse从头一步步创建java项目
查看>>
webpack Cannot find module 'webpack/schemas/WebpackOptions.json'
查看>>
分布式系统的负载均衡 | 架构干货
查看>>
关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection)
查看>>
HDOJ2000(ASC||码排序)【sort函数】
查看>>
关于js中"window.location.href"、"location.href"、"parent.location.href"、"top.location.href"的用法(转)...
查看>>
poj2393
查看>>
mysql in 的另一种替换方法
查看>>
基于注解的Spring AOP的配置和使用--转载
查看>>
无法直接启动带有“类库输出类型”的项目
查看>>
MySQL-05 用户管理
查看>>
Flex【原创】移动设备相册图片浏览功能
查看>>
Nodejs on windows 10
查看>>
HDU1233--还是畅通工程(最小生成树)
查看>>
linux——实际工作中如何使用linux
查看>>
设置 jsp 表格相邻两行的颜色不一样
查看>>
性能指标分析
查看>>
Jenkins企业应用
查看>>