题目传送门

 /*
二分查找/暴力:先埃氏筛选预处理,然后暴力对于每一行每一列的不是素数的二分查找最近的素数,更新最小值
*/
#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 ;
}

最新文章

  1. JS和jQuery中的事件总结(一)
  2. jsp中用EL读取了数据库里面的时间,怎么设置格式显示的格式
  3. haskell中的monad
  4. 详细地jsoncpp编译方法 和 vs2010中导入第三方库的方法
  5. C++学习指南
  6. Linq中Union与Contact方法用法对比
  7. JQuery简单实现图片轮播效果
  8. MSSQL显错注入爆数字型数据的一点思考
  9. QA笑话----杂思
  10. BZOJ 2733 HNOI 2012 永无乡 平衡树启示式合并
  11. 将图片保存成png 或者jpg格式
  12. Oracle 与Mysql区别
  13. 理解go的闭包
  14. python学习之切片
  15. [No0000CB]如何在命令行(cmd)通过TCP/IP端口(port)查询所在的进程号(pid)或进程名称,并终止该进程
  16. (转)stm32硬件IIC
  17. HttpLuaModule——翻译(一)
  18. Spring----Spring Boot Rest的使用方法
  19. Oracle 的PL/SQL语言使用
  20. iOS- 利用AFNetworking(AFN) - 实现文件上传

热门文章

  1. 【转】海量数据处理算法-Bloom Filter
  2. hdoj 1533 Going Home 【最小费用最大流】【KM入门题】
  3. MySQL基础笔记(二) 完整性约束
  4. Pierce振荡器设计
  5. IE9版本号下面ajax 跨域问题解决
  6. How to Use SFTP ?
  7. android各种菜单使用介绍
  8. make eval builtin function
  9. YTU 1007: Redraiment猜想
  10. 一步一步学Silverlight 2系列(4):鼠标事件处理