[51nod1773]A国的贸易

题目链接:

51nod1773

首先可以很简单的写出每一天的DP转移式:

\(f[i][x]=\sum f[i-1][x\ xor\ k](k=0\ or\ k=2^j,0\le j<n)\)

其中\(f[i][x]\)表示第\(i\)\(x\)国货物数量\((0\le x<2^n)\)

那么因为\(k\)有固定的取值,设数组\(A\)表示当前每个国家的货物量,数组\(B\)满足\(B_k=1\)\(k\)为转移式中符合条件的\(k\),否则\(B_k\)=0)

那么每一次的转移(\((A*B)_k=\sum_{i\ xor\ j=k}A_iB_j\))就可以用\(FWT\)加速。

最后用快速幂加速\(T\)次乘法即可。

时间复杂度 \(O(2^nlog_22^n=n2^n)\)

代码:

#include <cstdio>
#include <cctype>
typedef long long ll;char In[1<<20],*p1=In,*p2=In;
#define Getchar (p1==p2&&(p2=(p1=In)+fread(In,1,1<<20,stdin),p1==p2)?EOF:*p1++)
inline int Getint()
{register int x=0,c;while(!isdigit(c=Getchar));for(;isdigit(c);c=Getchar)x=x*10+(c^48);return x;
}char Out[12000005],*p3=Out;
char St[15],*Tp=St;
inline void Putint(int x,const char c)
{do *Tp++=x%10^48;while(x/=10);do *p3++=*--Tp;while(Tp!=St);*p3++=c;
}int n,t;
int a[1<<20],b[1<<20];
const int Mod=1000000007,Inv2=(Mod+1)>>1;inline int Pow(ll a,ll b)
{ll Res=1;for(;b;b>>=1,a=a*a%Mod)if(b&1)Res=Res*a%Mod;return Res%Mod;
}void FWT(int *A,int t)
{for(register int i=2;i<=n;i<<=1)for(register int j=0,h=i>>1;j<n;j+=i)for(register int k=0,x,y;k<h;++k){x=A[j+k],y=A[j+h+k];A[j+k]=(ll)(x+y)*(t==1?1:Inv2)%Mod;A[j+h+k]=(ll)(x-y+Mod)*(t==1?1:Inv2)%Mod;}
}int main()
{n=Getint(),t=Getint(),b[0]=1;for(register int i=0;i<n;++i)b[1<<i]=1;n=1<<n;for(register int i=0;i<n;++i)a[i]=Getint();FWT(a,1),FWT(b,1);for(register int i=0;i<n;++i)a[i]=(ll)a[i]*Pow(b[i],t)%Mod;//T次转移的b数组都相同FWT(a,-1);for(register int i=0;i<n;++i)Putint(a[i],i==n-1?'\n':' ');fwrite(Out,1,p3-Out,stdout);return 0;
}

转载于:https://www.cnblogs.com/LanrTabe/p/10746642.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础学习导图

网上教程太多啦&#xff0c;先水一波导图&#xff0c;笔记日后慢慢上传~ 一款常用的软件很简单易用&#xff0c;推荐大家下载xmind vim学习相关的思维导图&#xff1a; 可以通过ubuntu自带的vim书学习&#xff08;终端输入vimtutor&#xff09;

一个学中医女生的保养身体法

首先是关于皮肤的外部保养法。1.关于头发 头发油是因为肝火太旺了&#xff0c;身体里内脏不能消化油脂&#xff0c;所以就把它排到脸上和头上了,办法是&#xff1a;每天晚上用滚烫的热水泡脚泡上半个小时&#xff0c;慢慢就会好了。注&#xff1a;水不会一直热&#xff0c;所以…

实现 SSH 无密码登录 、 ssh 常用命令

OpenSSH是互联网技术用户所依赖的SSH连接工具的免费版本。 telnet&#xff0c;rlogin 和 ftp 用户可能没有意识到他们的密码是通过互联网传输的&#xff0c;并且是未加密的。 但是 OpenSSH 加密所有流量&#xff08;包括密码&#xff09;以有效消除窃听&#xff0c;连接劫持和其…

团队项目冲刺第一天

今天&#xff0c;开了第一天的团队会议&#xff0c;我们把团队任务分配了一下&#xff0c;今天的任务是学习了一下Android开发的基础知识&#xff0c;看了哔哩哔哩上面的教学视频&#xff0c;对于一些转换页面&#xff0c;按钮&#xff0c;文本的配置有所了解&#xff0c;明天开…

简单的C语言五子棋(两种模式:移动光标输入坐标和移动光标按键)

五子棋&#xff1a; 需要的数据&#xff1a; 1、定义棋盘数组 2、定义变量用于记录棋子位置 3、定义角色变量 业务逻辑&#xff1a; 是否需要对数据进行初始化 for(;; ) { 1、清理屏幕&#xff0c;显示棋盘 2、落子 坐标要合法&#xff0c;原位置不能有棋子 3、检查是否形成五子…

