2019独角兽企业重金招聘Python工程师标准>>>

还以为是dp。。。果然模拟题才是王道

设 f(i, 0)表示命题“金币i是一个较轻的假币”,f(i, 1)表示命题“金币i是一个较重的假币”
由于只有一个假币,所以最后结果的全集A为 { f(1,0), f(1,1),f(2,0),f(2.1) ...... f(12,0), f(12,1) }
每次称量,根据结果,都会排除掉全集里的某些元素。

(1)当称量结果为 s1 == s2的时候
对于任意 j 属于 s1 或者 s2,删除f(j, 0), f(j, 1)
(2)当称量结果为 s1 > s2的时候
对于任意j属于s1,删除f(j, 0)
对于任意k属于s2,删除f(k, 1)
对于任意m不属于s1和s2,删除f(m,0),f(m,1)
(3)当称量结果为 s1 < s2时,交换s1和s2,转化为情况(2)

最后,看看全集A里面还剩下哪一个元素,就知道哪个是金币了

#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <algorithm>
using namespace std;bool f[12][2];
char temp[12];
char str1[20], str2[20], str3[10];void even(char s1[], char s2[]) {int i;for (i = 0; s1[i]; ++i) {f[s1[i] - 'A'][0] = f[s1[i] - 'A'][1] = false;}for (i = 0; s2[i]; ++i) {f[s2[i] - 'A'][0] = f[s2[i] - 'A'][1] = false;}
}void up(char s1[], char s2[]) {int i;for (i = 0; i < 12; ++i)temp[i] = 'N';for (i = 0; s1[i]; ++i) {temp[s1[i] - 'A'] = 'L';}for (i = 0; s2[i]; ++i) {temp[s2[i] - 'A'] = 'R';}for (i = 0; i < 12; ++i) {if (temp[i] == 'N') {f[i][0] = f[i][1] = false;} else if (temp[i] == 'L') {f[i][0] = false;} else if (temp[i] == 'R') {f[i][1] = false;}}
}void run() {int i;for (i = 0; i < 12; ++i)f[i][0] = f[i][1] = true;for (i = 1; i <= 3; ++i) {scanf("%s %s %s", str1, str2, str3);if (str3[0] == 'e') even(str1, str2);else if (str3[0] == 'u') up(str1, str2);else up(str2, str1);}char letter, lorh;for (i = 0; i < 12; ++i) {if (f[i][0]) { letter = i + 'A'; lorh = 'L'; break; }if (f[i][1]) { letter = i + 'A'; lorh = 'H'; break; }}printf("%c is the counterfeit coin and it is ", letter);if (lorh == 'L') printf("light.\n");else printf("heavy.\n");
}int main() {int N;scanf("%d", &N);while(N--) {run();}return 0;
}

转载于:https://my.oschina.net/mustang/blog/59752

poj1013 Counterfeit Dollar相关推荐

  1. Counterfeit Dollar

    原题及翻译 Counterfeit Dollar 假币 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 52569 Accepte ...

  2. Counterfeit Dollar(找硬币)

    第一次做英文题,着实给我整的有点懵逼(毕竟四级是水过去的,这个学期也没打算考六级) 原题如下:OpenJudge - 15:Counterfeit Dollar 大致意思是通过三次比较结果,找12枚硬 ...

  3. OpenJudge NOI 2.1 15:Counterfeit Dollar

    [题目链接] OpenJudge NOI 2.1 15:Counterfeit Dollar [题目考点] 1. 枚举 [题目翻译] 题目 假币 描述 莎莉琼斯有12枚航记银元,但是,只有其中的11个 ...

  4. Counterfeit Dollar 模拟-枚举

    Counterfeit Dollar 模拟-枚举 Time limit:1000 ms Memory limit:10000 kB Source: East Central North America ...

  5. 英语题目翻译——OJ_15: Counterfeit Dollar

    题目:15:Counterfeit Dollar(OpenJudge - 15:Counterfeit Dollar) 翻译: Sally Jones有一打旅行者银币.然而,只有十一个硬币真银币,尽管 ...

  6. 【poj1013】 Counterfeit Dollar

    http://poj.org/problem?id=1013 (题目链接) 题意 12个硬币中有1个是假的,给出3次称重结果,判断哪个硬币是假币,并且判断假币是比真币中还是比真币轻. Solution ...

  7. 百练OJ:1013:Counterfeit Dollar(假币)

    题目描述 Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true sil ...

  8. POJ 1013 Counterfeit Dollar 称硬币

    12个硬币,有一个假的 或轻或重,找出假硬币 开始用的模拟,考虑很多情况 后来,lmy说轻的-1,重的+1,学数学的看什么都是数字,orz 模拟写的两个差不多的代码: (一) #include< ...

  9. 北大oj百练-1013:Counterfeit Dollar(WA)

    (WA)代码,debug失败,先码着 #include <iostream>#include <cstring>using namespace std;char Left[3] ...

  10. FOJ Problem 1003 Counterfeit Dollar

    题目大意是给你一打共计12枚硬币,其中一枚假冒伪劣重量有问题,其余是正常的.给你3次使用天平的机会,让你找出这枚硬币. 一开始我想了好久,打算用数组和数字加减等等分了好多种情况,觉得一道水题我想这么复 ...

最新文章

  1. down 网卡端口周期性的up_Linux 中如何启用和禁用网卡?
  2. ES6的新特性(3)——变量的解构赋值
  3. P3834 【模板】可持久化线段树 1(主席树)
  4. mybatis报错:java.lang.IllegalArgumentException: Mapped Statements collection does not contain
  5. D3D9 effect (hlsl)(转)
  6. 什么是序列化和反序列化
  7. 微信公开课讲师王泓渊:小游戏开放能力
  8. 来自1976,Hinton写的第一篇论文火了:胶囊网络,是40年前的胶囊?
  9. window 配置react native 、Android Studio环境
  10. ObjC学习9-Foundation框架之操作文件
  11. mysql对sql的支持并不是太好_MySQL数据库优化总结
  12. Ajax叠加(Ajax返回数据用Ajax发出)
  13. 一口气说出8种幂等性解决重复提交的方案,面试官懵了!(附代码)
  14. 一个示例让你明白界面与数据分离
  15. MSDE 下载安装、创建管理数据库
  16. TMDB电影数据分析报告
  17. python爬取微博用户信息_Python爬取新浪微博用户信息及内容
  18. 办公软件不能打印能打印测试页,在office办公软件word中不能打印是什么原因
  19. Chrome不保留历史记录,常规模式下不保留历史记录
  20. 两台电脑间的串口通信

热门文章

  1. paip.SOCKET抓包工具总结V2012.9.17
  2. 走进爆发中的AIOps
  3. 2050:技术未必会使我们摆脱愚昧,有时正相反(下)
  4. 首届Ceph亚太峰会来了!内有粉丝福利
  5. python分类识别_Python构建图像分类识别器的方法
  6. 【E-DEEC】基于matlab增强的分布式能源有效集群(E-DEEC)【含Matlab源码 1566期】
  7. 【优化算法】多目标水循环算法(MOWCA)【含Matlab源码 1433期】
  8. 通用逼近定理证明_通用逼近定理:代码证明
  9. linux找不到mysql服务_linux mysql 找不到 mysql/mysql.h
  10. python:删除DataFrame中某列值为NaN的记录/行