每一单词相邻两个字母,不能同时为元音或者辅音。。。

各种姿势都可以过: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 (二染色)相关推荐

  1. Codeforces Gym 100286J Javanese Cryptoanalysis 傻逼暴力

    原题地址:http://codeforces.com/gym/100286/attachments/download/2013/20082009-acmicpc-northeastern-europe ...

  2. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks

    Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...

  3. Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)

    Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven) 题目来源: Codeforces 题意: 给出一些比赛, ...

  4. [Codeforces Gym 101651/100725B] Banal Tickets

    Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...

  5. Codeforces Gym 100513G G. FacePalm Accounting 暴力

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

  6. Codeforces Gym 100269 Dwarf Tower (最短路)

    题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game na ...

  7. Codeforces Gym 100676G Training Camp 状压dp

    http://codeforces.com/gym/100676 题目大意是告诉你要修n门课,每门课有一个权值w[i], 在第k天修该课程讲获得k*w[i]的学习点数,给出了课程与先修课程的关系,要修 ...

  8. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  9. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

    Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

最新文章

  1. 自兴人工智能——Python运算符和操作对象
  2. 独家 | 如何用Python编写你最喜欢的R函数?
  3. hdu4772 水模拟
  4. Java Web工程结构_项目结构
  5. 8.使用Exists监控ZNode的三大Change事件
  6. Nginx配置性能优化(转)
  7. python雷达图的相似度_Python教程:matplotlib实现雷达图和柱状图
  8. c语言电话订餐管理系统
  9. 60天申请软件著作权
  10. 点击reset按钮失效 input 和 button元素 作为提交、重置、按钮功用的区别
  11. 如何找对另一半--第一章 品格与择偶关系
  12. php 抓取百度快照时间,php获取网站百度快照日期的方法
  13. 成人python线上培训机构_哪些成年人正通过在线教育平台学习?看这个大数据报告就知道...
  14. python字典统计排序1_数据分析1_入门Python
  15. 我的四轴飞行器经验总结(一)
  16. 安卓手机全局背景美化教程
  17. 苹果和android充电线一根,非常实用!一根充电线,同时搞定苹果、安卓、Type-c,出门带它就够了...
  18. 基于javaweb的私人牙科诊所病历管理系统(java+jsp+css+javascript+mysql)
  19. Codeforces1063 C. Dwarves, Hats and Extrasensory Abilities(交互,二分)
  20. 关于openfire支持视频聊天

热门文章

  1. Office 部署工具
  2. 点击a标签,跳转到同一页面的指定内容,类似于点击按钮回到页面顶部效果
  3. 绝杀360恶意篡改IE,谷歌浏览器首页
  4. 医学类职业适应性测试题用哪个软件,职业适应性测试题库 性格职业适应性测试.doc...
  5. 【愚公系列】2022年01月 攻防世界-简单题-PWN-001(level0)
  6. vue3.0一句代码实现满屏红包雨
  7. 浮点数的存储,规格化
  8. 怎么使用迅捷PDF转换器转换视频?
  9. 炫彩界面库v1.4.2-360安全卫士v8.5-UI设计器使用教程
  10. PCIe Summary