题目传送门

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

  1. 数论/暴力 Codeforces Round #305 (Div. 2) C. Mike and Frog

    题目传送门 /* 数论/暴力:找出第一次到a1,a2的次数,再找到完整周期p1,p2,然后以2*m为范围 t1,t2为各自起点开始“赛跑”,谁落后谁加一个周期,等到t1 == t2结束 详细解释:ht ...

  2. 暴力 Codeforces Round #305 (Div. 2) B. Mike and Fun

    题目传送门 /* 暴力:每次更新该行的num[],然后暴力找出最优解就可以了:) */ #include <cstdio> #include <cstring> #includ ...

  3. 暴力 Codeforces Round #183 (Div. 2) A. Pythagorean Theorem II

    题目传送门 /* 暴力:O (n^2) */ #include <cstdio> #include <algorithm> #include <cstring> # ...

  4. 数学/找规律/暴力 Codeforces Round #306 (Div. 2) C. Divisibility by Eight

    题目传送门 /* 数学/暴力:只要一个数的最后三位能被8整除,那么它就是答案:用到sprintf把数字转移成字符读入 */ #include <cstdio> #include <a ...

  5. 构造+暴力 Codeforces Round #283 (Div. 2) B. Secret Combination

    题目传送门 /* 构造+暴力:按照题目意思,只要10次加1就变回原来的数字,暴力枚举所有数字,string大法好! */ /************************************** ...

  6. 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 ...

  7. Codeforces Round #540 (Div. 3) C. Palindromic Matrix 【暴力】

    任意门:http://codeforces.com/contest/1118/problem/C C. Palindromic Matrix time limit per test 2 seconds ...

  8. 【二分答案】Codeforces Round #402 (Div. 2) D. String Game

    二分要删除几个,然后暴力判定. #include<cstdio> #include<cstring> using namespace std; int a[200010],n, ...

  9. codeforces水题100道 第十三题 Codeforces Round #166 (Div. 2) A. Beautiful Year (brute force)

    题目链接:http://www.codeforces.com/problemset/problem/271/A题意:给你一个四位数,求比这个数大的最小的满足四个位的数字不同的四位数.C++代码: #i ...

随机推荐

  1. 为RAC私有网络配置网卡Bonding

    在RAC的安装部署过程中.并不不过简单的安装完毕了事.整个安装过程要考虑可能出现的单点问题,当中比較重要的是私有网络. 私有网络是RAC节点间通信的通道.包含节点间的网络心跳信息.Cache fusi ...

  2. 【C】字符串,字符和字节(C与指针第9章)

    C语言没有一种显式的数据类型是字符串的. C语言存储字符串:字符串常量(不能改动).字符数组或动态分配的内存(能够改动) *************************************** ...

  3. java数据库连接池技术简单使用

    JDBCDemo.java: package com.itheima.jdbc; import java.sql.Connection; import java.sql.PreparedStateme ...

  4. Linux bash介绍与使用

    Linux————bash的简单使用 对于一个操作系统来说,shell相当于内核kernel外的一层外壳,作为用户接口.一般来说,操作系统的接口分为两类:CLI:command line interf ...

  5. dotnet new 命令

    如果想知道这个命令的详细用法,可以在打完命令之后,在输入一个" --help"即可 $ dotnet new --help.NET Initializer Usage: dotne ...

  6. gdb条件断点

    1 通用格式 break file:line if condition condition的格式:变量名 条件运算符 常量,比如 if  i == 3 2 例 #include <stdio.h ...

  7. 初识NodeJS服务端开发(Express+MySQL)

    http://www.alloyteam.com/2015/03/sexpressmysql/

  8. cocos2dx笔记1:概述

    1.核心的类和功能 CCDirector gameLoop,实现场景绘制.多个场景之间切换控制.控制游戏的停止,暂停,等生命周期. CCScene 场景类,每一个场景能够理解为一个游戏镜头.状态 CC ...

  9. HDU 2512 一卡通大冒险(dp)

    一卡通大冒险 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  10. USACO44 TimeTravel 时间旅行(链表)

    第一眼看到这题,woc,这不是主席树!?旁边HZ也表示同意,然后cGh队长就慢悠悠的过来:“想什么,USACO会有主席树!?” ↓打脸不解释,大家可以去%ta的博客(这样ta就不会D飞我了~)http ...