二分查找/暴力 Codeforces Round #166 (Div. 2) B. Prime Matrix
/*
二分查找/暴力:先埃氏筛选预处理,然后暴力对于每一行每一列的不是素数的二分查找最近的素数,更新最小值
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int MAXN = 5e2 + ;
const int MAXM = 1e6 + ;
const int INF = 0x3f3f3f3f;
int a[MAXN][MAXN];
int mn_r[MAXN];
int mn_c[MAXN];
bool is_prime[MAXM];
int prime[MAXM];
int n, m, x, y;
int tot; void solve(void)
{
for (int i=; i<=1e6; ++i) is_prime[i] = true;
is_prime[] = false;
for (int i=; i<=1e6; ++i)
{
if (is_prime[i])
{
prime[++tot] = i;
for (int j=i*; j<=1e6; j+=i) is_prime[j] = false;
}
}
} bool check_r(void)
{
memset (mn_r, , sizeof (mn_r));
bool ok = true;
for (int i=; i<=n; ++i)
{
for (int j=; j<=m; ++j)
{
if (!is_prime[a[i][j]])
{
ok = false; mn_r[j]++;
}
}
} return ok;
} bool check_c(void)
{
memset (mn_c, , sizeof (mn_c));
bool ok = true;
for (int j=; j<=m; ++j)
{
for (int i=; i<=n; ++i)
{
if (!is_prime[a[i][j]])
{
ok = false; mn_c[j]++;
}
}
} return ok;
} int sum_r(void)
{
int ans = INF; int tmp = ;
for (int i=; i<=n; ++i)
{
tmp = ; bool ok = true;
for (int j=; j<=m; ++j)
{
if (!is_prime[a[i][j]])
{
int p = lower_bound (prime+, prime++tot, a[i][j]) - prime;
if (p <= tot) tmp += prime[p] - a[i][j];
else {ok = false; break;}
}
}
if (ok) ans = min (ans, tmp);
} return ans;
} int sum_c(void)
{
int ans = INF; int tmp = ;
for (int j=; j<=m; ++j)
{
tmp = ; bool ok = true;
for (int i=; i<=n; ++i)
{
if (!is_prime[a[i][j]])
{
int p = lower_bound (prime+, prime++tot, a[i][j]) - prime;
if (p <= tot) tmp += prime[p] - a[i][j];
else {ok = false; break;}
}
}
if (ok) ans = min (ans, tmp);
} return ans;
} int main(void) //Codeforces Round #166 (Div. 2) B. Prime Matrix
{
// freopen ("B.in", "r", stdin); solve ();
while (scanf ("%d%d", &n, &m) == )
{
for (int i=; i<=n; ++i)
{
for (int j=; j<=m; ++j)
scanf ("%d", &a[i][j]);
} if (check_r () || check_c ()) {puts (""); continue;}
else printf ("%d\n", min (sum_r (), sum_c ()));
} return ;
}
二分查找/暴力 Codeforces Round #166 (Div. 2) B. Prime Matrix的更多相关文章
- 数论/暴力 Codeforces Round #305 (Div. 2) C. Mike and Frog
题目传送门 /* 数论/暴力:找出第一次到a1,a2的次数,再找到完整周期p1,p2,然后以2*m为范围 t1,t2为各自起点开始“赛跑”,谁落后谁加一个周期,等到t1 == t2结束 详细解释:ht ...
- 暴力 Codeforces Round #305 (Div. 2) B. Mike and Fun
题目传送门 /* 暴力:每次更新该行的num[],然后暴力找出最优解就可以了:) */ #include <cstdio> #include <cstring> #includ ...
- 暴力 Codeforces Round #183 (Div. 2) A. Pythagorean Theorem II
题目传送门 /* 暴力:O (n^2) */ #include <cstdio> #include <algorithm> #include <cstring> # ...
- 数学/找规律/暴力 Codeforces Round #306 (Div. 2) C. Divisibility by Eight
题目传送门 /* 数学/暴力:只要一个数的最后三位能被8整除,那么它就是答案:用到sprintf把数字转移成字符读入 */ #include <cstdio> #include <a ...
- 构造+暴力 Codeforces Round #283 (Div. 2) B. Secret Combination
题目传送门 /* 构造+暴力:按照题目意思,只要10次加1就变回原来的数字,暴力枚举所有数字,string大法好! */ /************************************** ...
- Codeforces Round #166 (Div. 2) A. Beautiful Year【暴力枚举/逆向思维/大于当前数且每个位数不同】
A. Beautiful Year time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces Round #540 (Div. 3) C. Palindromic Matrix 【暴力】
任意门:http://codeforces.com/contest/1118/problem/C C. Palindromic Matrix time limit per test 2 seconds ...
- 【二分答案】Codeforces Round #402 (Div. 2) D. String Game
二分要删除几个,然后暴力判定. #include<cstdio> #include<cstring> using namespace std; int a[200010],n, ...
- codeforces水题100道 第十三题 Codeforces Round #166 (Div. 2) A. Beautiful Year (brute force)
题目链接:http://www.codeforces.com/problemset/problem/271/A题意:给你一个四位数,求比这个数大的最小的满足四个位的数字不同的四位数.C++代码: #i ...
随机推荐
- Cg入门6:函数2
内建函数分为四类: 1.数学函数 2.几何函数 3.纹理函数 4.导数函数:事实上就是片段函数
- 【转】apache storm 内置的定时机制
原文:http://www.cnblogs.com/kqdongnanf/p/4778672.html ------------------------------------------------ ...
- CentOS系统如何设置服务开机自动运行
centos安装好apache,mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了.例如要开机 ...
- samba.conf (香港中华厨房有限公司实例)
# Sample configuration file for the Samba suite for Debian GNU/Linux. # # This is the main Samba con ...
- ReLu(修正线性单元)、sigmoid和tahh的比较
不多说,直接上干货! 最近,在看论文,提及到这个修正线性单元(Rectified linear unit,ReLU). Deep Sparse Rectifier Neural Networks Re ...
- 关于axis2.1.6与websphere7的包冲突问题的解决方式
1,复制axis2.1.6内的module目录内的全部文件到lib 并改动扩展名为.jar 2,删除module目录(可选,不删除也能够) 3,部署到was 4,设置was相应应用程序的类载入方案为父 ...
- linux 多个文件中查找字符串 hadoop 3 安装 调试
http://www.cnblogs.com/iLoveMyD/p/4281534.html 2015年2月9日 14:36:38 # find <directory> -type f - ...
- YTU 2953: A代码填充--学画画
2953: A代码填充--学画画 时间限制: 1 Sec 内存限制: 128 MB 提交: 62 解决: 52 题目描述 最近小平迷上了画画,经过琨姐的指导,他学会了RGB色彩的混合方法.对于两种 ...
- Android控件之HorizontalScrollView 去掉滚动条
在默认情况下,HorizontalScrollView控件里面的内容在滚动的情况下,会出现滚动条,为了去掉滚动条, 只需要在<HorizontalScrollView/>里面加一句 and ...
- CodeForces-652D:Nested Segments(树状数组+离散化)
You are given n segments on a line. There are no ends of some segments that coincide. For each segme ...