博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 4589 Hard Nim ——FWT
阅读量:5879 次
发布时间:2019-06-19

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

【题目分析】

    位运算下的卷积问题。

    FWT直接做。

    但还是不太民白,发明者要承担泽任的。

【代码】

#include 
#include
#include
#include
using namespace std;#define F(i,j,k) for (int i=j;i<=k;++i)#define D(i,j,k) for (int i=j;i>=k;--i)#define ll long long#define maxn 100005int pr[maxn],ispr[maxn],top,n,m,a[maxn],inv,len;const int md=1e9+7;void FWT(int l,int r){ if (l==r) return ; int mid=l+r>>1; FWT(l,mid); FWT(mid+1,r); for (int i=l,j=mid+1;i<=mid;++i,++j) { int x=(a[i]+a[j])%md; a[i]=(a[i]-a[j]+md)%md; a[j]=x; }}int pow(int a,int b){ int ret=1; while (b) { if (b&1) ret=(ll)ret*a%md; a=(ll)a*a%md; b>>=1; } return ret;}void DWT(int l,int r){ if (l==r) return; int mid=l+r>>1; for (int i=l,j=mid+1;i<=mid;++i,++j) { int x=(ll)(a[j]-a[i]+md)*inv%md; a[i]=(ll)(a[i]+a[j])*inv%md; a[j]=x; } DWT(l,mid); DWT(mid+1,r);}int main(){ inv=pow(2,md-2); for (int i=2;i

  

转载于:https://www.cnblogs.com/SfailSth/p/6422825.html

你可能感兴趣的文章
远程协助
查看>>
Scrum实施日记 - 一切从零开始
查看>>
关于存储过程实例
查看>>
配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler” 解决办法...
查看>>
PHP盛宴——经常使用函数集锦
查看>>
重写 Ext.form.field 扩展功能
查看>>
Linux下的搜索查找命令的详解(locate)
查看>>
福利丨所有AI安全的讲座里,这可能是最实用的一场
查看>>
开发完第一版前端性能监控系统后的总结(无代码)
查看>>
Python多版本情况下四种快速进入交互式命令行的操作技巧
查看>>
MySQL查询优化
查看>>
【Redis源码分析】如何在Redis中查找大key
查看>>
android app启动过程(转)
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
.Net 通过MySQLDriverCS操作MySQL
查看>>