[xsy3132]數表

題意:一個$n\times m$的數表,數值$\in[0,4)$,你可以任意次選擇一行或一列$+1,\text{mod }4$,要最小化所有數的和

因為$n\leq10$,所以數表可以看成$m$個$n$位$4$進制數$a_{1\cdots m}$,以下使用不進位加法

定義$f(x)=\min\limits_{i=0}^3\left(x+(i\cdots i)_4\right)$,如果確定了行的方案$s$,答案就是$\sum\limits_if(a_i+s)$

記$c_x$為$x$在$a_{1\cdots m}$中的出現次數,$\text{ans}(s)=\sum\limits_xc_xf(x+s)=\sum\limits_{a+b=s}c_{-a}f(b)$,是一個高維循環卷積

高維卷積需要用到高維FFT,根據wiki,只需在每一維分別dft即可,時間復雜度$O(n4^n)$

#include<stdio.h>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod=998244353,inf=2147483647;
int mul(int a,int b){return(ll)a*b%mod;}
int ad(int a,int b){return(a+=b)>=mod?a-mod:a;}
int pow(int a,int b){int s=1;while(b){if(b&1)s=mul(s,a);a=mul(a,a);b>>=1;}return s;
}
int*w[5],iN;
void pre(){int i,j,t;for(i=2;i<=4;i<<=1){w[i]=new int[i+1];t=pow(3,(mod-1)/i);w[i][0]=1;for(j=1;j<=i;j++)w[i][j]=mul(w[i][j-1],t);}iN=pow(4,mod-2);
}
void dft4(int*a,int sh,int on){#define a(i) a[(i)<<sh]const int N=4;int i,j,k,t;swap(a(1),a(2));for(i=2;i<=N;i<<=1){for(j=0;j<N;j+=i){for(k=0;k<i>>1;k++){t=mul(a(i/2+j+k),w[i][on==1?k:i-k]);a(i/2+j+k)=ad(a(j+k),mod-t);a(j+k)=ad(a(j+k),t);}}}if(on==-1){for(i=0;i<N;i++)a(i)=mul(a(i),iN);}#undef a
}
int n,N;
void dft(int*a,int on){int i,j;for(j=0;j<n;j++){for(i=0;i<N;i++){if(!(i>>j*2&3))dft4(a+i,j*2,on);}}
}
int a[10010];
int c[1048576],f[1048576];
int t[4];
int main(){int m,i,j,x,res;scanf("%d%d",&n,&m);N=1<<n*2;for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf("%d",&x);a[j]=a[j]<<2|x;}}for(i=1;i<=m;i++)c[a[i]]++;reverse(c,c+N);for(i=0;i<N;i++){t[0]=t[1]=t[2]=t[3]=0;for(j=0;j<n;j++)t[i>>j*2&3]++;f[i]=min(min(t[1]+2*t[2]+3*t[3],t[0]+2*t[1]+3*t[2]),min(t[3]+2*t[0]+3*t[1],t[2]+2*t[3]+3*t[0]));}pre();dft(c,1);dft(f,1);for(i=0;i<N;i++)c[i]=mul(c[i],f[i]);dft(c,-1);res=inf;for(i=0;i<N;i++)res=min(res,c[i]);printf("%d",res);
}

轉載于:https://www.cnblogs.com/jefflyy/p/10809114.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448887.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 下載、安裝 maven

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 創建maven的文件夾并下載maven的tar包到此文件夾中 //進入一個目錄 cd /usr/local//創建一個文件夾 mkdir maven//下載maven的tar包…

ELK4之進階學習