nodejs-- vuex中mapActions

mapActions() 返回的是一个对象, 用了 ... 扩展符后&#xff0c;才可以放进一个对象里&#xff0c;和其他组件内定义的 method 在同一个 methods 对象。 { methods: mapActions() // 如果没有其它组件内的定义的方法,可以这样写}{ methods: { ...mapActions()&#xff0c;// 如…

怎样让手中的钱成为生财工具

大多数人之所以跟钱之间总有不可逾越的鸿沟&#xff0c;是因为他们不知道钱的活动能力。 钱&#xff0c;跟人一样是有生命的。每一块钱就是你的一个职员&#xff0c;你的目标是让你的职员勤奋工作&#xff0c;经过时间的沉淀&#xff0c;人员会日益壮大&#xff0c;工作效率会…

Android 开发知识集合目录

深入理解java的形参和实参&#xff1a; www.cnblogs.com/xuxinstyle/… sharepreference 与 数据库 区别&#xff1a; Android 各版特点&#xff1a; Android发展史&#xff08;Android各版本特性-知识篇&#xff09; blog.csdn.net/u012964796/…

mysql 查外键关联关系 (指定被引用表,查哪些表对其有外键引用)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在一个业务功能中要求先清空一张基础表&#xff08;user表&#xff09;再插入一批新数据。 在删除过程中报错为其它表有外键引用&#…

Shell脚本语言基础总结

*** 一&#xff0c;shell教程 Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言 二&#xff0c;shell环境 跟 JavaScript、php 编程一样&#xff0c;只要有一个能编写代码的文本编辑器和一…

Error: Can't resolve 'babel-loader'

在控制台中运行命令“webpack”&#xff0c;出现错误&#xff1a;“ERROR in Entry module not found: Error: Cant resolve babel-loader in.........” 解决方法是在控制台输入命令“npm install babel-loader --save"。转载于:https://www.cnblogs.com/Niuxingyu/p/107…

docker 4 section

镜像和容器的关系&#xff1a; 镜像是容器的基础&#xff0c;每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础。我们可以使用的都是来自于 Docker Hub 的镜像。直接使用这些镜像是可以满足一定的需求&#xff0c;而当这些镜像无法直接满足需求时&#xff0c;我们…

日本专家给出的存钱高招(图)

专家认为&#xff0c;对自己钱包里装了多少钱没有数的人&#xff0c;是个有浪费趋向的人&#xff0c;如果改变这一习惯&#xff0c;一定会让你的存款增多不少。 人们常说&#xff0c;犹太人善于赚钱&#xff0c;美国人善于花钱&#xff0c;中国人和日本人善于存钱。在日本现代…

精读《V8 引擎 Lazy Parsing》

1. 引言 本周精读的文章是 V8 引擎 Lazy Parsing&#xff0c;看看 V8 引擎为了优化性能&#xff0c;做了怎样的尝试吧&#xff01; 这篇文章介绍的优化技术叫 preparser&#xff0c;是通过跳过不必要函数编译的方式优化性能。 2. 概述 & 精读 解析 Js 发生在网页运行的关键…

Git和SVN的区别,Git的使用方法大全

什么是Git: Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同&#xff0c;它采用了分布…

详解 springboot - 查看、修改内置 tomcat 版本

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、解析Spring Boot父级依赖 ?123456<parent> <groupId>org.springframework.boot</groupId> <artifactId>sp…

做生意的技巧 年入百万不是梦(图)

先介绍一下背景&#xff1a;这个表弟是土妖亲大姨家的&#xff0c;从小不爱学习&#xff0c;但是脑子活络。 现在在江苏省泰州市姜堰区的一个农贸市场&#xff0c;开一个小餐馆。餐馆面积50多平米&#xff0c;年收入120万左右。 少即是多——“我的小饭店只卖25种菜” 表弟…

reboot重启失败的解决方法

今天突然碰到用reboot命令不能重启&#xff0c;上网找原因&#xff1a; reboot不能重启可能是内核正在执行一些进程&#xff0c;reboot发送的信号被阻塞了&#xff0c;估计等一会内核从内核空间跳到用户空间的时候&#xff0c;发现有信号被阻塞了&#xff0c;再执行这个阻塞的信…

BUAA-OO 第二单元作业“电梯调度”总结与思考

一、需求分析 利用java线程的相关知识实现 1&#xff09;单部多线程傻瓜调度&#xff08;FAFS&#xff09;电梯 2&#xff09;单部多线程可捎带调度&#xff08;ALS&#xff09;电梯 3&#xff09;多部多线程智能&#xff08;SS&#xff09;调度电梯 二、思路分析 1、基于度量的…

解决报错 javax.persistence.TransactionRequiredException: Executing an update/delete query

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题。 场景是我想要执行一条很简单的删除语句。 JPA方式中使用本地sql , 写法如下&#xff1a; ModifyingQuery("delete fr…