170 条题解
-
0zhaoml529 LV 8 @ 2008-09-08 23:45:23
简单~
用一个布尔数组记录男生的访问,初始置F,K 为距离(初始为1)。
倒着循环,再没有找到第一个没被标记的男生时K加1,直到找到第一个没有被标记的男生,标记他输出K,就是离女生最近的那个男生,并且break,不再向后寻找~ 换下一个女生。
for i:=1 to n do
begin
k:=1;
for j:=a[i] downto 1 do
if not(b[j]) then begin
b[j]:=true;
if in then
write(k,' ')
else write(k);
break;
end
else inc(k);
end; -
02008-09-08 23:34:18@
哎。。题解看多了。。。如此水题也要花我一晚上
老喽。。。
for i:= 1 to n do
if b[i] > 0 then begin write('1 '); dec(b[i]); end
else begin
j:=1; flag:=true;
while (j < i) and flag do
begin
if b > 0 then begin write(j+1,' '); flag:=false; dec(b); end;
inc(j);
end;
end;
统统0MS的说。。。 -
02008-09-04 20:50:39@
用两个数组
分别记录i个女生左边的男生数(a数组)和每个女生间剩下没匹配的男生数(b数组)
若 b>0 直接输出1
若 b=0 回头搜索没匹配的 输出
O(0.5n*n) 最坏情况 -
02008-09-03 23:19:56@
不知道是不是我太菜了,感觉这道题不太好想。看似很简单,但我想了很长时间。写起来倒是没什么困难。
-
02008-09-02 23:52:44@
都没发现。。。我居然是第3000个体教的人
-
02008-08-30 10:33:20@
数组还是大点好
-
02008-08-22 20:42:50@
我是用栈模拟的,想起来好像蛮麻烦,其实写起来没几行。
int st[2501]; //数组模拟栈
int zz=0; //指示栈顶编号
int ns=0; //记录多少个男生进过栈,来确定男生编号void boy() //男生进栈
{
zz++;
ns++;
st[zz]=ns;
}void girl() //女生进栈
{
cout -
02008-08-09 16:05:18@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-08-08 15:28:51@
感觉和左右括号的匹配有点像……
()((()))(((()))()) -
02008-08-06 20:31:45@
// 1062
// 比较诡异的模拟
// 用栈,每次入栈的个数,
// 是后一个减去前一个之差
// 然后再弹出一个
// 每次入栈的时候
// 新来的一岁
// 老的会变老一岁
// 弹栈的时候就输出年龄
// 就是题目所求了
// 画个图很容易理解
// 复杂度 O(n*(n+1)/2) n -
02008-08-05 15:05:03@
这题我用栈来处理:
设女生左边的男生人数为a[i],
先将输出第一个女生左边人男生人数1,再将a[1]-1个男生压栈,b[i]=1,
然后从2循环到n,每次取出一个男生,输出b[i]+1;
给栈中的每一个男生b[i](已经出栈的男生人数)+1
注:此题数据范围有误 -
02008-08-03 20:31:20@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
第1000个通过!!!!! -
02007-12-12 21:54:59@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
竟然把数组定义成1000,怪不得只有40 -
02007-11-09 16:28:14@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02007-10-23 15:27:29@
总觉得是special judge。。
-
02007-10-20 21:30:02@
最后一个点超时了,谁知道数据或为什么?
-
02007-10-10 23:06:06@
楼下...很牛很强大......
-
02007-10-02 13:51:09@
回答下面的‘追忆惘然’:
在男生里面会有许多男生没有舞伴,所以队列不能只开2*n,而要开大点。 -
02007-09-28 22:33:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms还是不明白阿,为什么数组开小了会超时?开到那么大的数组有什么用?
哪位大牛能说一下? -
02007-09-09 18:14:00@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms