假金币问题-PKUacm1029-ACM
假金币
“Gold Bar”银行收到可靠消息:在前次的N 个金币中有一枚重量不同的假金币(其他金币的重量都相同)。经济危机之后他们只有一台天平可用。用这台天平,可以称量出左边托盘中的物体是轻于、重于或等于右边托盘中的物体。
为了分辨出假金币,银行职员将所有的金币编为1到N号。然后用天平称量不同的金币组合,每次仔细记载称量金币的编号和结果。
现在要求你编写一个程序,帮助银行职员根据称量记录来找出假金币的编号。
输入:
第一行输入两个空格隔开的整数N和K,N是金币的总数(2<=N<=1000 ) , K是称量的次数(1<=K<=100)。随后的2K行记录称量的情况和结果,连续两行记录一次称量:第一行首先是Pi (1<=Pi<=N/2),表示两边托盘中放置的金币数目,随后是左边托盘中Pi个金币编号和右边托盘中Pi个金币编号,所有的数之间都由空格隔开;第二行用'<','>','='和记录称量结果:
- '<'表示左边托盘中的金币比右边的轻;
- '>'表示左边托盘中的金币比右边的重;
- '='表示左右两边托盘中的金币一样重。
输出:
输出假金币的编号。如果根据称量纪录无法确定假金币,输出0。
输入样例:
- 5 3
- 2 1 2 3 4
- <
- 1 1 4
- =
- 1 2 5
- =
输出样例:
- 3
- #include <stdio.h>
- int ids[126][1024];
- int op[126];
- int n,k;
- bool isTrue(int id){
- int i;
- bool isTrue = false;
- for(i=0;i < k;i++){
- int j;
- bool found;
- found = false;
- for(j = 1;j<=(ids[i][0]<<1);j++){
- if(ids[i][j] == id){
- found = true;
- break;
- }
- }
- if(found && op[i] == '=' || !found && op[i]!='='){
- //如果找到了,并且实验结果为相等。
- //或者,未找到,且实验结果不等(即有问题的金币在当前组中)
- //则id编号的金币一定是为真的金币
- isTrue = true;
- break;
- }
- }
- return isTrue;
- }
- int main(){
- scanf("%d%d",&n,&k); //输入金币数和测试数据组数
- if(!(2<=n && n <=1000) || !(1 <= k && k <= 100)){
- return 1;
- }
- int i,j;
- for(i = 0;i < k;i++){
- scanf("%d",&ids[i][0]); //输出本次实验每个盘上放置的金币个数
- for(j = 1;j <= (ids[i][0]<<1);j++){
- scanf("%d",&ids[i][j]); //依次输入金币编号
- }
- scanf("%*c%c",&op[i]);
- }
- //从第1个金币开始,迭代校验第i个金币是否为真
- for(i = 1; i <= n ;i++){
- if(!isTrue(i)){
- //false_id = i;
- break;
- }
- }
- printf("%d",i);
- return 0;
- }
假金币问题-PKUacm1029-ACM的更多相关文章
- HDOJ 2043 password
刚開始看到这个题目的时候,就直接理解成仅仅要是长度符合要求而且字符符合要求,就是一个安全的password了,并没有考虑到至少要3种字符的组合.然后就直接写程序了(先暂且觉得题目就是那个意思),在測试 ...
- hdu acm 2082 找单词
找单词 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- ACM学习
转:ACM大量习题题库 ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. US ...
- ACM竞赛常用STL(一)
全排列函数next_permutation STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespac ...
- 楼天城楼教主的acm心路历程(作为励志用)
楼主个人博客:小杰博客 利用假期空暇之时,将这几年GCJ,ACM,TopCoder 參加的一些重要比赛作个 回顾.昨天是GCJ2006 的回顾,今天时间上更早一些吧,我如今还清晰记得3 年 前,我刚刚 ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...
- 有关怎样入门ACM
想给大家看看 所以就弄了原创了,造成作者困扰请联系在下. 来源: 吴垠的日志 一些题外话 首先就是我为什么要写这么一篇日志.原因非常easy,就是由于前几天有个想起步做ACM人非常诚恳的问我该怎样 ...
- 湘潭邀请赛+蓝桥国赛总结暨ACM退役总结
湘潭邀请赛已经过去三个星期,蓝桥也在上个星期结束,今天也是时候写一下总结了,这应该也是我的退役总结了~ --------------------------------湘潭邀请赛----------- ...
- 2018.10.2浪在ACM 集训队第二次测试赛
2018.10.26 浪在ACM 集训队第二次测试赛 题目一览表 来源 考察知识点 A 1273 海港 NOIP 普及组 2016 差分数组+二分 B 1274 魔法阵 C 1267 金币 ...
随机推荐
- 实现自己的脚本语言ngscript之四:代码生成
最近的进度 ngscript测试代码 function c1(a, b, c, d) { this.a = 1; this.b = new array(); this.b[0] = 1; this.b ...
- Hadoop Hive概念学习系列之什么是Hive?(一)
参考 <Hadoop大数据分析与挖掘实战>的在线电子书阅读 http://yuedu.baidu.com/ebook/d128cf8e33687e21 ...
- hpuoj 问题 A: 做不出来踢协会!!!
问题 A: 做不出来踢协会!!! 时间限制: 1 Sec 内存限制: 128 MB提交: 291 解决: 33[提交][状态][讨论版] 题目描述 这是今天最水的一道题,如果没写出来的,呵呵,踢协 ...
- git 分支策略
转 http://www.ruanyifeng.com/blog/2012/07/git.html 作者: 阮一峰 如果你严肃对待编程,就必定会使用"版本管理系统"(Versio ...
- weblogic下 微信公众平台获取token报错
问题描述: 开发微信公众平台,本地tomcat可以正常获取token并发送模板消息,部署在weblogic后报错,异常信息如下: java.security.InvalidKeyException: ...
- 执行游戏时出现0xc000007b错误的解决方法
如图,这个错误使无数玩家烦恼. 出现这个错误,可能是硬件的问题,也可能是软件的问题.可是,因为硬件引起该问题的概率非常小,而且除了更换硬件之外没有更好的解决方法,因此本文将具体介绍怎样通过软件解决此问 ...
- cs模式与bs模式
关于CS(Client-Server)模式和BS(Browser-Server)模式的水很深,盆地自己也认为对此了解不够透彻,但作为手机客户端设计,如果不对CS.BS做一定程度的了解,是很容易出现一 ...
- hdu 4622 Reincarnation(后缀数组)
hdu 4622 Reincarnation 题意:还是比较容易理解,给出一个字符串,最长2000,q个询问,每次询问[l,r]区间内有多少个不同的字串. (为了与论文解释统一,这里解题思路里sa数组 ...
- c# 二维码 显示
需要引用 ThoughtWorks.QRCode.dll 网上可下载 //方法 public ActionResult GenerateQRCode(string content) { try { _ ...
- CakePHP之控制器
控制器 控制器是MVC中的“C”. 如果你的网站使用Cake框架制作,一般根据url地址和通过路由,就会找到正确的控制器,然后控制器的动作就会被调用. 一个控制器需要解释请求数据.确保使用正确的模型. ...