codeforces Gym 100286J Javanese Cryptoanalysis (二染色)
每一单词相邻两个字母,不能同时为元音或者辅音。。。
各种姿势都可以过:7个for,dp,黑白染色,dfs,并查集。。。。
最主要的思路就是相邻字母连边,把元音和辅音看成两个集合,那么有连边的两个字母一定不能出现在同一个集合中,于是想到了二分图判断的二染色。
比较坑的是,必须要出现5个元音字母
见识到了str = str + str2有多慢
#include<bits/stdc++.h> using namespace std;#define PB push_back int color[26];int G[26][26]; const int maxn = 1e5+5; char s[maxn]; bool vis[26];char mp[26];bool bipartite(int u) {for(int v = 0; v < 26; v++) if(G[u][v]) {if(color[v] == color[u]) return false;if(!color[v]){color[v] = 3 - color[u];if(!bipartite(v)) return false;}}return true; }char tab[5] = {'A','E','I','O','U'}; int tsz = 0,tsz2 = 0; char tab2[21] = {'B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z'};vector<string> word; vector<int> bcc[26][2]; int bcnt;bool dfs(int d,int cur,int s) {if(d == bcnt){if(cur == 5){for(int i = 0; i < bcnt; i++){vector<int> &v = bcc[i][(s>>i)&1];for(int j = 0; j < v.size(); j++){mp[v[j]] = tab[tsz++];}}return true;}return false;}if(dfs(d+1,cur+bcc[d][0].size(),s)||dfs(d+1,cur+bcc[d][1].size(),s|(1<<d))) return true;return false; }int main() {//freopen("in.txt","r",stdin);freopen("javanese.in","r",stdin);freopen("javanese.out","w",stdout);while(~scanf("%s",s)){word.PB(s);for(int i = 1; s[i]; i++){int u = s[i] - 'A', v = s[i-1] - 'A';G[u][v] = G[v][u] = 1;}}for(int i = 0; i < 26; i++)if(!color[i]){color[i] = 1;if(!bipartite(i)) { puts("impossible"); return 0; }for(int i = 0; i < 26; i++) if(color[i]&&!vis[i]) {vis[i] = true;bcc[bcnt][color[i]-1].PB(i);}bcnt++;}if(!dfs(0,0,0)) { puts("impossible"); }else {for(int i = 0; i < 26; i++) if(!mp[i]) mp[i] = tab2[tsz2++];for(int j = 0; j < word.size(); j++){if(j) putchar(' ');string & str = word[j];for(int i = 0; i < str.size(); i++){if('A'<=str[i]&&str[i]<='Z')putchar(mp[str[i]-'A']);else putchar(str[i]);}}putchar('\n');}return 0; }
转载于:https://www.cnblogs.com/jerryRey/p/4713981.html
codeforces Gym 100286J Javanese Cryptoanalysis (二染色)相关推荐
- Codeforces Gym 100286J Javanese Cryptoanalysis 傻逼暴力
原题地址:http://codeforces.com/gym/100286/attachments/download/2013/20082009-acmicpc-northeastern-europe ...
- Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...
- Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)
Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven) 题目来源: Codeforces 题意: 给出一些比赛, ...
- [Codeforces Gym 101651/100725B] Banal Tickets
Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...
- Codeforces Gym 100513G G. FacePalm Accounting 暴力
G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...
- Codeforces Gym 100269 Dwarf Tower (最短路)
题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game na ...
- Codeforces Gym 100676G Training Camp 状压dp
http://codeforces.com/gym/100676 题目大意是告诉你要修n门课,每门课有一个权值w[i], 在第k天修该课程讲获得k*w[i]的学习点数,给出了课程与先修课程的关系,要修 ...
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
- Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...
最新文章
- 自兴人工智能——Python运算符和操作对象
- 独家 | 如何用Python编写你最喜欢的R函数?
- hdu4772 水模拟
- Java Web工程结构_项目结构
- 8.使用Exists监控ZNode的三大Change事件
- Nginx配置性能优化(转)
- python雷达图的相似度_Python教程:matplotlib实现雷达图和柱状图
- c语言电话订餐管理系统
- 60天申请软件著作权
- 点击reset按钮失效 input 和 button元素 作为提交、重置、按钮功用的区别
- 如何找对另一半--第一章 品格与择偶关系
- php 抓取百度快照时间,php获取网站百度快照日期的方法
- 成人python线上培训机构_哪些成年人正通过在线教育平台学习?看这个大数据报告就知道...
- python字典统计排序1_数据分析1_入门Python
- 我的四轴飞行器经验总结(一)
- 安卓手机全局背景美化教程
- 苹果和android充电线一根,非常实用!一根充电线,同时搞定苹果、安卓、Type-c,出门带它就够了...
- 基于javaweb的私人牙科诊所病历管理系统(java+jsp+css+javascript+mysql)
- Codeforces1063 C. Dwarves, Hats and Extrasensory Abilities(交互,二分)
- 关于openfire支持视频聊天
热门文章
- Office 部署工具
- 点击a标签,跳转到同一页面的指定内容,类似于点击按钮回到页面顶部效果
- 绝杀360恶意篡改IE,谷歌浏览器首页
- 医学类职业适应性测试题用哪个软件,职业适应性测试题库 性格职业适应性测试.doc...
- 【愚公系列】2022年01月 攻防世界-简单题-PWN-001(level0)
- vue3.0一句代码实现满屏红包雨
- 浮点数的存储,规格化
- 怎么使用迅捷PDF转换器转换视频?
- 炫彩界面库v1.4.2-360安全卫士v8.5-UI设计器使用教程
- PCIe Summary