01 2013 档案
摘要:http://poj.org/problem?id=3683题意:一个教父,在一天中要给n对新婚夫妇举行婚礼。已知每对夫妇举行婚礼的起始时间Si和终止时间Ti ,教父送祝福的时间要么在Si->Si +Di 要么在Ti - Di->Ti。问在这一天中,教父如何安排才能对着n对新人都送去祝福?思路:把每对新人的婚礼的起始时间和结束时间加减Di后分成两个对立的点,然后检查每个点(这里每个点表示一个时间段,教父在这一事件段里送上祝福)是否存在区间相交,如果i与j存在相交则i->j^1建边。然后将缩点后的图重新反向建图,利用拓扑排序,输出解。//#pragma comment(link
阅读全文
摘要:http://poj.org/problem?id=3678题意:给定n个点,这些点只能取0或1。然后给出m条边,每条边四个变量 a,b,c,op op的取值为(AND,OR,XOR) 问是否存在一组解X0,X1,....Xn-1使得每条边满足Xa op Xb = c Xa,Xb表示每条边的端点。思路:2-sat。 将每个顶点i拆分成两个点,2*i和2*i +1 分表表示0,1。然后根据已知条件建图。建图的思想不是很清晰给出过程:(1) A and B = 0 添加弧 A->!B , B->!A(2)A and B = 1 !A->A , !B->B(3)A or B
阅读全文
摘要:http://poj.org/problem?id=3207题意:一个圆盘的边沿上有n个点, 下标从0开始, 有m条线连接2m个互不相同的点, 线可以在圆盘内部,也可以在圆盘外部, 要求任意两条线不能相交. 给出m条线(内外随意), 问是否满足每条线都不相交.思路:可以将第i条线看成一对顶点,编号分别为2*i和2*i+1.那么如果线段i与j相交,就在2*i与2*j+1以及2*i+1与2*j之间连一条双向边。然后就转化到2-sat上判断是否存在可行解了。//#pragma comment(linker,"/STACK:327680000,327680000")#include
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3622题意:给定n个回合,每个回合给你两个点,每个回合只能选择一个点放置炸弹,在n个回合里选出n个点放置炸弹,炸弹的爆炸范围是一个圆形范围,半径可以控制。求满足每个炸弹爆炸的圆形区域不相交的条件下,的所有半径里面的最小半径最大值。思路:二分枚举两点之间的距离,如果存在两点距离小于等于枚举的距离时,则表示这两个点之间存在矛盾(i->j),然后根据2-sat构图方法建图,i->j' , j' -> i , j - >i' , i '->j然会通过2-s
阅读全文
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1465题意:中文.....思路:1:暴力枚举两个字符串长度的最大公倍数的因子,作为因子的长度,然后从s1中去出来,做比较,才开始手搓打错了一个地方导致一直tle.2:同样是枚举两个字符串长度的最大公倍数的因子,作为因子的长度,然后从s1中去出来作比较,这里可以用kmp做,之际一路比较下去。//#pragma comment(linker,"/STACK:327680000,327680000") #include <i
阅读全文
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1452题目:中文.....思路:单调队列维护最大最小,st记录起始位置,如果出现st到i的最大最小差值大于k,要么移动最大要么移动最小,我们只要移动那个坐标小的即可。//#pragma comment(linker,"/STACK:327680000,327680000") #include <iostream> #include <cstdio> #include <cmath> #in
阅读全文
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1451题意:中文.....思路:pku有一道题,经典的括号匹配(区间DP)题目,那道题目是求的最长满足条件的子串的长度,那里的子串与这里的子串条件不一样。详细:http://www.cnblogs.com/E-star/archive/2013/01/28/2879385.html对于这个例子)((())))(()())pku的最长子串是12而这里是6这里我们是求的连续的满足的子串。dp[i]表示0到i的最长的满足的连续的子串则有:if(str
阅读全文
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1446超级玛丽题意:中文...思路:比赛时,数据弱了,让我一个O(10^12)的程序都过了,后来就没多想,加上数据后。改为O(n)的才过。枚举能跳过的云彩数,然后对跳跃的长度D取余求商,计算余数+ M与L的差值(即云彩之间的距离)在检查看看能否跳过,如果不能,就截止在这里不会继续往下跳了。注意数据类型long long//#pragma comment(linker,"/STACK:327680000,327680000")
阅读全文
摘要:http://poj.org/problem?id=2955题意:给定一个只包含'(' , ')' , '[', ']'的字符串,求满足括号匹配的最长子串。思路:区间DP,只要找到满足()或者 [] 匹配的, dp[i][j] = dp[i +1][j - 1] + 2;然后再枚举i到j之间一点求最大值。记忆化搜索://#pragma comment(linker,"/STACK:327680000,327680000")#include <iostream>#include <cstdio&
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3062题意:中文...思路:来自伍昱的《由对称性解2-SAT问题》http://wenku.baidu.com/view/afd6c436a32d7375a41780f2.html把确定不矛盾的双方建立边,然后tarjan缩点。判断每一对夫妻是否属于不同的环,如果存在同一环里,则无解,否则有解//#pragma comment(linker,"/STACK:327680000,327680000")#include <iostream>#include <cstdio&g
阅读全文
摘要:http://poj.org/problem?id=1734题意:给定一张图,n个点m条无向边(存在重边)。求该图的最小环(边权和最小) 注意此环满足展开的路径v1,v2,v3...v1中出了v1之外其他的点都必须不同,业绩不会存在1 2 3 3 2 1这样的环思路:1:朴素的求最小环的方法做E遍Dijkstra,枚举每条边e(i,j),删去边e(i,j)之后,求i到j的最短路经,然后再加上该边求最小值便得到的了最小环,时间复杂度为O(E*(N^2))。2:改进的floyd算法,求出任意两点之间的最短路的同时,求出最小环。这里是讲解求最下环的过程:先说一下Floyd算法和用Floyd算法求最小
阅读全文
摘要:http://poj.org/problem?id=1966这里是点连通度的一些介绍:点连通度的定义:一个具有N个点的图G中,在去掉任意k-1个顶点后(1<=k<=N),所得的子图仍然连通,去掉K个顶点后不连通,则称G是K连通图,K称作图G的连通度,记作K(G)。独立轨:A,B是图G(有向无向均可)的两个顶点,我们称为从A到B的两两无公共内顶的轨为独立轨,其最大的条数记作p(A,B)。在上图中有一个具有7个定点的连通图,从顶点1到顶点3有3条独立轨,即p(1,3)=3;1—2—3 , 1—7—3 , 1—6—5—4—3如果分别从这3条独立轨中,每条轨抽出一个内点,在G图中删掉,则图
阅读全文
摘要:http://poj.org/problem?id=2112题意:给出K个挤奶的机器,C个奶牛,以及每个挤奶机器每天最多服务M头奶牛,给出他们的之间的距离。求奶牛到挤奶器处产奶,其满足小于等于M的情况下,最远距离的最小值。思路:不得不说这是一个很好的题目,首先我们看到的是机器每天工作量的限制,让我们联想到流的限制。我们首先二分枚举一个距离,然后建图源点s到挤奶器建边权值为M,奶牛到汇点e建边权值为1.然后枚举奶牛与挤奶器之间的距离,如果小于mid就建立一条权值为1的边,然后求最大流如果小于C继续增加,否则减小。 这里建图之前先用floyd求出任意两点之间的最短距离,这样保证枚举的任意两点距离最
阅读全文
摘要:http://poj.org/problem?id=3155题意:给定一个无向图,求该图的一个子图使得该子图中边/点的权值最大;思路:证明看论文:http://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html建图方法:把原图中的无向边转换成两条有向边,容量为1;设一源点,连接所有点,容量为U设一汇点,所有点连接汇点,容量为 U+2g-du二分枚举最大密度g,其中du为u的度。U一般取边数即可。//#pragma comment(linker,"/STACK:327680000,327680000")#include <
阅读全文
摘要:最大权闭合图:定义:一个有向图的闭合图G=(V,E)是该有向图的一个点集,且该点集的所有出边都还指向该点集。即闭合图内的任意点的任意后继也一定在闭合图中。 (上面这句话一下子让我明白了什么是最大权闭合图)但下面还是给个例子吧:给每个点v分配一个点权(任意实数,可正可负)。最大权闭合图,是一个点权之和最大的闭合图。此图中有9个闭合图:空集,{3,4,5},{4,5},{5},{2,4,5},{2,5},{2,3,4,5},{1,2,4,5},{1,2,3,4,5}。最大权闭合图是{3,4,5},权和为4。性质:(蛮好的)闭合图的性质恰好反映了事件之间的必要条件的关系:一个事件发生,它需要的所有前
阅读全文
摘要:http://poj.org/problem?id=2987题意:公司打算裁员,裁掉某些员工可以获得正收益,而裁掉某些员工会遭受损失。并且员工之间往往存在一定的关系,当某个员工被裁掉之后,在他的关系之下的所有员工都必须被裁掉。现在要求如何裁员才能获得最大收益。思路:胡波涛的论文里http://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html各处了解释,证明的最大权闭合图 = 正权点的和 - 最大割(最大流);关键是如何建图,如果该点的权值为正则由源点向该点建立权值为该点权值的边,如果为负则由该点向汇点建立权值为该点权值的绝对值的边,然后原图中
阅读全文
摘要:http://poj.org/problem?id=2449题意:给出图,给出起点与终点以及k求第k短路。模板:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <set>#include <map>#include <str
阅读全文
摘要:http://poj.org/problem?id=3255题意:给你一张图,起点为1,终点为n 。求从1到n的次短路。(这里每条边可以重复走)思路:两遍最短路算法分别求出1到所有点的最短距离,n到所有点的最短距离。然后枚举每一条边找出第二短路。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include &l
阅读全文
摘要:250: (x/k)*3 + (x/3) = p 给出P和K,求满足的x最小的值,直接从1到3*P枚举即可 500:给定两个正数 N,M1 <= A <= N, 1 <= B <= M , SSR(A, B) = (sqrt(A)+sqrt(B))^2 求满足SSR(A, B)为整数的可能数;化简后可得SSR(A, B) = A + B + 2*sqrt(A)*sqrt(B);只要满足sqrt(A)*sqrt(B)为整数即可总的来说就两种情况:1:A和B都是可开方的数;2:都不是可开方的数,但是化简后的根号里面的数相同: sqrt(8) = 2*sqrt(2) 和 sq
阅读全文
摘要:http://poj.org/problem?id=3621题意:给定一张图,边上有花费,点上有收益,点可以多次经过,但是收益不叠加,边也可以多次经过,但是费用叠加。求一个环使得收益和/花费和最大,输出这个比值。思路:(转载)首先的一个结论就是,不会存在环套环的问题,即最优的方案一定是一个单独的环,而不是大环套着小环的形式。这个的证明其实非常的简单,大家可以自己想一下(提示,将大环上的收益和记为x1,花费为y1,小环上的为x2,y2。重叠部分的花费为S。表示出来分类讨论即可)。有了这个结论,我们就可以将花费和收益都转移到边上来了,因为答案最终一定是一个环,所以我们将每一条边的收益规定为其终点的
阅读全文
摘要:http://codeforces.com/problemset/problem/264/ADIV2的C题,话说做了一个小时就回宿舍了,结果还是被楼管阿姨锁在了外边,无语啊。。就是一个简单的双向链表...模拟插入。 但是只是想着算出1/2 1/4 ...来然后排序,(1/2)^(10^6)啊,不吵数据类型才怪呢。。无语啊。。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cm
阅读全文
摘要:不同的数据库里,如MySQL,MS SQL,MS Access,Oracle,自增的代码是不一样的用于 MySQL 的语法MySQL 使用AUTO_INCREMENT关键字来执行 auto-increment 任务。默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。用于 SQL Server 的语法MS SQL 使用IDENTITY关键字来执行 auto-increment 任务。默认地,IDENTITY 的开始值是 1,每条新记录递增 1。要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10
阅读全文
摘要:public class BaseDaoImpl implements BaseDao{ protected Connection con = null; protected ResultSet rs = null; protected PreparedStatement pstmt = null; protected int result = 0; static { try { //System.out.println(">>>>>>>>"); Class.forName("com.microsoft.sqlser
阅读全文
摘要:在class文件中,“常量池”是最复杂也最值得关注的内容。 Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如: 类和接口的全限定名; 字段的名称和描述符; 方法和名称和描述符。 在C语言中,如果一个程序要调用其它库中的函数,在连接时,该函数在库中的位置(即相对于库文件开头的偏移量)会被写在程序中,在运行时,直接去这个地址调用函数; 而在Java语言中不是这样,一切都是动态的。编译时,如果发现对其它类方法的调用或者对其它类字段的引...
阅读全文