- 博客(7)
- 收藏
- 关注
原创 HDU5672String
尺取法 基本步骤: 1.初始化左右端点为起点 2.不断扩大右端点,直到满足条件 3.如果第二步中无法满足条件,则终止,否则更新结果 4.将左端点扩大1,然后回到第二步,知道左端点到达结尾 #include #include using namespace std; int k,c[30]; char s[1000005]; int main()
2016-05-08 18:21:57
368
原创 HDU5671Matrix
矩阵处理,记录好每行与列在原来的位置即可 原来的第i行现在在第x[i]行,原来的第i列现在在第y[i]列 xd[i]表示第i行需要增加的值,yd[i]表示第i列需要增加的值 #include #include using namespace std; const int maxn=1005; int n,m,q; int a[maxn][maxn]; int x[maxn],y[m
2016-05-08 16:46:22
308
原创 POJ2229 Sumsets
递推即可,设n可表示成dp[n]种二次幂的方式,则有 1.当n为奇数时,显然必定有一个1,故dp[n]=dp[n-1]; 2.当n为偶数时,有2种情况 (1)分解的二次幂和中含有1,则必然有2个1,故有dp[n]+=dp[n-2]; (2)分解的二次幂和中不含1,则有dp[n]+=dp[n>>1]; #include using namespace std; const i
2016-05-01 18:20:16
277
原创 完全背包
题目:hihocoder#1043 关于背包问题的详细解释可以参见《背包九讲》 #include #include using namespace std; const int maxn=505; const int maxm=100005; int need[maxn],value[maxn],dp[maxm]; int main() { memset(dp,0,size
2016-04-22 21:18:54
291
原创 01背包
题目:hihocoder#1038 #include #include using namespace std; const int maxn=505; const int maxm=100005; int need[maxn],value[maxn],dp[maxm]; int main() { memset(dp,0,sizeof dp); int n,m;
2016-04-22 21:14:21
217
原创 最大连续子序列和
#include using namespace std; long long a,ans; int main() { int t; cin>>t; while(t--){ int n; cin>>n; long long maxsum,ans; sum=maxsum=0; ans=-1e8;//根据需要自行修改
2016-04-19 17:51:06
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人