1.精確查找和模糊查找(term和match的區別) match經過分析(analyer)的, term是不經過分詞,直接去倒排索引中查找精確的值. 2.建議器的簡介(最左前綴或者自帶的做) (1)直接用現成的 (2)不只是糾錯,還有建議等等. (3)優點:用戶體驗,服務器減少請求(減少壓力,太耗電了,熱量太大) (4…

女人必知 教你認清6種隱性壞男人

周圍不乏有女朋友喜歡歷數往事、追憶曾擦肩而過的男人&#xff0c;有的說如果不是自己太苛求提早要見他家人引起反感&#xff0c;早就和心愛的人儷影雙雙甜蜜快樂了&#xff0c;還有的說暗戀的男生那一夜向他表露情感、她萬分感動、可男生最后提出上床她拒絕了、因而錯失了一段…

c# 編程學習(二)

2019獨角獸企業重金招聘Python工程師標準>>> 標識符是對程序中的各個元素進行標識的名稱。 ? 只能使用字母(大寫和小寫)、數字和下劃線 ? 標識符必須以字母或下劃線開頭 變量是容納值的存儲位置。可將變量想象成容納臨時信息的容器 命名變量的建議&#xff1a; …

linux 中的 nohup 命令(設置后臺進程): nohup: ignoring input and appending output to ‘nohup.out’

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、Linux 下使用 nohup Unix/Linux下一般比如想讓某個程序在后臺運行&#xff0c;很多都是使用 & 在程序結尾來讓程序自動運行。 …

PowerDesigner表結構和字段大小寫轉換

原文&#xff1a;https://www.cnblogs.com/zhzhang/p/3946609.html 【轉】PowerDesigner表結構和字段大小寫轉換 【轉自】http://blog.csdn.net/xysh1991/article/details/8016192 使用方法&#xff1a;進入PowerDesigner&#xff0c;打開一個PDM&#xff0c;在菜單欄找到&…

解決:Could not find or load main class org.apache.rocketmq.example.quickstart.Producer

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.情景描述 &#xff1a;我只是想安裝運行 rocketmq&#xff0c;執行命令&#xff1a; sh bin/tools.sh org.apache.rocketmq.example.…

深入理解C++ 虛函數表

目錄 深入理解C 虛函數表虛函數表概述單繼承下的虛函數表派生類未覆蓋基類虛函數派生類覆蓋基類虛函數多繼承下的虛函數表無虛函數覆蓋派生類覆蓋基類虛函數鉆石型虛繼承總結幾個原則安全性問題深入理解C 虛函數表 ? C中的虛函數的作用主要是實現了多態的機制。關于多態&#…

react-native-baidu-map使用及注意問題

使用組件&#xff1a; react-native-baidu-map 獲取百度地圖API_KEY 地址&#xff1a;lbsyun.baidu.com&#xff0c;在控制臺成功創建應用后&#xff0c;就可以看到應用的api key了 安裝 yarn add react-native-baidu-map 復制代碼原生部分 Android配置 react-native link reac…

簡單掃清身體垃圾

“我們的身體在被‘設計’之初&#xff0c;就擁有了自主掃除體內垃圾的功能。只不過&#xff0c;這需要我們按照正確的方法去激發它 。”美國暢銷書作者喬斯卡曼和朱莉佩萊斯&#xff0c;在她們去年合著的《自我清潔》一書中強調了養成良好生活習慣可為身體排毒的重要性。 近日…

linux (阿里云 CentOS7) 中安裝配置 RocketMQ

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 JDK1.8的安裝&#xff1a; 1.檢查系統的JDK版本 根目錄下操作&#xff1a;cd java -version 2.檢測JDK安裝包 rpm -qa | grep ja…

Bootstrap簡介

1.使用準備 1.1 Bootstrap的下載 http://www.bootcss.com&#xff0c;下載用于生產環境的Bootstrap即可。 1.2 Bootstrap包含的內容 ● 全局CSS&#xff1a;基本的 HTML 元素均可以通過 class 設置樣式并得到增強效果&#xff1b;還有先進的柵格系統。 ● 組件&#xff1a;無數…

用TortoiseGit時的實用git命令

生成并獲取 sshkey&#xff1a; ssh-keygen -t rsa -C "xxxxxxxxxx.com" cat ~/.ssh/id_rsa.pub 克隆倉庫&#xff1a; git clone xxxxxx/xxx.git 重命名文件&#xff1a; mv file_name new_file_name git目錄區分大小寫&#xff1a; git config core.ignorecase fal…

有一種失敗叫瞎忙

很多時候&#xff0c;我們都在不知不覺的瞎忙&#xff0c;為了避免這樣的瞎忙&#xff0c;特為大家分享一個小的故事。 在一個山谷的禪房里有一位老禪師&#xff0c;他發現自己有一個徒弟非常勤奮&#xff0c;不管是去化緣&#xff0c;還是去廚房洗菜&#xff0c;這個徒弟從…

解決:org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 原因1&#xff1a;啟動 broker 方式不對。 我完全是按照官方文檔操作的&#xff0c;在網上看到說這一步是錯誤的啟動 broker 方式&#…

tomcat需要設置環境變量嗎

tomcat是一款輕量級web應用服務器&#xff0c;安裝的時候我們都是直接解壓zip包&#xff0c;然后在bin目錄下雙擊startup.bat就可以啟動了&#xff08;當然&#xff0c;前提是本地要安裝jdk并配置JAVA_HOME環境變量&#xff09; 所以我一直認為tomcat是不用配置環境變量的 但是…

Intro OpenCL Tutorial

Benedict R. Gaster, AMD Architect, OpenCL? OpenCL? is a young technology, and, while a specification has been published (www.khronos.org/registry/cl/), there are currently few documents that provide a basic introduction with examples. This article helps…

雷林鵬分享:codeigniter框架文件上傳處理

CodeIgniter 框架input表單的重新填充&#xff0c;主要是針對text、radio、checkbox、select等input表單&#xff0c;那么對于文件上傳表單file該如何處理呢? 自己的處理方式&#xff1a; //設置文件上傳屬性 $webroot $_SERVER[DOCUMENT_ROOT]; $time time(); $year date(…

jQuery基本使用

一.what 1&#xff09;.一個優秀的JS函數庫&#xff1b; 2&#xff09;.中大型WEB項目開發的首選&#xff1b; 3&#xff09;.使用了jQuery的網站超過90%&#xff1b; 4&#xff09;.http://jquery.com/; 二.why(即jq的好處) html元素選取&#xff08;選擇器&#xff09;&#…

解決:-bash: telnet: command not found

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題 -bash: telnet: command not found只是因為沒有安裝這個命令&#xff0c;不識別。 安裝命令&#xff1a; yum install telne…