SRM 496 DIV2

这次很郁闷,非常郁闷!!!

500的题里一个j+1我居然写成j了!!!!直接被系统CHA了。

 

250的题目:

水题,用map即可

1
2
3
4
5
6
7
8
9
10
11
12
13
class AnagramFree{
public:
	int getMaximumSubset(vector <string> S)
	{
		map<string, int> mm;
		for(vector<string>::size_type i=0; i<S.size(); ++i)
		{
			sort(S[i].begin(), S[i].begin()+S[i].size());
			mm[S[i]]++;
		}
                         return mm.size();
	}
};

 

500的题目:

暴力,计数即可

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
#include <iostream>
#include <cmath>
#include <iomanip>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
 
class ColoredStrokes{
public:
	int getLeast(vector <string> picture)
	{
		int high = picture.size(), wide = picture[0].size();
		int cnt = 0;
		// heng
		for(int i=0; i<high; ++i)
		{
			for(int j=0; j<wide; ++j)
			{
				if(picture[i][j] == 'R' || picture[i][j] == 'G')
				{
					if(picture[i][j] == 'G')
						picture[i][j] = 'B';
					while(j+1<wide && (picture[i][j+1] == 'R' || picture[i][j+1] =='G'))
					{
						if(picture[i][j+1] == 'G')   // 这里先写成[i][j]了,导致WA。。。
							picture[i][j+1] = 'B';
						++j;
					}
					++cnt;
				}
			}
		}
 
		// shu
		for(int j=0; j<wide; ++j)
		{
			for(int i=0; i<high; ++i)
			{
				if(picture[i][j] == 'B')
				{
					while(i+1<high && picture[i+1][j] == 'B')
						++i;
					++cnt;
				}
			}
		}
		return cnt;
 
 
	}
};

 

1000的题目直接WS。

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

《SRM 496 DIV2》有336个想法

  1. 我做TC主要也为了练习和巩固数据结构和算法方面的知识和技巧,以及对于这些知识本身的兴趣,这点我们很相似,希望以后能多交流,呵呵。

  2. @Tanky Woo

    基本同意你的观点,了解相关的方法是一方面,但是变通的能力和熟练又是另外一方面,而且你应该会有感觉:TC因为时间的原因,事实上更注重的是后者。

    TC和ACM还是有不少差别,ACM是团队出赛且时间相对充足,所以靠的是团队的配合,比如有的人擅长实现细节,有的则擅长判断题型和设计解法,毕竟每个队只有一台机器,要在规定的几个小时内近可能好地完成近可能多的题。同时,ACM更讲究解法的时空效率,如果象对待TC水题的方法来对待ACM的题,多数是不行的。即使是水题,在极短的时间内,要把水题做好也不容易,因为水题往往会在实现细节上做文章,而不是复杂的算法本身。

    TC我也是去年年底刚开始做,属于自娱自乐类型,呵呵。

    1. 呵呵,不知道你是不是为了搞这方面的比赛。
      反正曾经我是这么想,但是后来也想开了,我现在并没有把ACM当做一个比赛去对待,我只是为了学习算法,因为我喜欢算法,我觉得没做出一道题,我就很快乐,所以我说做这些题是怡情;但是对于TC,我就把他当做一个比赛,当然不是为了比赛而去比赛,而是当做一个刺激的活动,就像蹦极等一样,也可以让我得到快乐。
      所以我会尽量去提高自己的速度,但是我不会刻意去提高。
      不过我这套想法对于专门的ACMer可能就会嗤之以鼻了~~

  3. 呵呵,LZ很强大啊。。。
    看了背包9讲,以及 母函数专题,都很好啊!
    我现在大二,老多东西不懂了,搞了一段时间ACM,问学长,发现学长们这段时间也不在线,不知楼主能否加个好友,共同探讨一下问题呢?邮箱就是我的QQ

  4. 1k分的题。。。考虑在一小时内要submit,又要解决前面两道题,支持你直接WS,呵呵。

    曾经看到过有人在二十分钟不到的时间里submit了1k的题,而且得分还靠前。。。这是啥样的速度啊!1k的题,一般都比较复杂,所以题干自然也很长,非英语母语的人,审题都得花个十分钟,然后还得写码,测试。。。整个过程二十分钟不到,用时下的话说,太给力了,呵呵。

    我感觉,这类题其实靠得还是熟悉,以及举一反三的能力,当然熟悉是首要的,只要类似的题以前很好的思考过解决过,同样类型的题,是有可能在二十分钟不到的时间里rush出来的,不知Tanky兄对此有何见解?

    1. 嗯,了解是一方面,如果连那个算法都不知道,一般就只能干瞪眼了,就算能力再强,等推算出来,比赛就over了~~

      不过灵活的思维以及熟练又是一方面,比如我们刚接触一个算法,但是几天不用,还是会忘,其实做的题多了,自然见多识广,而且熟练度也大大增强。这也不算是题海战术,其实就是对一个算法最直接的掌握,其实我很感谢ACM,如果没有题目,单看一个算法,容易晕的,通过题目来做,最容易直接掌握。

      因为我都是自己做着玩,所以没有比赛经验,当然时间就不能把握,所以参加TC时间都很紧,不过这一次的SRM496却有点悲剧,题目很简单,做完前两道还有接近40分钟,1K的看不懂,而500的题目给粗心搞错了。像1K的题目我就是属于那种连算法都不知道的情况了,也许也是知道,但是无法应用,说来惭愧,比赛结束到现在,我还没有去看看1K的解答报告。

      你是经常参加TC吗?

发表评论

电子邮件地址不会被公开。 必填项已用*标注