wyh123
解题思路记录和牢骚
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:34 文章:1 评论:1 引用:0
poj 1029(模拟)
题目大意:给出n个硬币(真币和假币质量不同),和k次比较。每次比较去p个硬币置于天平左盘,p个至于右盘,先给出每次比较的硬币编号和比较结果,要求找出假币的编号。找不到就输出“0”
解题思路:根据题意可以知道一下几点:
1)每次出现"=",一定是真币
2)真币一定不会出现在不等式中
3)如果假币唯一则一定出现在每一次不等式中。
4)因为不知道假币是比真币重还是轻,但是不管是轻还是重,它都只会出现在不等式小的一边(或者大的一边)
基于上面几点:我们可以将=号左右出现的真币先排除,然后统一大于小于号,统计硬币在重的一方,轻的一方出现的次数。
如果存在且仅存在一个硬币在不等号一个方向出现的次数等于不等式出现的次数,那个硬币就一定是假币。
*_*。。。。。。在写这道程序之前写了一道多达150行的按操作模拟的程序,虽然A了,但是看起来好恶心!!
代码:
1
#include
<
iostream
>
2
#include
<
string
>
3
#include
<
cmath
>
4
#include
<
cstring
>
5
#include
<
algorithm
>
6
7
using
namespace
std;
8
9
const
int
MAX
=
1001
;
10
11
int
n,k,p,total
=
0
;
12
char
temp;
13
int
a[MAX]
=
{
0
}
;
14
int
r[MAX]
=
{
0
}
;
15
int
times[MAX]
=
{
0
}
;
16
17
int
main()
18
{
19
cin
>>
n
>>
k;
20
while
(k
--
)
21
{
22
cin
>>
p;
23
for
(
int
i
=
0
; i
<
2
*
p; i
++
)
24
{
25
cin
>>
a[i];
26
}
27
cin
>>
temp;
28
if
(temp
==
'
=
'
)
29
{
30
for
(
int
i
=
0
; i
<
2
*
p; i
++
)
31
{
32
r[a[i]]
=
1
;
33
}
34
}
35
if
(temp
==
'
<
'
)
36
{
37
total
++
;
38
for
(
int
i
=
0
; i
<
p; i
++
)
39
{
40
times[a[i]]
--
;
41
}
42
for
(
int
i
=
p; i
<
2
*
p; i
++
)
43
{
44
times[a[i]]
++
;
45
}
46
}
47
if
(temp
==
'
>
'
)
48
{
49
total
++
;
50
for
(
int
i
=
0
; i
<
p; i
++
)
51
{
52
times[a[i]]
++
;
53
}
54
for
(
int
i
=
p; i
<
2
*
p; i
++
)
55
{
56
times[a[i]]
--
;
57
}
58
}
59
}
60
int
cnt
=
0
,s
=
0
;
61
for
(
int
i
=
1
; i
<=
n; i
++
)
62
{
63
if
(r[i]
!=
1
)
64
if
(times[i]
==
total
||
times[i]
==-
total)
65
{
66
cnt
++
;
67
s
=
i;
68
}
69
}
70
if
(cnt
==
1
) cout
<<
s
<<
endl;
71
else
cout
<<
0
<<
endl;
72
return
0
;
73
}
74
发表于 2011-08-09 17:08
wyh
阅读(777)
评论(0)
编辑
收藏
引用
所属分类:
模拟
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
poj 1029(模拟)
CF 96A_Football(模拟)
CF 14A_Letter(模拟)
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
<
2011年8月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
DP(8)
(rss)
比赛总结
(rss)
博弈
(rss)
二分
(rss)
模拟(3)
(rss)
数据结构
(rss)
数学(19)
(rss)
搜索(1)
(rss)
随笔档案
2011年8月 (19)
2011年7月 (15)
文章分类
DP
(rss)
模拟
(rss)
数据结构
(rss)
数论(1)
(rss)
搜索
(rss)
图论
(rss)
文章档案
2011年7月 (1)
搜索
最新评论
1. re: HDOJ 2067(DP)
压根就没有看懂题意的路过~~!
--wgh
阅读排行榜
1. poj 1015(DP)(1030)
2. HDOJ 2563(递推)(845)
3. poj 1029(模拟)(777)
4. HDOJ 1286(欧拉函数)(661)
5. poj 1042(DP)(653)
评论排行榜
1. HDOJ 2067(DP)(1)
2. HDOJ 2041(DP)(0)
3. 2011/7/31(0)
4. HDOJ 2044(DP)(0)
5. HDOJ 2563(递推)(0)