上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 16 下一页
摘要: 昨天看了下差分约数系统的含义,其实就是如果有n个变量在m个形如aj-ai>=bk条件下,求解的此不等式的方法。 而这种不等式的解法其实就是转化为图论的最小路的算法求解的。我们将上面的不等式边形后得到aj>=ai+bk正好就可以看做是从ai到aj权值是bk的一条路径最短的边。这样一来,只要依照题目的条件写出一系列这样的不等式,也就是相当于按照题意增加了一些合法的边,也就完全转化为了最短路的算法。 再看这道题,题目说[ai, bi]区间内和点集Z至少有ci个共同元素,那也就是说如果我用Si表示区间[0,i]区间内至少有多少个元素的话,那么Sbi -Sai >= ci,这样我们就构 阅读全文
posted @ 2013-08-16 11:30 再见~雨泉 阅读(4713) 评论(0) 推荐(0) 编辑
摘要: 链接http://poj.org/problem?id=2155题目操作就是说,每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,每次查询只查询某一个点的值是0还是1.方法:二维线段树,这个东东我纠结了好久才慢慢弄好。二维线段树其实就就是在第一位区间的每个节点下再建一颗线段树,表示第二维的区间。在修改的时候只需要先找到第一维的对应区间,在在这个区间的弟二维中查找对应区间,再做修改即可。而查找的时候,由于不同的第一维区间可能会有包含关系,所以需要对每个目标所在第一维区间查找第二维区间。比如线段树的区间大小是3×3,那么在查找第一维区间是[1,2],第二维区间是[1,2]时, 阅读全文
posted @ 2013-08-15 09:05 再见~雨泉 阅读(8152) 评论(0) 推荐(0) 编辑
摘要: 题目大意就是说帮你给出一个序列a,让你求出它的非递减序列有多少个。 设dp[i]表示以a[i]结尾的非递减子序列的个数,由题意我们可以写出状态转移方程: dp[i] = sum{dp[j] | 1‘5’,所以以‘5’结尾的dp值应该也是1,正好排序后‘5’在第4个,在‘8’前面,自然dp[4]计算出来还是1 3、同理,‘3’出现在第二个,dp[2] = 1 4、然后到‘4’,他在排序后出现在第3 个,而原数组中‘4’之前有一个数‘3’,所以计算出来以‘4’结尾的dp[]值应该就是以‘3’结尾的dp值+1等于2,而我们看排序后4出现在第3个,而第3个之前又正好有一个dp[2]=1已经被计算出来. 阅读全文
posted @ 2013-08-14 21:18 再见~雨泉 阅读(369) 评论(0) 推荐(0) 编辑
摘要: IDOriginTitleProblem AHDU 2544 最短路 Problem BHDU 3790 最短路径问题 Problem CHDU 3665 Seaside Problem DHDU 1869 六度分离 Problem EHDU 1874 畅通工程续 Problem FHDU 1317 XYZZY Problem GHDU 4360 As long as Binbin loves Sangsang Problem HPOJ 1847 Tram Problem IPOJ 1062 昂贵的聘礼 题目就挂在这里了,还有F,G,H没有搞出、有一个大的教训就是以后不管有没有重边,一律都考虑 阅读全文
posted @ 2013-08-13 02:04 再见~雨泉 阅读(202) 评论(1) 推荐(0) 编辑
摘要: 今天做了一个最短路的练习,前面几道都还比较水,最后一道不久以前做过,而且还纠结过很长一段时间,方法记下了,所以做出来了。可是回头看看自己的代码,发现似乎全部都是照搬的白书的代码。想要重新看看白书加深一下了解,却发现,有关最短路的好多东西都还没有了解过,比如说图的邻接表的使用以及优先队列的优化都还不曾了解。再往前一看,却发现最小生成树的方法居然也不记得了。所以又重新看了看书,加深一下了解,下面把有关最短路的问题先简单整理一下,待以后慢慢添加。 首先是最小生成树,他指的是权值最小的没有环的图。而解最小生成树就有一个最经典的方法,那就是Kruskal。下面是伪代码先将所有的边按照权值的从小到大... 阅读全文
posted @ 2013-08-13 00:36 再见~雨泉 阅读(257) 评论(1) 推荐(0) 编辑
摘要: 题目大意就是说帮你给一些(n个)乱序的数,让你求冒泡排序需要交换数的次数(na[j]的数对)的个数。而我们再回顾一下归并排序的过程:假设回溯到某一步,后面的两部分已经排好序(就是说当前需要归并的两个部分都是分别有序的),假设这两个序列为序列a1:2 3 5 9 序列a2:1 4 6 8此时我们的目的就是要将a1和a2合并为一个序列。由于在没排序前a2序列一定全部都是在a1序列之后的,当我们比较a2的1与a1的2时,发现1 2 #include 3 #include 4 #define mem(a) memset(a,0,sizeof(a)) 5 #define MIN(a , b) ((a.. 阅读全文
posted @ 2013-08-10 19:51 再见~雨泉 阅读(6126) 评论(0) 推荐(2) 编辑
摘要: 此题的大意思说有一串珠子,每个珠子都有自己的欣赏值value,现在给你一串珠子每个的欣赏值,并给出一些询问,查询某个区间内部总欣赏值是多少,但是有一个约定就是如果这个区间内部有两个珠子的欣赏值是一样的,那么他们就视为一个。其实也就是求某个区间内部不同的数的和。这里学到了一个比较好的方法,那就是离线操作。根据我的理解,离线操作就是为了解决在询问中所遇到的矛盾的,它在本题上的实现就是先将查询排序,比如按照每个查询的右端点的升序排序,这样的话每次查询一个区间的时候,我们就把它的右端点到上一个查询的右端点之间且在之前已经出现过了相同价值的点删除掉,这样的话就可以保证对后面的查询不会有影响。具体实现就是 阅读全文
posted @ 2013-08-10 11:38 再见~雨泉 阅读(1186) 评论(0) 推荐(0) 编辑
摘要: 题目链接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28619#overview密码 acmore还是感觉不怎么会线段树,还是得给自己另外多找点题目练练Problem A HDU 3874Necklace 树状数组+离线操作见http://www.cnblogs.com/gj-Acit/p/3249827.htmlProblem B HDU 2227Find the nondecreasing subsequences 见http://www.cnblogs.com/gj-Acit/p/3258508.htmlProblem . 阅读全文
posted @ 2013-08-09 23:33 再见~雨泉 阅读(215) 评论(0) 推荐(0) 编辑
摘要: HDU 1257题目大意就不要介绍了吧。为了拦截所有的导弹,我们的第一想法就是贪心,就是觉得要每一个导弹防御系统尽可能拦截多的拦截更多的导弹但是实际上这种想法是不对的,下面就可以给出一个反例:导弹依次飞来的高度依次是 6 4 1 7 3 2.如果你让拦截6之后还尽可能拦截更多的话,那就是6 4 3 ... 阅读全文
posted @ 2013-08-05 17:39 再见~雨泉 阅读(1300) 评论(3) 推荐(3) 编辑
摘要: Apple TreeTime Limit: 2000MSMemory Limit: 65536KTotal Submissions: 16180Accepted: 4836DescriptionThere is an apple tree outside of kaka's house. Every... 阅读全文
posted @ 2013-08-04 20:42 再见~雨泉 阅读(5269) 评论(0) 推荐(0) 编辑
摘要: 感觉这个专题真不好捉,伤心了,慢慢啃吧,孩纸地址http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28195#overview密码 acmoreProblem A HDU 1159 Common Subsequence 这算是LCS里面最简单... 阅读全文
posted @ 2013-08-04 16:05 再见~雨泉 阅读(1032) 评论(0) 推荐(1) 编辑
摘要: 首先介绍一下LIS和LCS的DP解法O(N^2)LCS:两个有序序列a和b,求他们公共子序列的最大长度我们定义一个数组DP[i][j],表示的是a的前i项和b的前j项的最大公共子序列的长度,那么由于是用迭代法,所以计算DP[i][j]前,DP[i-1][j]和DP[i][j-1]就都已经计算出来了,不难理解就可以得出状态转移方程:DP[i][j] = DP[i-1][j-1] + 1;如果a[i] == b[j] MAX(DP[i-1][j], DP[i][j-1])如果a[i] != b[j]LIS:一个a序列,求它的最长上升子序列的最大长度另外,由于每次都是扫描b数组,那我们就只需要一个D 阅读全文
posted @ 2013-08-04 15:26 再见~雨泉 阅读(10202) 评论(1) 推荐(4) 编辑
摘要: 这道题其实最简单的方法就是打表,直接DFS会超时,那就先运行一遍,找出1~10的值,打表即可,这里提供DFS和打表的数据DFS:(白书上的)TLE 1 #include 2 #include 3 int vis[3][25],ans,n; 4 5 void dfs(int cur) 6 { 7... 阅读全文
posted @ 2013-08-04 12:15 再见~雨泉 阅读(1187) 评论(0) 推荐(2) 编辑
摘要: Problem A POJ 1905 Expanding Rods (二分法)题目大意就是说有一根细丝,在受热后会膨胀产生形变,变为一个圆弧,给出圆弧变化前后的长度,求这根细丝在水平上升高了多少解题过程:由于题目呢给定了说形变不会是细丝变为超过一个半圆的形状,所以我们就可以对形变的高度二分假设升高了x,那么设圆的半径为R,就存在公式R^2 - (R-x)^2 = (L/2)^2其中L是细丝变化前的长度解出来R = x/2 + (L*L)/(8*x);然后可以求出圆心角 Sita = 2 * asin((L/2) / R);在比较R*Sita与L1(形变后的长度)其实这里我也没有证明它在0~(L 阅读全文
posted @ 2013-08-03 00:47 再见~雨泉 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 这是第一次全部做出来的依次练习了,有一些都是做过两遍了的,但是还是错了几回,更多时候我还是应该多注意下细节,就好像章爷笑我的一样,像什么vis[]标记没清0,什么格式错误,还有什么题目没看清,还是的注意一下了。地址: 8.1搜索练习Problem A POJ 2488A Knight's Journ... 阅读全文
posted @ 2013-08-01 15:30 再见~雨泉 阅读(271) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 16 下一页