自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Neutralzz的博客

我有自己的梦想和追求!

  • 博客(6)
  • 收藏
  • 关注

原创 Light OJ 1157 LCS Revisited (DP)

解析:dp[i][j]是s[1..i]与t[1...j]的LCS长度,num[i][j]为不同LCS的个数。 关键点在于s[i]!=t[j]且dp[i-1][j]=dp[i][j-1]时如何转移。 如果dp[i][j]!=dp[i-1][j-1]且dp[i-1][j]=dp[i][j-1],说明s[i]=t[j-1]且s[i-1]=t[j],这时num[i][j] = num[i-1][j]+

2016-03-30 18:44:28 507

转载 Light OJ 1147 Tug of War (背包+状压)

参考:点击打开链接 [code]: #include #include #include using namespace std; typedef long long LL; const int maxn = 2e5+5; int n,m,a[105]; LL dp[maxn]; int mabs(int x){ return x<0?-x:x; } int main(){ i

2016-03-30 15:37:22 321

原创 HDU 4595 Similar Number (主席树)

解析:首先,求出对于每一个位置i,以第i个元素结尾的相似序列的最大长度和最小长度,用lb[i]和rb[i]记录对应的位置,形成一个三元组(i,lb[i],rb[i])。 这个可以通过递推在O(n)内求出,然后将三元组映射成二维平面的线段(i是纵坐标,lb[i],rb[i]是左右端点的横坐标)。 对于[l,r]的查询,就是对纵坐标[1,r]的所有线段中位于[l,r]的和。 用主席树就可以实现。

2016-03-28 21:42:55 436

原创 Light OJ 1092 Lighted Panels (状压)

解析:可以参考POJ 3279。不同的是这里要把最上面一行和最左一行一起状压。 [code]: #include #include #include using namespace std; const int INF = 0x3f3f3f3f; char mp[10][10]; int n,m,state[10][10],flip[10][10]; void init(){ i

2016-03-25 11:52:38 362

原创 LightOJ 1073 DNA Sequence (状压DP+字符串比较)

题意:给出n个字符串,求包含这n个字符串为子串的最短的串,如果有多个满足条件的字符串,输出字典序最小的字符串。 解析:求串的最短长度非常容易,KMP处理出一个L[i][j](将i拼接到j的前面需要增加的最少的字符数),然后状压DP即可。 难住我的是字典序最小。。。不过最后的做法估计的效率应该也不是最好的。。 在DP转移的时候记录其前驱,在更新的时候如果长度相等,就和原先的前驱进行比较。关键是

2016-03-24 21:16:25 581

原创 LightOJ 1018 状压DP

解析:这个题目的关键就是在于怎么把复杂度降到O(n*2^n) 状压是肯定会想到的,可一般的思路是枚举线来进行状压,这样O(n^2*2^n)是会TLE的。 正确的降复杂度的方法是:枚举线的时候固定一个点,再枚举其他的点形成一条线(因为每一个点都是必须要被某条线覆盖的 这样就讲了一个n的复杂度。 [code]: #include #include #include using na

2016-03-22 18:52:34 424

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除