码迷,mamicode.com
首页 > 其他好文 > 详细

BestCoder Round #11 题解集合

时间:2014-09-28 22:25:15      阅读:422      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   数据   

1001.Alice and Bob

签到题*1,只要x * 2 == n && y * 2 == m就满足条件。

bubuko.com,布布扣
1 var
2   m, n, x, y : int64;
3   
4 begin
5   while not eof do begin
6     readln(m, n, x, y);
7     if (m = 2 * x) and (n = 2 * y) then writeln(YES) else writeln(NO);
8   end;
9 end.
View Code

 

1002.Bob and math problem

我真是WA的不行,但是很明显我的算法没有问题啊。。。

我的算法:统计0到9的个数,然后找出最小的奇数放到末尾,接着从9到0输出,最后输出选出的那个奇数。

中间要判断输出-1的情况:没有奇数;找出一个奇数以后只剩下0了。

bubuko.com,布布扣
 1 var
 2   num : array[0..9] of longint;
 3   n, ch, i, j, x : longint;
 4 
 5 function find : boolean;
 6 var
 7   i : longint;
 8   flag : boolean;
 9 
10 begin
11   flag := true;
12   for i := 1 to 9 do
13     if num[i] > 0 then flag := false;
14   find := flag and (n <> 1);
15 end;
16 
17 begin
18   while not eof do begin
19     readln(n);
20     fillchar(num, sizeof(num), 0);
21     for i := 1 to n do begin
22       read(x);
23       inc(num[x]);
24     end;
25     ch := 0;
26     for i := 1 to 5 do begin
27       j := i * 2 - 1;
28       if num[j] > 0 then begin
29         ch := j;
30         dec(num[j]);
31         break;
32       end;
33     end;
34     if (ch = 0) or find then begin
35       writeln(-1);
36       continue;
37     end;
38     for i := 9 downto 0 do
39       while num[i] > 0 do begin
40         write(i);
41         dec(num[i]);
42       end;
43     writeln(ch);
44   end;
45 end.
View Code

 

1003.Boring count

这道题看了数据范围就知道要O(n)的算法,因为O(nlogn)的算法有点不大科学。。。

于是我来统计以每个字符s[j]为结尾的满足要求的字符串的个数,不妨设suff[i, j]表示s[i]到s[j]的子串。

又很明显如果suff[i, j]不满足条件了,则suff[i - 1, j]也不满足条件,若令f[j]表示以字符s[j]结尾的最左边满足条件的位置,则f[j]关于j是单调增的。

于是每次枚举j然后查找f[j], ans += j - f[j] +1即可。

bubuko.com,布布扣
 1 var
 2   i, x, k, len, left, t1 : longint;
 3   first, next, num, last : array[0..150000] of longint;
 4   s : ansistring;
 5   T : longint;
 6   ans : int64;
 7 
 8 begin
 9   readln(T);
10   while T > 0 do begin
11     dec(T);
12     ans := 0;
13     readln(s);
14     readln(k);
15     len := length(s);
16     left := 0;
17     fillchar(first, sizeof(first), 0);
18     fillchar(last, sizeof(last), 0);
19     fillchar(num, sizeof(num), 0);
20 
21     for i := 1 to len do begin
22       x := ord(s[i]);
23       if first[x] = 0 then first[x] := i;
24       inc(num[x]);
25       next[last[x]] := i;
26       last[x] := i;
27       if num[x] > k then begin
28         dec(num[x]);
29         t1 := first[x];
30         first[x] := next[first[x]];
31         if t1 > left then left := t1;
32       end;
33       inc(ans, i - left);
34     end;
35     writeln(ans);
36   end;
37 end.
View Code


1004.Argestes and Sequence

还没搞定啊。。 

 

BestCoder Round #11 题解集合

标签:style   blog   http   color   io   os   ar   for   数据   

原文地址:http://www.cnblogs.com/rausen/p/3999051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!