博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1365 - 木杆上的蚂蚁
阅读量:5049 次
发布时间:2019-06-12

本文共 1510 字,大约阅读时间需要 5 分钟。

第二届ACM趣味程序设计竞赛 过去也快1个月了 一直没把没过的题搞过去 有点愧对太阳叔叔。所以特此开篇。

 

一开始想复杂了 那么多碰头 该有多复杂啊 就在那模拟来模拟去 伤脑筋 这次比赛也就这题卡的我伤心。。。 
废话不说 讲思路吧。。
题目要求要知道蚂蚁的名字 和掉下去的先后顺序(等死活该)注意到 两边的蚂蚁总是最先掉下去的 其次是内部的。 
一层一层剥下去 这样思路就简单了
只要判定最外边两只哪知先掉下去 
显然需要先排序 
用结构体
 
struct
Ant{
char
name[
11
];
int
pos;
}ant[
100
];
表示蚂蚁;按pos排序;
ContractedBlock.gif
ExpandedBlockStart.gif
代码
 
#include
<
iostream
>
#include
<
cstdio
>
#include
<
algorithm
>
/*
*
* 1365.ant.
*
* Copyright (C) 2011 luxury2664@gmail.com
*/
using
namespace
std;
struct
Ant{
char
name[
11
];
int
pos;
}ant[
100
];
struct
Event{
int
drop_time;
char
dir;
}eve[
100
];
bool
ant_cmp(
const
Ant
&
ant1,
const
Ant
&
ant2)
{
return
ant1.pos
<
ant2.pos;
}
bool
eve_cmp(
const
Event
&
eve1,
const
Event
&
eve2)
{
return
eve1.drop_time
<
eve2.drop_time;
}
int
main()
{
int
N, L, T, k
=
1
, i;
char
dir[
2
];
scanf(
"
%d
"
,
&
T);
while
(T
--
) {
printf(
"
Case #%d:\n
"
, k
++
);
scanf(
"
%d%d
"
,
&
N,
&
L);
for
(i
=
0
; i
<
N; i
++
) {
scanf(
"
%s%d%s
"
, ant[i].name,
&
ant[i].pos, dir);
eve[i].dir
=
dir[
0
];
eve[i].drop_time
=
(eve[i].dir
==
'
L
'
)
?
ant[i].pos : L
-
ant[i].pos;
}
sort(ant, ant
+
N, ant_cmp);
//
对蚂蚁按pos排序
sort(eve, eve
+
N, eve_cmp);
//
对event按时间顺序排序
int
l
=
0
, r
=
N
-
1
;
/*
*
* 因为最先掉下去的一定是左边或右边的
* 只要判定左边或右边那一个先下去
* 由两只蚂蚁相遇可推出多只蚂蚁间的时间关系 即even。
*/
for
(i
=
0
; i
<
N; i
++
) {
if
(eve[i].dir
==
'
L
'
){
printf(
"
%d %s\n
"
, eve[i].drop_time, ant[l].name);
l
++
;
}
else
{
printf(
"
%d %s\n
"
, eve[i].drop_time, ant[r].name);
r
--
;
}
}
}
return
0
;
}

 

转载于:https://www.cnblogs.com/luxury/archive/2011/01/17/1936937.html

你可能感兴趣的文章
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
关于Redis处理高并发
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
asp.net core 系列 16 Web主机 IWebHostBuilder
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
bzoj1230 开关灯 线段树
查看>>
LinearLayout
查看>>
学习python:day1
查看>>