CF1098B/CF1099E Nice table
题目地址:CF1098B/CF1099E Nice table
显然,a nice table需要满足如下条件:
要么,每行都由两个字符交替组成,相邻两行的字符均不相同
要么,每列都由两个字符交替组成,相邻两列的字符均不相同
然后枚举就完事啦
代码:
#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const string str = "ATGC";
vector<string> s, tmp, ans;
int main() {
ios::sync_with_stdio(0);
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++) {
string st;
cin >> st;
s.push_back(st);
}
int ansmin = INF, now;
for (int c1 = 0; c1 < 4; c1++)
for (int c2 = c1 + 1; c2 < 4; c2++) {
string t;
set<int> st;
for (int i = 0; i < 4; i++) st.insert(i);
st.erase(c1);
st.erase(c2);
set<int>::iterator it = st.begin();
t.push_back(str[c1]);
t.push_back(str[c2]);
t.push_back(str[*(it++)]);
t.push_back(str[*it]);
now = 0;
tmp.clear();
for (int i = 0; i < n; i++) {
tmp.push_back("");
int b = (i & 1) << 1;
int cnt1 = 0, cnt2 = 0;
for (int j = 0; j < m; j++) {
if (s[i][j] != t[b+(j&1)]) ++cnt1;
if (s[i][j] != t[b+((j&1)^1)]) ++cnt2;
}
if (cnt1 < cnt2)
for (int j = 0; j < m; j++)
tmp[i].push_back(t[b+(j&1)]);
else
for (int j = 0; j < m; j++)
tmp[i].push_back(t[b+((j&1)^1)]);
now += min(cnt1, cnt2);
}
if (now < ansmin) {
ans = tmp;
ansmin = now;
}
now = 0;
tmp.clear();
for (int i = 0; i < n; i++) tmp.push_back("");
for (int j = 0; j < m; j++) {
int b = (j & 1) << 1;
int cnt1 = 0, cnt2 = 0;
for (int i = 0; i < n; i++) {
if (s[i][j] != t[b+(i&1)]) ++cnt1;
if (s[i][j] != t[b+((i&1)^1)]) ++cnt2;
}
if (cnt1 < cnt2)
for (int i = 0; i < n; i++)
tmp[i].push_back(t[b+(i&1)]);
else
for (int i = 0; i < n; i++)
tmp[i].push_back(t[b+((i&1)^1)]);
now += min(cnt1, cnt2);
}
if (now < ansmin) {
ans = tmp;
ansmin = now;
}
}
for (int i = 0; i < n; i++) cout << ans[i] << endl;
return 0;
}
CF1098B/CF1099E Nice table的更多相关文章
- FCKeditor使用方法技术详解
转载自 http://www.cnblogs.com/cchyao/archive/2010/07/01/1769204.html 1.概述 FCKeditor是目前最优秀的可见即可得网页编辑器之一, ...
- mysql slow query---pt-query-digest----db structure consistency,monitor table records before and after transaction.
将数据库脚本纳入版本管理是很必要的,尤其对于需要在客户那里部署升级的系统. 对于Python Django等框架,由于数据库是通过Model生成的,因此框架本身包括数据库升级工具,并通过代码版本间接管 ...
- 学习mongo系列(一) win/mac安装 解析 连接
一.安装mongo数据库 下载链接https://www.mongodb.org/downloads, 在执行如下命令的时候事先按照目录新建如下的目录:(如果数据库安装在D盘就在D盘的根目录下建)&q ...
- SAP接口编程 之 JCo3.0系列(03) : Table参数
Table参数作为export parameter BAPI_COMPANYCODE_GETDETAIL是一个适合演示的函数,没有import paramter参数,调用后COMPANYCODE_GE ...
- 在iOS中怎样创建可展开的Table View?(下)
接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...
- 在iOS中怎样创建可展开的Table View?(上)
原文地址 本文作者:gabriel theodoropoulos 原文:How To Create an Expandable Table View in iOS 原文链接 几乎所有的app都有一个共 ...
- Html table 实现Excel多格粘贴
Html table 实现Excel多格粘贴 电商网站的后台总少不了各种繁杂数据的录入,旁边的运营妹子录完第138条商品的时候,终于忍不住转身吼到:为什么后台的录入表不能像Excel那样多行粘贴!!! ...
- iOS开发——OC篇&消息传递机制(KVO/NOtification/Block/代理/Target-Action)
iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action) 今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Fou ...
- css控制div显示/隐藏方法及2种方法比较原码 - czf164的专栏 - 博客频道 - CSDN.NET
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
随机推荐
- Shell 同步时间脚本
Linux系统同步时间脚本 Linux操作系统,如果时间和网络时间差距太大的话.可能会导致程序,进程启动不了.所以linux系统时间同步显得尤为重要,本文在借鉴网上众多资料后,以centos_6.X系 ...
- 理解I/O:随机和顺序
转自:https://blog.csdn.net/BaiWfg2/article/details/52885287 原文:http://www.violin-memory.com/blog/under ...
- SpringBoot集成原生redis
redis的使用之一是Spring-data-redis,前面有介绍. 本篇介绍原生redis也就是jedis.这个效率更高 1.maven引入依赖 <!--springBoot-->&l ...
- lasticsearch最佳实践之分片使用优化
一.遇到的问题 与大多数分布式系统一样,Elasticsearch按照一定的Hash规则把用户数据切分成多个分片,然后打散到不同机器进行存储,从而实现大规模数据的分布式存储. cluster.png ...
- Python数据挖掘和机器学习
-----------------------------2017.8.9--------------------------------- 先占个坑 在接下来的一个半月里(即从现在到十一) 我将结合 ...
- 'DataVisualization' does not exist in the namespace 'System.Web.UI'一例解决办法
之前项目是vs2010 aspx项目,用vs2017打开后,非运行状态下有一行错误:CS0234 C# The type or namespace name 'DataVisualization' d ...
- 使用Jackson时转换JSON时,日期格式设置
在我们使用jackjson时时间默认输出如下: 输出是一串时间戳,不符合我们的要求,所以想到jackjson对时间的处理有他默认的格式,然后网上搜集各种资料,得出一下方式可以解决 取消jackjson ...
- Creating A Moddable Unity Game
前言: 对游戏进行修改与拓展(MOD)是我一直以来感兴趣的东西,我的程序生涯,也是因为在初中接触到GBA口袋妖怪改版开始的,改过也研究过一些游戏的MOD实现方式,早就想在自己的游戏中实现“MOD系统” ...
- SQLMap用户手册【超详细】
http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sqlmap这么一个url的时候,它会: 1.判断可注入的参数 2.判断可以用那种SQL注 ...
- bus实现兄弟组件传值
传递的地方:两个组件都要引入这个公共的bus中转函数 Bus.js文件相当于一个公共的对象: 传递的文件中写入这个方法: 兄弟组件通过点击事件输出参数,需要的组件来接收传递过来的参数: