【ACM】杭电 hdu 1482 Counterfeit Dollar
来源:互联网 发布:淘宝网冬款女鞋 编辑:程序博客网 时间:2024/06/06 00:34
/* THE PROGRAM IS MADE BY PYY *//*----------------------------------------------------------------------------// Copyright (c) 2011 panyanyany All rights reserved. URL : http://acm.hdu.edu.cn/showproblem.php?pid=1482 Name : 1482 Counterfeit Dollar Date : Sunday, January 22, 2012 Time Stage : 2 hours Result: 52857192012-01-22 11:47:15Accepted14820MS236K2462 BC++pyyTest Data :Review :不是什么难题,慢慢推敲一下就出来了。首先,基本原理是,把全部倾斜的天平摆成一个方向,设为左低右高,那么假币肯定在任意一边。设它在左边,则左边3组中必然都存在假币,所以只要枚举左边所有倾斜组,得到共有的那个硬币,便是假币。如果左边找不到所有组共有的硬币,则在右边找。如果遇到平衡的天平,那么此天平两边的硬币都是真币,就可以在枚举的时候过滤掉这些真币了,同时也要减少枚举的组数。比如示例中,有两组真币,那么只枚举一组就行了。//----------------------------------------------------------------------------*/#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include <string>using namespace std ;#define INF (-1)#define MAXN ('L'-'A'+2)int evenCnt ;int getsum (bool side[MAXN][3], bool even[MAXN]){int i, j, sum ;for (i = 0 ; i < 12 ; ++i){sum = 0 ;if (even[i])// 不枚举真币continue ;for (j = 0 ; j < 3 ; ++j)sum += side[i][j] ;if (sum == 3 - evenCnt)// 只枚举倾斜的天平break ;}return i ;}int main (){int i, j ;int tcase, k, id ;string a, b, c, lf, rh ;char *pWei ;bool even[MAXN], left[MAXN][3], right[MAXN][3] ;while (scanf ("%d", &tcase) != EOF){k = 0 ;while (k++ < tcase){MEM (even, 0) ;MEM (left, 0) ;MEM (right, 0) ;evenCnt = 0 ;for (i = 0 ; i < 3 ; ++i){cin >> a >> b >> c ;if (c[0] == 'e')// 记录真币{++evenCnt ;for (j = 0 ; j < a.size() ; ++j){even[a[j]-'A'] = true ;}for (j = 0 ; j < b.size() ; ++j){even[b[j]-'A'] = true ;}continue ;}else if (c[0] == 'u')lf = a, rh = b ;elself = b, rh = a ;for (j = 0 ; j < lf.size() ; ++j)left[lf[j]-'A'][i] = true ;for (j = 0 ; j < rh.size() ; ++j)right[rh[j]-'A'][i] = true ;}id = getsum (left, even) ;pWei = "heavy" ;if (id == 12){id = getsum (right, even) ;pWei = "light" ;}printf ("%c is the counterfeit coin and it is %s.\n", id+'A', pWei) ;}}return 0 ;}
- 【ACM】杭电 hdu 1482 Counterfeit Dollar
- hdu 1482 Counterfeit Dollar
- hdu 1482 Counterfeit Dollar
- HDU-1482-Counterfeit Dollar
- ACM 1013 Counterfeit Dollar
- Counterfeit Dollar hdu 1482 模拟题
- Counterfeit Dollar hdu 1013
- HDU 1482/ZOJ 1184/FOJ 1003/POJ 1013 Counterfeit Dollar
- PKU ACM-1013题 java Counterfeit Dollar
- PKU ACM 1013 Counterfeit Dollar 假币
- ACM —— 1013 Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- Counterfeit Dollar
- 来自4G的龙年新春祝福
- 第一篇,写点什么呢?
- USACO Section 4.4 Pollutant Control - 找更优的搜索枚举方案~
- 关于strcasecmp的一个小程序
- JBoss Maven plugin 基本命令
- 【ACM】杭电 hdu 1482 Counterfeit Dollar
- 汇编语言中用到的寄存器
- 查看Android系统的stdout和stderr
- 用zend studio连接mysql数据库
- Android 系统数据库编程学习日志
- Linux中SQLplus上下键不能显示历史命令的问题
- C# 正常关闭窗体的方法
- javascript 常量
- javascript中event详解