http://poj.org/problem?id=1029

题意:

在一堆硬币中有一个假硬币,重量是重是轻不知道。每次称量多个硬币,并给出称量结果。判断依据题目给出的几次称量结果能否找出假硬币。

思路:

当两边一样重的时候,说明称量的硬币都是真的,对于这些硬币,我们直接做记号说明是真硬币。

当不一样重的时候,说明天平上肯定存在假硬币,但是我们不知道假硬币是在轻的一端还是重的一端。接下来这点很重要,天平不平衡了几次,假硬币肯定也出现了几次。所以对于不平衡时的称量,我们将称量的硬币出现的次数+1,注意,轻的一端和重的一端需要分开计数(也就是用两个数组来计数,因为我们不知道假硬币是重还是轻)。最后我们比较天平不平衡的次数和每个硬币出现的次数,如果只有一个硬币称量的次数等于天平不平衡次数,说明该硬币就是假硬币。有多个时就无法判断出来。

 #include<iostream>
#include<cstring>
#include<string>
using namespace std; int n, k;
int pl[],pr[];
int a[],b[]; int main()
{
while (cin >> n >> k)
{
int t;
int num = ;
char c;
memset(a, , sizeof(a));
memset(b, , sizeof(b));
while (k--)
{
cin >> t;
for (int i = ; i < t; i++)
cin >> pl[i];
for (int i = ; i < t; i++)
cin >> pr[i];
cin >> c;
if (c == '=')
{
for (int i = ; i < t; i++)
{
a[pl[i]] = b[pl[i]] = -;
a[pr[i]] = b[pr[i]] = -;
}
}
else if (c == '<')
{
num++;
for (int i = ; i < t; i++)
{
if (a[pl[i]] != -) a[pl[i]]++;
if (a[pr[i]]!= -) b[pr[i]]++;
}
}
else if (c == '>')
{
num++;
for (int i = ; i < t; i++)
{
if (a[pl[i]] != -) b[pl[i]]++;
if (a[pr[i]] != -) a[pr[i]]++;
}
}
}
int ans, count=;
for (int i = ; i <= n; i++)
{
if (a[i] == num || b[i]==num)
{
ans = i;
count++;
}
if (count == ) break;
}
if (count!=) cout << "" << endl;
else cout << ans << endl;
}
}

POJ 1029 False coin的更多相关文章

  1. 九度OJ1486 /POJ 1029/2012北京大学研究生复试上机

    wa到死!wa到死!这是一个看着简单,坑及其多的题! 坑一:POJ上是单组输入,九度上是多组输入,妈蛋要是研究生复试遇到这种大坑肯定死掉啊!而且对于codeforces比较习惯的 同学肯定会觉得巨坑无 ...

  2. 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 ...

  3. poj1029 False coin

    http://poj.org/problem?id=1029 题目大意:“金条”银行从可靠的消息来源得知,在他们最后一组N个硬币中,一枚硬币是假的,与其他硬币的重量不同(其他硬币的重量相等).在经济危 ...

  4. POJ题目排序的Java程序

    POJ 排序的思想就是根据选取范围的题目的totalSubmittedNumber和totalAcceptedNumber计算一个avgAcceptRate. 每一道题都有一个value,value ...

  5. poj 动态规划题目列表及总结

    此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...

  6. poj动态规划列表

    [1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...

  7. POJ 动态规划题目列表

    ]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322 ...

  8. poj 动态规划的主题列表和总结

    此文转载别人,希望自己可以做完这些题目. 1.POJ动态规划题目列表 easy:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, ...

  9. [转] POJ DP问题

    列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...

随机推荐

  1. Python3学习之路~2.1 列表、元组操作

    列表 列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作. 定义列表(list) names=['Amy','Bob','Cindy','David'] 通过下标访问列 ...

  2. 图练习-BFS-从起点到目标点的最短步数(sdut 2830)邻接边表

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2830 题目描述 在古老的魔兽传说中,有两个军团 ...

  3. jquery closest & parent比较

    .closest() .parents() 从当前元素开始 从父元素开始 沿 DOM 树向上遍历,直到找到已应用选择器的一个匹配为止. 沿 DOM 树向上遍历,直到文档的根元素为止,将每个祖先元素添加 ...

  4. Junit4用法

    序号 方法和描述 1 void assertEquals(boolean expected, boolean actual) 检查两个变量或者等式是否平衡 2 void assertTrue(bool ...

  5. 134. Gas Station(数学定理依赖题)

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  6. font-awesome图标

  7. HDU 1586 log 的运用

    log函数的应用,因为 log(a^b)=b*log(a); log(a*b)=log(a)+log(b); 比如 log10(123456789)==log10(1.23456789)+8; log ...

  8. Python: 正则表达式匹配多行,实现多行匹配模式

    1) 点 (.)去匹配任意字符的时候,不能匹配换行符 在这个模式中(?:.|\n)是指定了一个非捕获组(仅仅用来做匹配,部能通过单独捕获或者编号的组) 2) re.DOTALL re.compile( ...

  9. linux常用命令:head 命令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...

  10. HexDump.java解析,android 16进制转换

    HexDump.java解析android 16进制转换 package com.android.internal.util; public class HexDump { private final ...