↓ Skip to main content
  1. Categories/

ACM

2016

spoj DISUBSTR - Distinct Substrings (统计字串个数,后缀数组)

·1022 words·3 mins
题目链接 题意:给出一个字符串,问所有不同的字串的个数。 思路:直接求比较困难。我们考虑,假如组成字符串的所有字符都不相同,那么就没有相同的字串。假设字符串的长度为 n,那么长度为 1 的子串有 n 个,为 2 的有 n-1 个……为 n 的有 1 个,一共就是 n*(n+1)/2 个,但是实际上会有重复的。

poj 3261 Milk Patterns (最长公共子串,后缀数组)

·813 words·2 mins
poj3261 题意:给一个字符串,要求找出至少出现k次的最长重复子串… 思路:后缀数组,然后再次用到了根据height数组对后缀进行分组的套路…二分判定合法性,对于当前的最长长度x,分组使得每组中的height[i]都大于等于x,所不同的是,判定变成了存在一个组,后缀的个数至少为k个(因为这样,就可以对于大于等于k个的后缀,同时取前x长度,得到的就是出现了至少k次且长度为x的前缀)1A,蛤蛤蛤

hdu 1280 前m大的数 (计数排序)

·474 words·1 min
hdu1280 题意:给出n(3000)个数,两两求和,输出最大的m(5000)个和。 思路:由于数据有限,想到计数排序。。。以及,m个可能刚好某个数据没有全部输出,要在while里判断一下。。

suffix array (转自 codechef)

·2440 words·5 mins
原文链接:链接 讲了后缀数组的概念,然后从最暴力的 O(nnlogn) 的复杂度(O(n) 用来比较字符串,O(nlogn) 是排序的复杂度)逐步优化,依据各个串之间的关系,大概讲了倍增算法,以及给出了一篇 The Skew Algorithm 的论文。

bzoj 1874: [BeiJing2009 WinterCamp]取石子游戏 (sg函数,要求输出第一步具体方案)

·826 words·2 mins
1874: [BeiJing2009 WinterCamp]取石子游戏 # Time Limit: 5 Sec Memory Limit: 162 MB Submit: 726 Solved: 296 [Submit][Status][Discuss] Description # 小H和小Z正在玩一个取石子游戏。 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏。 小H先进行操作,他想问你他是否有必胜策略,如果有,第一步如何取石子。

codeforces 429 B. Working out (dp)

·792 words·2 mins
cf429 b 题目链接 题意: n*m个格子,每个格子有一个人value a[i][j]>0,连个人,一个从左上角到右下角,每次只能向下或者向右移动,一个从左下到右上,每次只能向上或者向右移动,现在要求两个人恰好相遇一次,相遇点的a不算数,问在满足这样的条件下使得两个人的a最大。。。(很坑的一点是。。这里相遇并不考虑时间。。就是说,不在同一时间都到达过某一格子,也认为相遇。所以我认为,题目含义更准确的说法是,路径只有一个交点)

hdu 2050 折线分割平面 (找规律,递推)

·246 words·1 min
hdu 2050题目链接 题意:n条折线。。最多能把平面分成几部分。。 思路:联想到m条直线,最多能把平面分成m*(m+1)/2+1部分。。 画图发现。。。 f[2*n-1]==g[n]。。

hdu 2048 神、上帝以及老天爷 (错排公式)

·504 words·2 mins
hdu2048 题目链接 题意:n个人不放回的从一个有n个每个人对应id的卡片的盒子取一张卡片,取的正好和自己的对应就算中奖。求所有人都没有中奖的概率。 思路:错排。。。 复习了一下错排公式。。。d[n] = (n-1)*(d[n-1]+d[n-2]) (d[1]=0,d[2]=1)

hdu 2047 阿牛的EOF牛肉串 (递推)

·407 words·1 min
hdu 2047 题目链接 题意:一个由’E’ ‘O’ ‘F’ 组成的长度为n的字符串。‘O’不能相邻。。问方案数。。 思路:递推。。。蒙对了(误 考虑第n位,如果为’E’或者‘F’,此时对n-1位没有限制,答案为f[n-1],所以 一共是2×f[n-1]

hdu 2045 不容易系列之(3)—— LELE的RPG难题 (递推)

·385 words·1 min
hdu2045 题目链接 题意: 一串 方格,每个格子可以涂三种颜色,要求相邻的格子颜色不能相同,首尾格子也不能相同。 思路:递推。没推出来23333 我好菜啊.jpg. 考虑有n个格子。。那么假设第n-1个格子的颜色是a,根据第一个格子和第n-1个格子颜色是否相同分为两种情况。

hdu 2018 母牛的故事 (基础dp,记忆化搜索)

·623 words·2 mins
hdu2018题目链接 题意:第1年有1头奶牛,每年生一头奶牛,新生的奶牛从生下来的第四年(包括生下来那年)也开始每年一头奶牛。 问第n年有多少头奶牛。 思路:最容易想到的。。递推一下。。。dp[i] = dp[i-1] + dp[i-3] (注意初始化不是一个dp[1]=1,而是dp[1..4]=1..4)

hdu 2084 数塔 (基础dp)

·450 words·1 min
hdu2084题目链接 题意:dp入门题。。。数字三角形。。 思路: 昨天看mit公开课。。。讲到dp的精髓是sub-problem+ reuse… 为什么自底向上呢。。。 初始化dp[n][i] = a[n][i]其实是在处理只有最后一行的子问题。。。

hdu 4283 You Are the One (区间dp)

·568 words·2 mins
hdu 4283题目链接 题意:有N个人按顺序排成一排上台表演,每个都有一个num[]值,若在他是第k个上场的人,则会有num[]*(k-1)的unhappiness。台下有一个黑屋(stack),对每一个人,可以选择让他先进屋子或者直接上台。现在让你找到一个最优方案使得所有人的unhappiness之和最小。

poj 3661 Running (区间dp)

·1023 words·3 mins
poj 3661题目链接 题意:锻炼,一共n分钟,每分钟可以选择跑步或者休息,第i分钟跑步可以跑d[i]米,并增加一点疲劳度,如果选择休息,那么每分钟减少1点疲劳值。一旦开始休息,必须休息到疲劳值为0才能再次开始跑步。疲劳值不能超过m.第n分钟的时候疲劳值必须为0,否则之后会感觉身体被掏空。问n分钟最远多多远。

poj 1651 Multiplication Puzzle (区间dp)

·611 words·2 mins
poj 1651题目链接 题意:n个数,删掉a[i]的得分是a[i]*a[i-1]*a[i+1],两个端点的不允许删。问删完n-2个数得到的最小分数是多少。 思路:能想到设计状态dp[i][j]表示区间[i,j]的最小分数。然后就没思路了。 T T