【BFS】【枚举】HihoCoder - 1251 - The 2015 ACM-ICPC Asia Beijing Regional Contest - C - Today Is a Rainy Day
题意:给你两个只由1~6组成的串,问你B串至少要经过几次操作变成A串。
一次操作要么选择一个种类的数,将其全部变成另一种类;要么选择一个数,将其变为另一个数。
可以证明,一定先进行一定数量的第一种操作,然后再进行一定数量的第二种操作。
所以可以BFS预处理序列每种数要变成哪种数所需要的代价。初始状态是123456,代表1->1,2->2,...,6->6,一共才6^6种状态。
然后再枚举一遍所有状态,把该种状态下,剩下的仍然不符的数强行变过去就行了,然后在所有答案中取个最小的。
- #include<cstdio>
- #include<queue>
- #include<cstring>
- using namespace std;
- int d[700000];
- bool vis[700000];
- int n,pw[10];
- queue<int>q;
- char s[125],s2[125];
- int main(){
- // freopen("c.in","r",stdin);
- memset(d,0x7f,sizeof(d));
- pw[0]=1;
- for(int i=1;i<=6;++i){
- pw[i]=pw[i-1]*10;
- }
- q.push(123456);
- vis[123456]=1;
- d[123456]=0;
- int t[7];
- while(!q.empty()){
- bool used[7]={0};
- int U=q.front(); q.pop();
- for(int i=1;i<=6;++i){
- if(!used[i]){
- int e=0;
- int wei=U/pw[i-1]%10;
- for(int j=i;j<=6;++j){
- if(wei==U/pw[j-1]%10){
- used[j]=1;
- t[++e]=j;
- }
- }
- for(int j=1;j<=6;++j){
- if(j!=wei){
- int tmp=U;
- for(int k=1;k<=e;++k){
- tmp+=(j-wei)*pw[t[k]-1];
- }
- if(!vis[tmp]){
- vis[tmp]=1;
- d[tmp]=d[U]+1;
- q.push(tmp);
- }
- }
- }
- }
- }
- }
- while(scanf("%s%s",s2+1,s+1)!=EOF){
- int ans=2147483647;
- n=strlen(s+1);
- for(int i=1;i<=6;++i){
- for(int j=1;j<=6;++j){
- for(int k=1;k<=6;++k){
- for(int l=1;l<=6;++l){
- for(int p=1;p<=6;++p){
- for(int q=1;q<=6;++q){
- int x=i*100000+j*10000+k*1000+l*100+p*10+q;
- if(d[x]<2000000000){
- int cnt=0;
- for(int pp=1;pp<=n;++pp){
- int tt;
- if(s[pp]=='1'){
- tt=i;
- }
- else if(s[pp]=='2'){
- tt=j;
- }
- else if(s[pp]=='3'){
- tt=k;
- }
- else if(s[pp]=='4'){
- tt=l;
- }
- else if(s[pp]=='5'){
- tt=p;
- }
- else{
- tt=q;
- }
- if(tt+'0'!=s2[pp]){
- ++cnt;
- }
- }
- ans=min(ans,cnt+d[x]);
- }
- }
- }
- }
- }
- }
- }
- printf("%d\n",ans);
- }
- return 0;
- }
【BFS】【枚举】HihoCoder - 1251 - The 2015 ACM-ICPC Asia Beijing Regional Contest - C - Today Is a Rainy Day的更多相关文章
- hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...
- (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )
http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others) Memo ...
- (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)
http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others) ...
- 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków
ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...
- 2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred)
2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred) easy: ACE ...
- HDU 5889 Barricade 【BFS+最小割 网络流】(2016 ACM/ICPC Asia Regional Qingdao Online)
Barricade Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- HDU 5458 Stability(双连通分量+LCA+并查集+树状数组)(2015 ACM/ICPC Asia Regional Shenyang Online)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 Problem Description Given an undirected connecte ...
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...
随机推荐
- mysql查询日期相关的
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- 使sqoop能够启用压缩的一些配置
在使用sqoop 将数据库表中数据导入至hdfs时 配置启用压缩 hadoop 的命令 检查本地库支持哪些 bin/hadoop checknative 需要配置native 要编译版本 ...
- 【leetcode 简单】第十九题 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...
- 用C++写程序的一些感悟
前言 近期使用C++有了一些心得很感悟,这里整理一下. 心得1 如果只会使用LabVIEW写程序,还想要进一步深入程序设计,一定要学习一门文本语言. 什么是会用LabVIEW 会用是个比较笼统的概念. ...
- Producer Flow Control 和 vmQueueCursor
ActiveMQ可以开启或关闭生产者流量控制Producer Flow Control ,基本原理是producer 发送一条消息会收到broker返回的ack响应,当磁盘或内存快满的时候broker ...
- php强制输出到浏览器下载
$file_name="test.mp3"; $mp3_url = "";header( "Pragma: public" );header ...
- WPS Office 2012 专业版 附正版序列号
WPS Office 2012 专业版 附正版序列号 首先说说WPS的研发历史沿革:1988年5月,一个名叫求伯君的程序员凭借一台386电脑写出了WPS 1.0,从此开创了中文字处理时代,并迅速占领中 ...
- 【洛谷】P4585 [FJOI2015]火星商店问题
题解 题目太丧,OJ太没有良心,我永远喜欢LOJ! (TLE报成RE,垃圾洛谷,我永远喜欢LOJ) 好的,平复一下我debug了一上午崩溃的心态= =,写一写这道题的题解 把所有限制去掉,给出一个值, ...
- Scrollify – jQuery全屏滚动插件
和 fullPage.js 一样,Scrollify 也是一款基于 jQuery 的全屏滚动插件.跟 fullPage.js 相比,Scrollify 更加小巧,压缩后不足 4KB.但功能上不如 fu ...
- 【JavaWeb开发】初步实现网站应用钉钉扫码登录
http://blog.csdn.net/baofeidyz/article/details/59059379 版权声明:转载请注明我的个人微信平台 暴沸 目录(?)[+] 写在前面:如果你还不知道钉 ...