POJ 1013:Counterfeit Dollar
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 42028 | Accepted: 13369 |
Description
from the other coins but Sally does not know if it is heavier or lighter than the real coins.
Happily, Sally has a friend who loans her a very accurate balance scale. The friend will permit Sally three weighings to find the counterfeit coin. For instance, if Sally weighs two coins against each other and the scales balance then she knows these two coins
are true. Now if Sally weighs
one of the true coins against a third coin and the scales do not balance then Sally knows the third coin is counterfeit and she can tell whether it is light or heavy depending on whether the balance on which it is placed goes up or down, respectively.
By choosing her weighings carefully, Sally is able to ensure that she will find the counterfeit coin with exactly three weighings.
Input
by two strings of letters and then one of the words ``up'', ``down'', or ``even''. The first string of letters will represent the coins on the left balance; the second string, the coins on the right balance. (Sally will always place the same number of coins
on the right balance as on the left balance.) The word in the third position will tell whether the right side of the balance goes up, down, or remains even.
Output
Sample Input
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even
Sample Output
K is the counterfeit coin and it is light.
题意是从A到L的dollar,其中有一个跟他们其它的不同,可能是轻了也可能是重了。给了三个在秤上的关系,要你判断出哪一个是伪造的dollar,是轻是重。
做的时候还WA了几次,但AC之后觉得这个题真是水啊。。。不知道为什么只要自己好不容易A完之后就觉得这个题真的很水,为什么当时没有想到呢?就是这种感觉。
咳咳,因为这个题就A到L之中有问题嘛,数据量太小,导致枚举就OK了。所以从A开始就一个一个试吧,如果在even中的语句里出现了,那就排除它的嫌疑。在up语句中出现了,它的flag加3,代表可能是轻的标记。在down语句中出现了,它自己的flag加4,代表可能是重的标记。
然后对12个砝码标记完之后,有标记为1的排除,标记为7 10 11这样的排除,因为不可能出现一个砝码既轻又重的情况,然后找最独特的那一个就是伪造的砝码了。输出即可。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
using namespace std; int num[15];
int Test,i,j,flag[15],sum=0;
string left_s[5],right_s[5],bala[5];
char temp_c; void solve()
{
if(bala[1]=="up")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
}
if(bala[2]=="up")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
}
if(bala[3]=="up")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return ;
}
}
} if(bala[1]=="down")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
}
if(bala[2]=="down")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
}
if(bala[3]=="down")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
}
} bool pend()
{
int pend_flag=0;
if(bala[1]=="up")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[2]=="up")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[3]=="up")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
} if(bala[1]=="down")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[2]=="down")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[3]=="down")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
return true;
}
int main()
{
cin>>Test; while(Test--)
{
memset(flag,0,sizeof(flag));
memset(num,0,sizeof(num));
sum=0; for(i=1;i<=3;i++)
{
cin>>left_s[i]>>right_s[i]>>bala[i];
}
for(temp_c='A';temp_c<='L';temp_c++)
{
if(bala[1]=="even")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
}
if(bala[2]=="even")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
}
if(bala[3]=="even")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
} if(bala[1]=="up")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 4;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 3;
}
}
}
if(bala[2]=="up")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 4;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 3;
}
}
}
if(bala[3]=="up")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
} if(bala[1]=="down")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
}
if(bala[2]=="down")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
}
if(bala[3]=="down")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
}
}
for(temp_c='A';temp_c<='L';temp_c++)
{
num[flag[temp_c-'A']]++;
}
for(i=0;i<=12;i++)
{
if(num[i]==1 && i!=7 && i!=10 && i!=11)
{
for(temp_c='A';temp_c<='L';temp_c++)
{
if(flag[temp_c-'A']==i)
{
if(pend())
{
solve();
}
}
}
}
}
} return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
POJ 1013:Counterfeit Dollar的更多相关文章
- 九度OJ 1150:Counterfeit Dollar(假美元) (分析、检验)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:485 解决:215 题目描述: Sally Jones has a dozen Voyageur silver dollars. Howev ...
- Poj 1013 Counterfeit Dollar / OpenJudge 1013(2692) 假币问题
1.链接地址: http://poj.org/problem?id=1013 http://bailian.openjudge.cn/practice/2692 http://bailian.open ...
- POJ 1013 Counterfeit Dollar
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36206 Accepted: 11 ...
- Counterfeit Dollar 分类: POJ 2015-06-12 15:28 19人阅读 评论(0) 收藏
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 41559 Accepted: 13 ...
- POJ1013 Counterfeit Dollar
题目来源:http://poj.org/problem?id=1013 题目大意:有12枚硬币,其中有一枚假币.所有钱币的外表都一样,所有真币的重量都一样,假币的重量与真币不同,但我们不知道假币的重量 ...
- POJ 1013 小水题 暴力模拟
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35774 Accepted: 11 ...
- Counterfeit Dollar -----判断12枚钱币中的一个假币
Counterfeit Dollar Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u ...
- poj1013.Counterfeit Dollar(枚举)
Counterfeit Dollar Time Limit: 1 Sec Memory Limit: 64 MB Submit: 415 Solved: 237 Description Sally ...
- POJ 3321:Apple Tree + HDU 3887:Counting Offspring(DFS序+树状数组)
http://poj.org/problem?id=3321 http://acm.hdu.edu.cn/showproblem.php?pid=3887 POJ 3321: 题意:给出一棵根节点为1 ...
随机推荐
- C++面试常见问题——17类模板的使用
类模板的使用 注意在每次类模板函数时都需要声明一个类模板 #include<iostream> using namespace std; template <class T,int ...
- maven知识结构笔记
1.什么是maven Maven 翻译为"专家"."内行",是 Apache 下的一个纯 Java 开发的开源项目.基于项目对象模型(缩写:POM)概念,Mav ...
- 7.10 Varnish 优化
- CSS样式表——样式
样式: 1)大小 width:200px; 或width:100%; //样式中要加单位 height:100px; 2)背景 back ...
- C++ 语言程序设计(清华大学)1
1.回文数字判断方法(逆过来数值相等):y=y*10+x%10; x /= 10; return(x==y) 2.int rand(void)函数,所需头文件<cstdlib> ,功能是求 ...
- Ceph 概念理解
简介 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务. 在虚拟化领域里,比较常用到的是Ceph的块设备存储, ...
- html5游戏的横屏问题
html5 API有这个参数 Screen Orientation API 可以看w3c定义的规范 The Screen Orientation API <!-- UC强制竖屏 --> & ...
- 更换虚拟机VMware Workstation14和centos7版本及工具
本博主之前一直沿用的centos是6.7比较老,工作站是10,想要更换一批新版本的工具,并将之前的一些开发环境整理出来移动到该版本上,将其记录在下 一.下载准备 1.下载centos7镜像,选择最小的 ...
- spring的一些annotation
通过使用spring的注解可以把一些类通过spring容器管理这些类 @controller 控制器(注入服务) @service 服务(注入dao) @repository dao(实现dao访问) ...
- 七十九、SAP中数据库操作之更新数据,UPDATE的用法
一.我们查看SFLIGHT数据库,比如我们需要改这条数据 二.代码如下 三.执行效果如下,显示“数据更新成功” 四.我们来看一下SFLIGHT数据库,发现已经由DEM更改为了AAA了