上一页 1 ··· 3 4 5 6 7 8 9 下一页

2014年1月14日

CodeForces 380.C Sereja and Brackets

摘要: 题意一串括号序列,只由(和)组成,然后是m个提问,提问l和r区间内,最大的匹配匹配括号数。思路第一,贪心的思想,用最正常的方式去尽量匹配,详细点说就是,先找到所有的(),然后删除这些(),再找所有的()。用这种方式匹配出来的,就是最优的方案。第二,如果我们把所有的'('当成+1, ')'当成-1, 然后画成函数,那么,我们可以通过函数的图像,来得到得到,这段区间的长度(r-l),这段区间的最小值(min),这段区间没用的')'的数量(f(l)-min),这段区间没用的'('的数量(f(r)-f(l)+(f(l)-min)) 然后就 阅读全文

posted @ 2014-01-14 23:39 ShineCheng 阅读(539) 评论(0) 推荐(0) 编辑

2013年12月3日

POJ 2796: Feel Good

摘要: 题意:一个数组,对于某个区间,这个区间的和*这个区间中的最小值=这个区间的计算值。求这个数组中的最大计算值,并任意输出其的一个左右位置。思路:维护一个最小单调栈。对于某个元素:如果被弹出了,说明它最多向右延伸到这里。对于进栈,如果它的进栈没有造成任何元素的弹出,则说明它的位置就是它左边能延伸到的位置。如果造成元素弹出,那么,最后一个弹出的元素的左边能延伸到的位置就是本元素往左能延伸到的位置。对于两个元素相同时:我不作弹出处理,仅仅把这个元素的位置更新(代码中表现为把这个元素往左延伸的和更新)。在弹出元素时,能求和,而这个和正是元素往右延伸的和。往左延伸的和已经算好,所以这个元素为最小值的最大区 阅读全文

posted @ 2013-12-03 23:26 ShineCheng 阅读(607) 评论(0) 推荐(1) 编辑

2013年11月3日

TopCoder SRM596 DIV2 1000: SparseFactorialDiv2

摘要: 题意:For an integer n, let F(n) = (n - 0^2) * (n - 1^2) * (n - 2^2) * (n - 3^2) * ... * (n - k^2), where k is the largest integer such that n - k^2 > 0. You are given three long longs lo, hi and divisor. It is guaranteed that divisor will be a prime number. Compute and return the number of integers 阅读全文

posted @ 2013-11-03 15:52 ShineCheng 阅读(388) 评论(0) 推荐(0) 编辑

2013年9月28日

HDU 4768: Flyer

