上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页
摘要: ps:最近这几次多校比赛,虽然题目,数据什么的可能有些问题,但是有的人真心无聊的去蹭数据。。。所以想说点这几次多校的感觉比赛的时候能蹭过去算是能力,但是比赛完了还是要好好总结。换几种思路可以,但还是不要把时间浪费在不必要的东西上。比赛中能过的题没有过多找自身的原因,不要一味的归结到运气或者状态。拍代码测数据要谨慎,保证代码简洁,切忌画蛇填足(上次多校3就吃了这亏),多来几次wa真的会影响心情。感觉到组队做的话很有必要两个人做一道题,除非那道题很简单。拍代码+测数据,尽量两个人完成。不要把自己的思想强加给队友。。。这样对过题很不利,当队友完全接受了我的思想后。。。那这道题就被局限住了。各述己.. 阅读全文
posted @ 2012-08-01 21:39 AC_Von 阅读(248) 评论(1) 推荐(0) 编辑
摘要: 确实是好题。。。看解题报告看了一天半,才大概明白是怎么样一个过程。最让我纠结的是M,N的行列问题。。。。文字描述里的M,N和图片上的M,N不对应。本菜只能无比蛋疼而又晕晕乎乎的看。。。-------------------------------以下部分转自大牛chinaeli-----------------------------------------http://hi.baidu.com/chinaeli/blog/item/b932d4b430d60ac636d3ca34.html好了,废话说道这里,我来说说我的想法(其实这个方法都是大家用的,我也是效仿别人的方法)首先说一下如何用三 阅读全文
posted @ 2012-07-30 15:20 AC_Von 阅读(1358) 评论(0) 推荐(0) 编辑
摘要: 1001不是在为这次比赛找借口。。。我真的想吐嘈一下这道题。。。尼嘛!明明是状态dp!非得搞得数据随便贪心都能过!!!过你妹啊!埋头想dp的时候,大约开始十几分钟,刷新了一下。我了个去!快上百了!纯属恶心人吗?! 吐嘈完毕 -_-! 状态dp:1 <= N <= 20,最多20位,完全可以位压缩。预处理一下hp_sum[i] (i = 010111...101),表示i的二进制中所有为1的位置,他们的hp之和。 f[i] (i = 010111...101)表示i的二进制中所有为1的位置被干掉话费的最小代价f[ i|(1<< j) ] = max(f[ i|(1< 阅读全文
posted @ 2012-07-27 15:01 AC_Von 阅读(305) 评论(1) 推荐(0) 编辑
摘要: 问题:求L 到 R范围内的所有素数 (L < R <= 2147483647, R - L <= 10^6)解:要判断x是否是素数,可以看 x %(所有比x小的素数)是否有0出现。。。当然,还可以优化一下 x % (所有比sqrt(x)小的素数)已知 sqrt(2147483647) = 49361;打出 [2, 49361]范围内的素数表,大约不到5000个素数。然后用小于 sqrt(R)的素数乘上一个系数进行枚举,这样乘出来的数必然不是素数。把所有这些数筛小,剩下的就是素数了。至于这个系数怎么确定?可以知道这个系数的下限为 K = L/prime[i],当然,如果prim 阅读全文
posted @ 2012-07-26 11:03 AC_Von 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 很早看过这个东西,不过今天遇到一道题发现居然没有写笔记。。。这里补上吧。以下是我从某个题的解题报告翻出来的。转载的别人的。。。。以此为例:对于N=8,K=3,8个元素序列1 3 -1 -3 5 3 6 7,窗口大小为3,也就是要求出(1, 3, -1), (3, -1, -3), (-1, -3, 5), (-3, 5, 3), (5, 3, 6), (3, 6, 7)这6个序列中的最小值,结果简单,就是-1, -3, -3, -3, 3, 3.使用单调队列,首先要有一个数据结构structnode {intseq, val; }用于记录队列中的元素及其在输入序列中的顺序。队列的状态是这样维护 阅读全文
posted @ 2012-07-25 15:44 AC_Von 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 好恶心的题。。。。。证明可以证出来。。。。欧拉函数:φ(n) = n(1 - 1/p1)(1 - 1/p2)(1 - 1/p3)....n/φ(n) = (p1/(p1 - 1)) (p2/(p2 - 1)) ....要使n/φ(n)最大,因为p/(p - 1)随p的增大而减小,所以p应该尽可能的小,p/(p - 1) > 1所以p尽可能的多。。。也就是说从最小的素数开始往后连乘枚举,找到比n小且离n最近的数。。。。不得不吐嘈的是,=, =!这个java不能交!比赛的时候能用,现在不能用了。.。。杭电你在卖萌吗?!吐嘈完毕。。。我很流氓的用java打了个前n的素数相乘的表。。。。然后在c 阅读全文
posted @ 2012-07-25 08:34 AC_Von 阅读(439) 评论(0) 推荐(0) 编辑
摘要: Trie图先看一个问题:给一个很长很长的母串 长度为n,然后给m个小的模式串。求这m个模式串里边有多少个是母串的字串。最先想到的是暴力O(n*m*len(m)) len(m)表示这m个模式串的平均长度。。。显然时间复杂度会很高。。。再改进一些,用kmp让每一模式串与母串进行匹配呢?时间复杂度为O((n + len(m))*m),还算可以。可是还有没有更快的算法呢?编译原理里边有一个很著名的思想:自动机。这里就要用到确定性有限状态自动机(DFA)。可以对这m个模式串建立一个DFA,然后让母串在DFA上跑,遇到某个模式串的终结节点则表示这个模式串在母串上。就像这个图,母串“nano”在上边跑就能到 阅读全文
posted @ 2012-07-24 14:50 AC_Von 阅读(10352) 评论(3) 推荐(1) 编辑
摘要: http://www.hhanger.com/?p=134http://www.coderplusplus.com/?p=393POJ 2201const int N = 50010;int stack[N];int pre[N], lson[N], rson[N];struct node { int key; int val; int id;} st[N];bool operator < (const node& a, const node& b) { return a.key < b.key;}void init(int n) { memset(stack, . 阅读全文
posted @ 2012-07-23 19:38 AC_Von 阅读(578) 评论(0) 推荐(0) 编辑
摘要: 1001开始没读懂题意,蛋疼的英语。。。题意是先给26个字母,第i位表示把第i个字母翻译成那个字母。然后再给一个串,前边某些是密文,后边某些是明文。让求的是如果后边的某些明文是前边那些密文翻译过来的一部分。那么把后边的明文补全使得串最短。中文都说的好纠结。。。出题报告说是eKMP,偶暴力蹭过去的。。View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm& 阅读全文
posted @ 2012-07-23 17:21 AC_Von 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 这里我只写一些认为应该写报告的题目。。。像那种5分钟敲出代码的题就不写了。感谢@xianbin5组织这场比赛,Orz题目1:给一些数据,建议一颗排序二叉树。然后找到某个节点的祖父节点(父节点的父节点)n <= 50000;题解:描述很简单,而且可以很简单的敲出来。但是注意数据量。。。所以这里要用到特殊的东西。一个颗很神奇的数:笛卡尔树笛卡尔树跟treap结构完全一样。不过区别在于treap的heap部分是随机取的,笛卡尔树的val是之前确定好的。笛卡尔树的构造过程:先对数据的key值进行从小到大排序,然后一次插入笛卡尔树。过程跟treap一样,不过可以发现,因为数据是排好序的,所以每次插 阅读全文
posted @ 2012-07-22 07:31 AC_Von 阅读(189) 评论(2) 推荐(0) 编辑
摘要: 比赛的时候用treap写,挂成傻逼了!赛后据说set可以过。。。然后开始了我的挂弱b血泪史!TMD!!今天又敲了一遍,发现错在一个很很很2的地方!!!!View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include <ctime>#inclu 阅读全文
posted @ 2012-07-20 10:24 AC_Von 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 数据结构trie图的建立和应用,DFAhdd2222,poj1204, poj2778, poj3691LCA和RMQ问题poj1330双端队列和它的应用poj2823(单调队列)左偏树poj3666,poj3016后缀树,后缀数组poj3415,poj3294, poj2774poj2758trie图的建立和应用,DFAhdu2222很裸的题,可以作为模板:View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cst 阅读全文
posted @ 2012-07-19 09:21 AC_Von 阅读(1135) 评论(0) 推荐(0) 编辑
摘要: 大概的思路是线封死一条边i -> j,再找i到j的最短路dis[i][j]。dis[i][j] + w[i][j]就是一个环。找到所有环里的最小值就能得到最小环。不过。。。用dijkstra算单源最短路的话,这个的时间杂度是O(n^4);所以可以用floyd将时间复杂度控制在O(n^3)上。思路是在floyd算法进行松弛的时候就找这个最小环。ans = min(ans, dis[i][j] + w[i][k] + w[k][j]); 这样 k -> i - >.... -> j -> k就得到了一个最小环。具体实现如下:void dfs(int i, int j) 阅读全文
posted @ 2012-07-18 21:35 AC_Von 阅读(8143) 评论(0) 推荐(0) 编辑
摘要: 又是生成树问题。。。次小生成树,顾名思义就是比最小稍微大那么一点点的生成树,^_^方法是:1、找到最小生成树,值为mst2、最小生成树种的点:找到每一个点到其它点的路径上的最大边权值 dp[i][j]表示i到j路径上的最大边权值3、加一条不在最小生成树上的边。比如i - k,同时删除在最小生成树上i -> k路径上最大的一个边权值dp[i][k]; 这样会得到 new_mst,在这些new_mst中找一个最小的,就是次小生成树的值实现上用到一些技巧,代码如下POJ 1679:View Code #include <iostream>#include <cstdio> 阅读全文
posted @ 2012-07-18 16:58 AC_Von 阅读(1600) 评论(0) 推荐(0) 编辑
摘要: 定义:一个有向图,存在从某个点开始的到达所有的的一个最小生成树,则它就是最小树形图。从早晨到现在一直在翻资料,终于理解了一点。朱-刘算法的大概过程如下:1、找到除了root以为其他点的权值最小的入边。用In[i]记录2、如果出现除了root以为存在其他孤立的点,则不存在最小树形图。3、找到图中所有的环,并对环进行缩点,重新编号。4、更新其他点到环上的点的距离,如:环中的点有(Vk1,Vk2,… ,Vki)总共i个,用缩成的点叫Vk替代,则在压缩后的图中,其他所有不在环中点v到Vk的距离定义如下:gh[v][Vk]=min { gh[v][Vkj]-mincost[Vkj] } (1<=j 阅读全文
posted @ 2012-07-18 09:48 AC_Von 阅读(10279) 评论(0) 推荐(0) 编辑
摘要: 首先这是要解决什么问题:一个带权完全图,每条边都有自己的花费值cost[i]和收益值benifit[i],如果用x[i]来代表一条边取或不取,那么求一个生成树。要求:r=(∑cost[i]*x[i] ) / (∑benifit[i]*x[i] )最小。经典题目:POJ2728 - Desert King如何来求解:这里用到了0-1分数规划思想,对于上式可以变形为 z(r)=∑cost[i]*x[i] -r*∑benifit[i]*x[i]。而z(r)=0为我们所求。这里有个非常重要的结论:z(r)为单调递减函数,因此是线性的。于是"我们可以兴高采烈地把z(r)看做以 cost[i]- 阅读全文
posted @ 2012-07-17 21:44 AC_Von 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 第一次接触A*,感觉好神奇。。启发函数:f(x) = g(x) + h(x);比如初始状态为s,目标状态为tg(x)表示从s到达状态x所消耗的代价h(x)表示从x到达t所估算的代价g'(x)表示s -> x可能出现的最小代价h'(x)表示x -> t可能出现的最小代价g(x) >= g'(x);h(x) <= h'(x);好吧,上面全是概念。。。当g(x) 为0时,A*就成了bfs,当h(x)为0时,A*就成了dfs。所以。。。启发函数的选择直接影响到A*算法的性能。大概的说说我对A*算法运算过程的理解吧:基本就是bfs形式,不过要用到优 阅读全文
posted @ 2012-07-17 10:06 AC_Von 阅读(4323) 评论(1) 推荐(0) 编辑
摘要: 黑书+论文+各种资料。终于理解了一点。。。最小度限制生成树就是给一个图,让求它的最小生成树。找的的最小生成树满足并且点vo的度最大为k。算法流程如下:1.将该点(以下用v0表示)从图中删除,将得到m个连通分量。2.对每个连通分量求最小生成树,假设m个。3.从每个连通分量中找与v0关联的权值最小的边,与v0相连接,这样将得到v0的最小m度生成树4.如果 k < m 那么这种树是不存在的。5.如果 k >=m ,那么考虑构建 m+1度 最小生成树 ,将与v0关联的且不在当前的树中的边6.如果将其加入树中 ,必然会存在一个环,那么删掉该环中与v0不关联的权值最大边,将得到加入该边后的最小 阅读全文
posted @ 2012-07-03 21:50 AC_Von 阅读(1786) 评论(0) 推荐(1) 编辑
摘要: 图算法度限制最小生成树和第K最短路,分数规划 poj1639, poj3621, poj2976poj2449,poj3255,poj2513最短路,最小生成树,二分图,最大流问题的相关理论poj3155,poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446最优比率生成树poj2728(0/1分数规划应用)最小树形图poj3164(朱-刘算法)次小生成树poj1679(存在O(n^2)的DP解法)2-SAT问题poj3207, poj3678, poj3683,poj3648, poj2723, poj2749无向图、有向图的最小... 阅读全文
posted @ 2012-07-02 19:11 AC_Von 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 基本算法代码快速写成poj2525,poj1684,poj1421,poj1048,poj2050,poj3306保证正确性和高效性poj3434 阅读全文
posted @ 2012-06-30 19:07 AC_Von 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 谢勇大神画了张图,然后这个问题就解决了。。。本质是“半平面交”问题。直线切割多边形,公共的部分就是多边形的核这里找到一个不错的模板:http://blog.csdn.net/accry/article/details/6070621http://blog.csdn.net/candy20094369/article/details/6703940#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include 阅读全文
posted @ 2012-06-26 20:37 AC_Von 阅读(837) 评论(0) 推荐(0) 编辑
摘要: /*在求周长之前最好线看一下求面积,这样再求周长回好理解很多。题目是POJ 1177http://poj.org/problem?id=1177POJ 1151也是这类问题,不过是求面积的,更简单一些。*/#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include &l 阅读全文
posted @ 2012-06-25 10:35 AC_Von 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 计算几何学坐标离散化poj1151扫描线算法poj3277,poj1177,poj1151,poj1765,poj2280,poj3004多边形的核poj3130,poj3335几何工具的综合应用poj1066,poj1819,poj2043,poj3227,poj2165,poj3429 poj 1151线段树+坐标离散化;其实就是排序后重新编号~~扫描线算法poj 1177 (6/25)求相交矩形组成的新图形的周长。很早就看过这道题。昨天用了一下午加一个晚上的时间,终于把扫描线看出点东西了。嘿嘿,几个比较好的讲解:看着个学会的,代码风格很好:http://www.cppblog.... 阅读全文
posted @ 2012-06-23 20:27 AC_Von 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 早晨7点到实验室一翻邮箱看到tc的邮件。。。srm 546,因为昨晚去复习,没来实验室,所以不知到又比赛。T_T 早晨抽出一小时翻了翻。。。250pt水题550pt不好想,反正我的思路很复杂,写难产了。然后看到别人的写,无语的是就几行代码搞定。不得不佩服啊class TwoRectangles {public: string describeIntersection(vector <int> A, vector <int> B) { int c[4]; c[0] = max(A[0], B[0]); c[1] = max(A[1], B[1]... 阅读全文
posted @ 2012-06-17 15:39 AC_Von 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 原地址:http://hi.baidu.com/aekdycoin/blog/item/71d7a842b93f611b73f05da4.html 给定方程x = c1 (mod b1) ……………………(1)x = c2(mod b2) ………………………(2)(b1,b2)可以不为1于是通过取mod 定义,我们得到x = k1 * b1 + c1………………(3)(3) 带入(2)k1 * b1 + c1 = c2 (mod b2)…………(4)化简k1 * b1 = c2 - c1 (mod b2)…………(5)于是可以解得到令G = gcd(b1,b2),C = c2 - c1 (m. 阅读全文
posted @ 2012-06-16 09:36 AC_Von 阅读(1340) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页