【暴力】codeforces 838A Binary Blocks
Link:http://codeforces.com/problemset/problem/838/A
#include <bits/stdc++.h>
using namespace std;
/*
838A Binary Blocks
題意:給出一個矩陣,值為0或1,可以將矩陣分成多個k*k的小矩陣,小矩陣超出界限的補0,
將每個小矩陣都變成一樣的值,問需要改變最小的次數。
題解:當小矩陣k=2時,明顯比k為2的倍數的改變次數小,因為k越小變動的方法越多,
那麼只要列舉k為所有質數,那麼實質時間複雜度為O(N*N)。
求小矩陣的需要改變的值可以用字首和求1的個數,k*k減一下是0的個數,取1和0比較小的個數。
*/
const int N = 2510;
const int INF = 0x3f3f3f3f;
int prime[400];
bool isprime[N];
int k;
void init(){
k = 0;
for(int i = 2; i <= N; i++)
{
if(!isprime[i]){
prime[k++] = i;
for(int j = i+i; j <= N; j+=i)
isprime[j] = 1;
}
}
}
char s[N];
int ma[N*2][N*2],pre[N*2][N*2];
int main()
{
init();
memset(pre,0,sizeof(pre));
int n,m;
scanf("%d%d",&n,&m);
for(int i = 1; i < 2*N; i++)
{
if(i <= n)
scanf("%s",s+1);
int tmp = 0;
for(int j = 1; j <= m; j++)
{
if(i > n)
ma[i][j] = 0;
else
{
if(s[j] == '0')
ma[i][j] = 0;
else{
ma[i][j] = 1;
tmp++;
}
}
pre[i][j] = tmp+pre[i-1][j];
}
for(int j = m+1; j < N*2; j++)
pre[i][j] = tmp+pre[i-1][j];
}
int ans = INF;
for(int f = 0; f < k; f++)
{
int p = prime[f];
// printf("%d\n",p);
int res = 0;
for(int i = p; i < n+p; i+=p)
{
for(int j = p; j < m+p; j+=p)
{
int ff = pre[i][j]+pre[i-p][j-p]-pre[i][j-p]-pre[i-p][j];
// printf("%d %d %d\n",i,j,ff);
res = res + min(p*p-ff,ff);
}
}
// printf("res = %d\n",res);
ans = min(ans,res);
}
printf("%d\n",ans);
return 0;
}
相關文章
- Codeforces 114A-Cifera(暴力)
- Codeforces Round #336 (Div. 2) B 暴力
- codeforces 1216E1(數學+暴力)
- CodeForces - 976A:Minimum Binary Number(水題)
- Codeforces 626D Jerry's Protest(暴力列舉+概率)
- Blocks Programming Helper ↗ Blocks in System APIsBloCAPI
- Codeforces #698 (Div. 2) E. Nezzar and Binary String 題解
- JavaScript需要BlocksJavaScriptBloC
- Codeforces Round #537 (Div. 2)B. Average Superhero Gang Power (貪心+暴力)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) B 暴力
- Blocks的實現BloC
- Overview of Data Blocks(二)ViewBloC
- Dumping Oracle BlocksOracleBloC
- dba_tables.blocks、dba_tables.empty_blocks和dba_segments.blocks之間是什麼關係BloC
- (譯)窺探Blocks(2)BloC
- iOS-Blocks學習iOSBloC
- Code::Blocks Debug配置BloC
- (譯)窺探Blocks (1)BloC
- Codeforces 617E XOR and Favorite Number (區間異或和 莫隊演算法 分塊暴力)演算法
- [linux]安裝code::blocksLinuxBloC
- Autonomous PL/SQL Blocks (151)SQLBloC
- Format of Index Blocks (207)ORMIndexBloC
- Codeforces 1070H - BerOS File Suggestion 暴力 (2018-2019 ICPC, NEERC)ROS
- 暴力破解
- Blocks深入理解和詳解BloC
- Code::Blocks專案配置基礎BloC
- oracle plsql(一)_binary_float_binary_doubleOracleSQL
- 用code::blocks寫C/C++程式BloCC++
- Named vs Anonymous Pl/sql Blocks testingSQLBloC
- dumping_oracle_blocks翻譯(二)OracleBloC
- Why should we copy blocks rather than retain?BloCAI
- code::blocks不能除錯的可能原因BloC除錯
- api暴力獲取API
- C++暴力指南C++
- Convert string to binary and binary to string in C#C#
- MySQL Binary LogMySql
- SIRF binary protocolProtocol
- 南洋理工:研究發現暴力遊戲與暴力行為無關遊戲