- 博客(4)
- 资源 (2)
- 收藏
- 关注
原创 HDU 5321 Beautiful Set
题目链接 我们可以枚举子集的大小k,求出所有大小为k的子集对答案的贡献,问题就解决了。#include <bits/stdc++.h> using namespace std; #define prt(k) cerr<<#k" = "<<k<<endl typedef long long ll; typedef long long LL; const ll inf = 0x3f3f3f3f; co
2015-08-17 11:18:38 1079
原创 HDU 3507 Print Article
题目链接斜率DP的入门题。题意很清楚,就是输出序列a[n],把连续的单词放在同一行输出的费用是连续输出的单词费用和的平方加上常数M一行的费用为cost=(∑C[i])2+Mcost = (\sum{C[i]})^2 + M让我们求这个费用的最小值。设 SiS_i 为 CiC_i 的前缀和。设dp[i]表示输出前i个单词的最小费用,那么有如下的DP方程:dp[i]=min(dp[j]+(Si−Sj)2
2015-08-15 19:28:05 843
原创 HDU 5371 Hotaru's problem
manacher算法介绍 先用求回文串的Manacher算法,求出以第i个点和第i+1个点为中心的回文串长度,记录到数组c中 比如 10 9 8 8 9 10 10 9 8 我们通过运行Manacher求出第i个点和第i+1个点为中心的回文串长度 0 0 6 0 0 6 0 0 0 两个8为中心,10 9 8 8 9 10是个回文串,长度是6。 两个10为中心,8 9 10 10
2015-08-12 16:31:18 658
原创 HDU 5372 Segment Game
注意到一个很重要的性质:每次添加的线段必定比前面添加的线段长。 所以可以用 左端点>=当前线段左端点的线段数 - 右端点>当前线段右端点的线段数,就是答案。 Segment Game Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submissio
2015-08-12 11:40:32 883
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人