摘要: 题意:有N个社团,每个社团三个属性A,B,C,表示会向编号A+k*C的同学发传单(k=0,1,2... && A+k*C #include #include #include #include #include #include using namespace std;int n, a[100001][3];long long sum;bool check(int now){ long long sum = 0; for (int i = 1; i = a[i][0]) { int Right = min(a[i][1], now); ... 阅读全文

posted @ 2013-09-28 20:13 ShineCheng 阅读(278) 评论(0) 推荐(0) 编辑

2013年9月21日

HDU 4749: Parade Show

摘要: 看大神代码,发现上交大神很棒的一个思路题意:在源数字串中找出尽量多的连续子串,要求子串任意两值的大小关系与目标串相同位置的值的大小关系相同。求源串能拿出的子串的最大数量。关键词:RK-Hash优点:O(k)时间完成匹配检查(关键在于他能O(1) 完成 所有 相同位 检查)方法:对于一个K值,用某个进制数来表示其位置。 比如 123121 中 的值 1 最后表示成 100101。 然后,对于目标串也RK-hash,对于某个值,只要比较这个数,就能知道是否相同位都相同了。代码留恋:#include#include#include#include#includeusing namespace std 阅读全文

posted @ 2013-09-21 23:10 ShineCheng 阅读(417) 评论(0) 推荐(0) 编辑

2013年7月3日

区间最大连续和算法

摘要: 暂时起草思路,等待实现ing名称:RMQ扩展算法。(求区间最大连续和)算法复杂度:O(nlgn) + O(q) q为提问次数。预处理:两个sum数组,意义是从第一个(最后一个)到第i个 这么多数的和。对两个sum数组进行rmq预处理类似rmq对整个待查询数组(a)预处理 { d[i][0] = a[i]; d[i][j] = max (d[i][j-1], d[i+2^(j-1)][j-1], sumL[rmq(i,i+2^(j-1))] + sumR[rmq(i+2^(j-1), i+2^j)] - sumALL)}d[i][j] 表示第i个 到 第 i+2^j 个 区间内 的最大连续和su 阅读全文

posted @ 2013-07-03 17:37 ShineCheng 阅读(1484) 评论(0) 推荐(0) 编辑

2013年6月27日

hdu 2058:The sum problem

摘要: 题意序列1,2,...n,求出所有子串,使得和为m类型数学思路由求和公式易得b(b+1)/2 - a(a+1)/2 = m ( 0 File Name: hd2058.cpp > Author: Shine > Created Time: 2013-06-27 下午 6:16:55 > QuestionType: 数学 > Way: (b-a)(a+b+1) == 2m (其实暴力枚举a+b+1的值就可以了(到根号2m)) > Submit: 3WA 1AC > Gain: 尝试了一下状态枚举和分解质因子的写法 > Experien... 阅读全文

posted @ 2013-06-27 20:19 ShineCheng 阅读(266) 评论(0) 推荐(0) 编辑

2013年6月26日

HDU 2059:龟兔赛跑

摘要: 题意一条直线上有n个充电站(告诉你位置),乌龟刚开始有满电的电车,能开c距离,电动速度vt1,没电后脚踩速度vt2,到充电站可以选择充电,充电时间为t。直线长l, 兔子速度为vr, 问乌龟有没有可能赢。类型:DP思路:my:类似cf一题的思路大体思路:把一段路合理分割,就可以把重叠的区间分开,然后就可以算出每段路的最小花费。最后寻找最短的拼接方法就好了。首先状态压缩,节点为所有充电站的点和他们+c的点(另外:包含0和c)然后对于每个点i,算出他们到之前的某个点j的最小花费cost[i][j]然后 设dp[i]为到i号节点所需最小时间状态转移为 dp[i] = min(dp[j] + cost[ 阅读全文

posted @ 2013-06-26 13:08 ShineCheng 阅读(245) 评论(0) 推荐(0) 编辑

2013年6月24日

POJ 1011:木棒

摘要: 传送门http://poj.org/problem?id=1011题目大意已知原来有等长若干木棒,现在给你一堆断了的木棒的长度,问原来的木棒最短是多长题目类型DFS + 剪枝 + “贪心优化”思路http://blog.csdn.net/lyy289065406/article/details/6647960三个剪枝1)设最长的木棒长度max ,木棒长度和sum, 则可能区间为[max, sum/2] 并且 长度能被sum整除2)一次拼接中,一次循环中,同长度的木棒只检测一次3)每次拼接的第一个木棒,如果不成功则说明这个木棒一定不能成功。所以break一个优化需要逆序搜索。(两个短的比一个长的 阅读全文

posted @ 2013-06-24 14:36 ShineCheng 阅读(530) 评论(1) 推荐(0) 编辑

2013年6月11日

CodeForces 315.D Sereja and Periods

摘要: 传送门:http://codeforces.com/contest/315/problem/D类型:字符串题意:给出两个重复的字符串,告诉你重复单元和重复次数,问第二个字符串在第一个串中出现的次数(子序列)方法:http://blog.csdn.net/u010710717/article/details/9059403求出串二单元每个位置开头时,在串一单元中能完整出现的次数,和经过这个单元后, 串二当前位置。然后从0到串一重复次数模拟一遍。得到串二单元在串一中出现的完整次数最后除以串二重复次数(取整),得到答案。代码: #include <stdio.h> #include .. 阅读全文

posted @ 2013-06-11 12:11 ShineCheng 阅读(253) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 下一页

导航