[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.pswp.cn/news/449180.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449180.shtml
英文地址,請注明出處:http://en.pswp.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…