今天是我们学校的多校连训,体验了一把judge。我们队出的恶心大模拟全场无人提交。Orz
相关题解:
http://hi.baidu.com/%D2%BB%CE%BB%C1%E3/blog/item/ee963758940cce312834f09e.html
另外,在比赛中,在POJ上做了四个题目。
一个是poj1002,一个很经典的题目,说说我的做法:
1,把每个字符串,转换成标准字符串 (ctstr())
2,用map存第个电话号码的次数
3,输出
每个步骤对应一个函数,写的很清晰。poj上交g++会TLE,交C++只要1200ms。Zoj上不会TLE。
一个是poj1032,归类为数学,构造题:
对于N,用下面的方法分解为n1,n2....ni:
1,找一个sum=2+3....+i,使sum尽量大,但小于N。
2,设diff = N - i,把diff从后向前加到2....i数列上。
正确性不难看出。
一个是poj1080,DP题,经典题:
给你二个字符串,和一个相应字符对所对应的“相似值”,你可以在二个字符串中添加‘-’,求最大相似度。
看到题目给的相似值的表,相同字符的相似值最大,于是就想到最长公共子序列。写下LCS的函数,发现求相似度不太好写。
后来发现方向是对的,思维太死板了,没想到变通一下。
做法如下:
f[i][j] = f[i-1][j-1] + val(s1[i],s2[j]),f[i][j-1]+val('-','s2[j]),f[i-1][j] + val[s1[i],'-')
val为对应字符对的相似度。DP方程类似于LCS
还有一个题是poj1118,几何题,暴力乱搞题:
给你N个平面上的点,输出在一条直线上的点数,这第直线上的点数最多。
没想到什么的办法,数据为N<700,所以直接暴力搞。
SB了,写了个n^3的,不用想TLE。
加了若干优化,依然TLE。
看了一下别人的,发现只要枚举一个点,然后,看剩下的所有点与这个点的斜率,斜率相同的肯定是一条直线,这样写只有N^2。
相关代码就不放出来了,自己的代码风格不好。