ACM
setidfine
这个作者很懒,什么都没留下…
展开
-
POJ_1221“单调递增”回文-----动态规划
直奔主题:设f(n,m)表示 n 经分解后最大子项不超过 m 的非递减序列的种数,则有: f(n,m) = f(n-m,m) + f(n,m-1)两种情况: 1、至少存在一个最大子项为 m,然后分解 n-m 2、最大子项为 m-1那么 ans(N) = f((N-k)/2, k) k=N,N-2,N-4...0(k表示中心的那个数,且为中轴线)如果 N 为偶数,则要加上一种情况:中轴线不过任何数字 ans[N] += f(N/2, N/2); #include usi原创 2011-03-19 23:12:00 · 505 阅读 · 0 评论 -
POJ_2479 最大连续子序列和
题目的意思很简单,看图就能懂:把一数组分为两部分,使得两部分的连续子序列和的和最大(有点绕口啊)对于最大连续子序列和,A[i]...A[j],肯定不会存在某一k值( iint currentMax = 0; int max for(int i=1; icurrentMax ? max:currentMax; if(currentMax如此只需要遍历一次数组即可得到最大的连续子序列和,复杂度为 O(N)而对于本题,则还需要一步,即如何分割数组使得两部分的最大连续子序列和的和最大:1、设end[i]表示原创 2011-03-18 13:27:00 · 1185 阅读 · 3 评论 -
POJ_2352线段树
因为输入的 Y 是非递减序列,所以只用考虑输入的 X 值,当输入时,该点的level即是在该点之前已经输入了多少个 x 坐标比当前小的星星数。所以我们要记录的是任何 x 坐标之前已经出现了多少个星星。对于动态区间问题,线段树是利器!#include using namespace std; typedef unsigned short unshort; const unshort MAX_N = 32000; unshort N; unshort ans[15005]; struct Node原创 2011-03-23 01:37:00 · 430 阅读 · 0 评论 -
POJ_3468 线段树--区间的动态赋值和求和
如果每次赋值都遍历到叶子节点,则赋值的复杂度变为O(N),因此赋值时深入到需要赋值的那个区间就应当停止,记录当前的增量,如果下次搜索时,根据需要向下传递这个增量,这样的复杂度就降下来了#include using namespace std; const int MAX_N = 100000; int A[MAX_N+5]; int N, Q; struct Node { int left; int right; __int64 sum; __int64原创 2011-03-23 16:39:00 · 518 阅读 · 0 评论 -
POJ_2528 线段树+离散化
看了那么多代码和解说,什么也没有看懂,最后找到了这篇博文(http://www.cppblog.com/MiYu/archive/2010/10/15/129997.aspx),茅塞顿开啊!代码就不贴了,直接看那边博文原创 2011-03-27 13:25:00 · 415 阅读 · 0 评论 -
POJ_1011 DFS+剪枝
暂时只想到两处可以剪枝的地方。#include #include #include #include using namespace std; const int MAXN = 64; int stick[MAXN]; bool flag[MAXN]; int n; int sum; int len; int cnt; bool cmp(int a, int b) { return a > b; } bool dfs(int l, int start, int nu原创 2011-05-05 10:22:00 · 384 阅读 · 0 评论 -
最大二分图最大匹配的匈牙利算法
匈牙利算法基本思想:找到满足以下条件的路径起点和终点是未纳入已分配边的顶点,且两个顶点在不同的两个划分这条路径的奇数边是未纳入分配的边,而偶数边是已近被分配的边。根据1和二分图的性质,路径经过边的数目一定是奇数于是:未纳入匹配的边刚好比已经纳入匹配的边多一个。如果把这样的路径取反原创 2011-07-19 13:43:15 · 397 阅读 · 0 评论 -
各种输入问题
除非特殊说明,所有文章均为原创,转载请注明出处哦 o(∩_∩)o http://blog.csdn.net/setidfine c++ 读取字符 istream & get(char &ch) // 从流中读取任意一个字符,包括空格 " " 和换行 "/n" int get(void) // 从流中读取任意一个字符,包括空格 "原创 2011-04-28 23:08:00 · 427 阅读 · 0 评论