poj1029 False coin
http://poj.org/problem?id=1029
题目大意:“金条”银行从可靠的消息来源得知,在他们最后一组N个硬币中,一枚硬币是假的,与其他硬币的重量不同(其他硬币的重量相等)。在经济危机之后,他们只有一个简单的平衡。使用这种平衡,我们可以确定左边的物体的重量是否小于,大于或等于右边的物体的重量。为了检测假币,银行职员将所有的硬币从1到N进行编号,从而将每个硬币分配给一个唯一的整数标识符。之后,他们开始在左边的平底锅和右边的平底锅里放置等量的硬币,以使各种硬币的数量增加。仔细记录了硬币的标识符和权重的结果。您将编写一个程序,该程序将帮助银行职员使用这些权重的结果来确定假硬币的标识符。输入文件的第一行包含两个整数N和K,由空格分隔,其中N为硬币数量(2<=N<=1000), K为满足的权重数(1<=K<=100)。下面的2K行描述了所有的权重。第一个数字是Pi (1<=Pi<=N/2),表示放置在左边和右边的硬币中硬币的数量,然后是放置在左边盘子里的硬币的Pi标识符和放置在右边盘子里的硬币的Pi标识符。所有的数字都用空格隔开。第二行包含以下字符之一:'<'、'>'或'='。它表示权重的结果:
“<”是指左边的硬币的重量小于右边的硬币的重量,
>的意思是,左边的硬币的重量比右边的硬币的重量要大,
“=”意思是左边的硬币的重量等于右边的硬币的重量。
在输出文件中写入错误硬币的标识符,如果它不能被给定权重的结果发现,则输出0。
也就是说N个硬币,有一个假硬币,现在给出了K次测量的结果,每一次的前K个标号的硬币表示放在左侧,后K个标号的硬币表示放在右侧,并且给出了测量结果。如果是等号,表示本次测量的所有硬币都是真的,如果出现了不等号,那么假硬币一定在本次测量的硬币中。但是这个假硬币可以是轻一点的,也可能是重一点的,这不确定。
算法思想:设coin[i]表示第i个硬币的真假,全部初始化为false。首先,如果有称出是相等的,那么两边的硬币肯定都是真币 coin[i]设为true( 两边硬币一样多,N个里只有一个是假币,所以平衡了两边肯定都是真币)。然后把每次不等的情况先记录下来,由于不知道假硬币是比真硬币轻还是重,我们可以分为轻的一端的硬币,和重的一端的硬币,分别对应的qCoin[i]++,wCoin[i]++,最后找到coin[i]为false并且对应的qCoin[i]或者是wCoin[i]等于不等号出现的次数nEqual的硬币,该硬币就是假硬币。最后判断是否只找到了一个假硬币,找到,输出编号,否则输出0。
#include<iostream>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
bool*coin=new bool[n+];
int *qCoin=new int[n+];
int *wCoin=new int[n+];
for (int i = ; i < n+; i++)
{
coin[i]=false;
qCoin[i]=;
wCoin[i]=;
}
int comareCoinNum,nEqual=;
for (int i = ; i < k; i++)
{
cin>>comareCoinNum;
int *temp=new int[*comareCoinNum];
for (int i = ; i < *comareCoinNum; i++)
{
cin>>temp[i];
}
char c;
cin>>c;
if(c=='=')
{
for (int i = ; i < *comareCoinNum; i++)
coin[temp[i]]=true;
}
else if(c=='<')
{
for (int i = ; i < comareCoinNum; i++)
qCoin[temp[i]]++;
for (int i = comareCoinNum; i < *comareCoinNum; i++)
wCoin[temp[i]]++;
nEqual++;
}
else
{
for (int i = ; i < comareCoinNum; i++)
wCoin[temp[i]]++;
for (int i = comareCoinNum; i < *comareCoinNum; i++)
qCoin[temp[i]]++;
nEqual++;
}
}
int fCoin=,t;
for (int i = ; i < n+; i++)
{
if((coin[i]==false) && (nEqual==qCoin[i]||nEqual==wCoin[i]))
{
fCoin++;
t=i;
}
}
if(fCoin==)
cout<<t<<endl;
else
cout<<<<endl;
return ;
}
poj1029 False coin的更多相关文章
- POJ 1029 False coin
http://poj.org/problem?id=1029 题意: 在一堆硬币中有一个假硬币,重量是重是轻不知道.每次称量多个硬币,并给出称量结果.判断依据题目给出的几次称量结果能否找出假硬币. 思 ...
- POJ题目排序的Java程序
POJ 排序的思想就是根据选取范围的题目的totalSubmittedNumber和totalAcceptedNumber计算一个avgAcceptRate. 每一道题都有一个value,value ...
- 别人整理的DP大全(转)
动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- dp题目列表
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- Poj 1029 分类: Translation Mode 2014-04-04 10:18 112人阅读 评论(0) 收藏
False coin Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16418 Accepted: 4583 Descr ...
- poj 动态规划题目列表及总结
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- [转] POJ DP问题
列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...
- poj动态规划列表
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
随机推荐
- MVVM中viewmodel的理解
网上有人写了这段话,我也有同感,特别是第一种用法,很重要,后一种用法,我觉得是把第一种用法加入controller中了. 第一种 “view model” 是 “model for the view” ...
- Linux运维之docker虚拟化部署nginx
一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...
- 前端之javascript的数据类型1和BOM对象
一 js对象 BOM对象:browser object model浏览器模型对象 window对象:定时器 DOM对象:文档对象模型 js对象:字符串对象,数组对象,日期对象,math对象 new关键 ...
- Linux网桥模式配置
Linux网关模式下将有线LAN和无线LAN共享网段实现局域网内互联: 思路其实很简单:就是将虚拟出一个bridge口,将对应的有线LAN和无线LAN都绑定在这个虚拟bridge口上,并给这个brid ...
- yum 安装报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
[root@venn09 ~]# yum install -y vim Loaded plugins: fastestmirror Could not retrieve mirrorlist http ...
- 2018.12.12 codeforces 938E. Max History(组合数学)
传送门 唉最开始居然把题给看错了. 其实是组合数学傻逼题呢. 题意简述:给出一个数列,定义一个与数列有关的fff函数,fff函数定义如下: 首先f=0,M=1f=0,M=1f=0,M=1,一直重复如下 ...
- Amount of Degrees(数位dp)
题目链接:传送门 思路:考虑二进制数字的情况,可以写成一个二叉树的形式,然后考虑区间[i……j]中满足的个数=[0……j]-[0……i-1]. 所以统计树高为i,中有j个1的数的个数. 对于一个二进制 ...
- Router types
Inq-n. Flits are stored at the input of the router. Each input unit is connected to the switch by as ...
- 安装SourceTree遇到的一个个坑
之前在公司的电脑上满心欢喜的安装了下,很顺利就成功了,回来在自己电脑上安装,结果坑不能停,以此来纪念下吧! 下载完成后,进行安装: 这里我是申请了个账户,选第一个user an existing ac ...
- fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410
原因: 前端传递的数组过于复杂,倒是出现这种问题,前端采用vue axios,发送请求,后端java接收代码,实现前后端分离 后端就收fastjson接收json,进行业务处理,后端Controlle ...