Poj 1029

传送门

判断假硬币,前面好像有道类似的题(Poj 1013),这个题比之前那个多了一个可能有无法判断的情况

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cmath>
 4 using namespace std;
 5
 6 char C;
 7 int N,K;//1000 100
 8 int P;
 9 int maxx;
10 bool flag;
11 int coin[1005];
12 int Left[500];
13 int Right[500];
14
15 int main(){
16     cin>>N;
17     memset(coin,0,sizeof(coin));
18     cin>>K;
19     while(K--){
20         cin>>P;
21         for(int i=0;i<P;i++){
22             cin>>Left[i];
23         }
24         for(int i=0;i<P;i++){
25             cin>>Right[i];
26         }
27         cin>>C;
28         if(C==‘=‘){
29             for(int i=0;i<P;i++){
30                 coin[Left[i]]=200;
31                 coin[Right[i]]=200;
32             }
33         }
34         else if(C==‘<‘){
35             for(int i=0;i<P;i++){
36                 if(coin[Left[i]]!=200){
37                     coin[Left[i]]--;
38                 }
39                 if(coin[Right[i]]!=200){
40                     coin[Right[i]]++;
41                 }
42             }
43         }
44         else if(C==‘>‘){
45             for(int i=0;i<P;i++){
46                 if(coin[Left[i]]!=200){
47                     coin[Left[i]]++;
48                 }
49                 if(coin[Right[i]]!=200){
50                     coin[Right[i]]--;
51                 }
52             }
53         }
54     }
55     maxx=0;
56     flag=true;
57     for(int i=1;i<=N;i++){
58         if(coin[i]!=200&&maxx==0&&fabs(coin[i])>=fabs(coin[maxx])){
59             maxx=i;
60         }
61         else if(coin[i]!=200&&fabs(coin[i])>fabs(coin[maxx])){
62             flag=true;
63             maxx=i;
64         }
65         else if(coin[i]!=200&&fabs(coin[i])==fabs(coin[maxx])){
66             flag=false;
67         }
68     }
69     if(flag){
70         cout<<maxx<<endl;
71     }
72     else{
73         cout<<0<<endl;
74     }
75 } 
时间: 2024-09-30 18:36:52

Poj 1029的相关文章

poj 1029 false coin

题目大意:就是一堆硬币中有一个假硬币,然后再给你几个天平的状态求出是否能找出哪个是假硬币并打印出编号. 主要思路: 可以使用穷举法.穷举1--n个硬币,分别判断是否是有问题的硬币(即假设该硬币有问题,是否与已知的天平判断结果一致),当然试探要分两种情况:重量轻了.重量重了.若全部试探完后发现:若个数为1,则说明有问题的硬币就是该硬币:否则说明有问题的硬币可能超过2个,则说明不能判断到底硬币是哪个. 主题思路清晰后,接下来就是如何判定是否与天平测试结果相一致.其实非常简单: 1)若为轻的情况. 1

POJ 1029 判断假币

题意:给你编号为1到n个钱币,其中有一个是假的,k次称量结果,判断并输出假币的编号,不能判断输出0. 分析: 1.等号'='两边全为真币. 2.假币不可能既偏重又偏轻. 3.几次不等的称量假币就出现几次. AC代码: #include<stdio.h> #include<string.h> #define max 1003 int mark[max]; struct node { int s; char c[3]; int a[max>>1],b[max>>

poj 1833

http://poj.org/problem?id=1833 next_permutation这个函数是用来全排列的,按字典的序进行排列,当排列无后继的最大值时,会执行字典升序排列,相当于排序: 当排列无后继的最大值时返回值为false,其他的为true: 也可以在其后加一个cmp函数 1 #include <stdio.h> 2 #include <iostream> 3 #include <algorithm> 4 5 using namespace std; 6

POJ题目推荐(转载)

POJ推荐50题1.标记“难”和“稍难”的题目可以看看,思考一下,不做要求,当然有能力的同学可以直接切掉.2.标记为A and B的题目是比较相似的题目,建议大家两个一起做,可以对比总结,且二者算作一个题目.3.列表中大约有70个题目.大家选做其中的50道,且每类题目有最低数量限制.4.这里不少题目在BUPT ACM FTP上面都有代码,请大家合理利用资源.5.50个题目要求每个题目都要写总结,养成良好的习惯.6.这个列表的目的在于让大家对各个方面的算法有个了解,也许要求有些苛刻,教条,请大家谅

POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations 1221 Risk1230 Legendary Pokemon1249 Pushing Boxes 1364 Machine Schedule1368 BOAT1406 Jungle Roads1411 Annive

ACM训练方案-POJ题目分类

ACM训练方案-POJ题目分类 博客分类: 算法 ACM online Judge 中国: 浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 中国科技大学(USTC):http://acm.ustc.edu.cn/ 北京航天航空大学(BUAA)http://acm.buaa.edu.cn/oj/index.php 南京

转载:poj题目分类(侵删)

转载:from: POJ:http://blog.csdn.net/qq_28236309/article/details/47818407 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K–0.50K:中短代码:0.51K–1.00K:中等代码量:1.01K–2.00K:长代码:2.01K以上. 短:1147.1163.1922.2211.2215.2229.2232.2234.2242.2245.2262.2301.2309.2313.2334.2346.2348

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

此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276,1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740(博弈),1742, 1887, 1926(马尔科夫矩阵,求平衡), 1936, 1952, 1953, 1958, 1959, 1962, 1975,

POJ 2282-The Counting Problem(组合数学_区间计数)

The Counting Problem Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2282 Appoint description:  System Crawler  (2015-04-15) Description Given two integers a and b, we write the numbers between