上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 34 下一页
摘要: 颓废的一个下午,一直在切水题,(ˉ▽ ̄~)首先如果这些点是对称的话,那么它们的对称轴就是x = m,m是横坐标的平均值。把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这个点是否在集合里面。如果有一个不在的话,说明不能构成对称图形。 1 #include 2 #inclu... 阅读全文
posted @ 2015-04-24 17:01 AOQNRMGYXLMV 阅读(655) 评论(0) 推荐(0) 编辑
摘要: 今天下午略感无聊啊,切点水题打发打发时间,=_=||把所有字符串插入到一个set中去,然后对于每个字符串S,枚举所有可能的拆分组合S = A + B,看看A和B是否都在set中,是的话说明S就是一个复合词。 1 #include 2 #include 3 #include 4 #include... 阅读全文
posted @ 2015-04-24 15:53 AOQNRMGYXLMV 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 看到大神说location的值不会超过1000,所以这就简单很多了,用一个deg数组记录下来每个点的度,出度-1,入读+1这样。最后判断每个点的度是否为0即可。至于为什么会这样,据说是套数据套出来的,比如在代码里加一句if(a >= 1000) for(;;),get新技能!如果按正常来做的话,我能... 阅读全文
posted @ 2015-04-24 15:31 AOQNRMGYXLMV 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 直接用STL里的queue模拟即可。 1 #include 2 #include 3 using namespace std; 4 5 const int maxn = 60; 6 int discarded[maxn], cnt; 7 8 int main() 9 {10 int ... 阅读全文
posted @ 2015-04-24 13:45 AOQNRMGYXLMV 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 大白书上P42那个计算器的题目就用到了这个办法,Floyd判圈法。当然,用STL里的map也是可以的。 1 #include 2 #include 3 4 const int maxn = 20; 5 int n; 6 int a[maxn], b[maxn], c[maxn]; 7 8 v... 阅读全文
posted @ 2015-04-24 13:16 AOQNRMGYXLMV 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 话说STL的I/O流用的还真不多,就着这道题熟练一下。用了两个新函数:cout 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 ... 阅读全文
posted @ 2015-04-24 11:42 AOQNRMGYXLMV 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 将所有后缀按照字典序排序后,每新加进来一个后缀,它将产生n - sa[i]个前缀。这里和小罗论文里边有点不太一样。height[i]为和字典序前一个的LCP,所以还要减去,最终累计n - sa[i] - height[i]即可。 1 #include 2 #include 3 #include ... 阅读全文
posted @ 2015-04-24 09:23 AOQNRMGYXLMV 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 用一个特殊字符将两个字符串连接起来,然后找最大的height,而且要求这两个相邻的后缀的第一个字符不能在同一个字符串中。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 200000 +... 阅读全文
posted @ 2015-04-23 22:34 AOQNRMGYXLMV 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 找重复次数最多的字串,如果有多解,要求字典序最小。我也是跟着罗穗骞菊苣的论文才刷这道题的。首先还是枚举一个循环节的长度L,如果它出现两次的话,一定会包含s[0], s[L], s[2L]这些相邻两个之间。然后枚举相邻的两个,尽可能的向前和向后延伸,假设延伸长度为k,则重复次数为k / L + 1向后... 阅读全文
posted @ 2015-04-23 21:34 AOQNRMGYXLMV 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 这道题和UVa 12206一样,求至少重复出现k次的最长字串。首先还是二分最长字串的长度len,然后以len为边界对height数组分段,如果有一段包含超过k个后缀则符合要求。 1 #include 2 #include 3 #include 4 using namespace std; 5 ... 阅读全文
posted @ 2015-04-22 19:01 AOQNRMGYXLMV 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 首先对物品按重量从小到大排序排序。因为每个背包最多装两个物品,所以直觉上是最轻的和最重的放一起最节省空间。考虑最轻的物品i和最重的物品j,如果ij可以放在一个包里那就放在一起。否则的话,j只能自己单独放在一个包里,因为最轻的都不行,其他物品就更不可能和j放在一起了。如果j可以和多个物品放在一起,那么... 阅读全文
posted @ 2015-04-22 13:06 AOQNRMGYXLMV 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 体验了一把字符串Hash的做法,感觉Hash这种人品算法好神奇。也许这道题的正解是后缀数组,但Hash做法的优势就是编码复杂度大大降低。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = ... 阅读全文
posted @ 2015-04-22 12:00 AOQNRMGYXLMV 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 大白书第一章的例题,当时看起来很吃力,现如今A这道题的话怎么写都无所谓了。思路很简单,就是枚举胡哪张牌,然后枚举一下将牌,剩下如果能找到4个顺子或者刻子就胡了。由于粗心,34个字符串初始化写错,各种WA。 1 #include 2 #include 3 #include 4 #include ... 阅读全文
posted @ 2015-04-22 10:56 AOQNRMGYXLMV 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目不光要求要到达终点而且要求所走的步数为5的倍数,每个时刻有三个选择,前进,左转弯,右转弯。所以在vis数组中新增加两个维度即可,vis[x][y][dir][color]表示在(x, y)格子方向朝dir与地面接触的扇形的颜色为color,这个状态是否到达过。 1 #include 2 #in... 阅读全文
posted @ 2015-04-21 19:24 AOQNRMGYXLMV 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 也是一个走迷宫的问题,不过又有了点变化。这里迷宫里有若干把火,而且火每秒也是向四个方向蔓延的。问人是否能走出迷宫。我用了两遍BFS,第一遍把所有着火的格子加入队列,然后计算每个格子着火的时间。第二遍便是走迷宫,只有当这个格子不是墙,而且当前时间在这个格子着火之前才能拓展。当然,并不是所有的空格都一定... 阅读全文
posted @ 2015-04-21 14:15 AOQNRMGYXLMV 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 博弈的题目,打表找规律还是相当有用的一个技巧。这个游戏在原始的Nim游戏基础上又新加了一个操作,就是游戏者可以将一堆分成两堆。这个SG函数值是多少并不明显,还是用记忆化搜索的方式打个表,规律就相当显然了。 1 #include 2 #include 3 4 const int maxn = 1... 阅读全文
posted @ 2015-04-21 12:51 AOQNRMGYXLMV 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 姑且把它归类为一道博弈吧,毕竟这也是在找必胜方案。十分有意思的一道题目,设计一种方案让你支持的1队获胜。题目给出了两个很重要的条件:1队能打败至少一半的队伍对于1队不能打败的黑队,一定存在一个1队能打败的灰队,使得这支灰队能够打败黑队。也就是说1队可以通过灰队间接打败黑队一共有2n支队伍,每轮比赛会... 阅读全文
posted @ 2015-04-21 11:32 AOQNRMGYXLMV 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 看来对height数组进行分段确实是个比较常用的技巧。题意:一个主题是可以变调的,也就是如果这个主题所有数字加上或者减少相同的数值,可以看做是相同的主题。一个主题在原串中至少要出现两次,而且一定要有不相交的两次。因为说了可以变调,所以我们处理每相邻两项的差值,这样就得到n-1个数字。然后找最大的不相... 阅读全文
posted @ 2015-04-21 10:25 AOQNRMGYXLMV 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 利用height值对后缀进行分组的方法很常用,好吧,那就先记下了。题意:给出n个字符串,求一个长度最大的字符串使得它在超过一半的字符串中出现。多解的话,按字典序输出全部解。分析:在所有输入的字符串后面加一个原串中没有的且互不相同的字符,然后将新得到的n个字符串拼接成一个长的字符串。(为什么要加互不相... 阅读全文
posted @ 2015-04-20 16:58 AOQNRMGYXLMV 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 对于一个水坑,水平面肯定是相等的。(废话,不然为什么叫水ping面)因为水面不能碰到天花板,所以将水面向两边延伸要么碰到墙壁要么延伸到洞穴外面去。设h(i)表示向左延伸不会碰到天花板的最高水平面,可以线性从左往右扫描计算出来。用level标记当前水平面高度,level初始为s[0]如果p[i] > ... 阅读全文
posted @ 2015-04-19 16:36 AOQNRMGYXLMV 阅读(218) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 34 下一页