解题报告
文章平均质量分 74
__简言
如能忘掉渴望 岁月长 衣裳薄
展开
-
HDU--3920[Clear All of Them I] 状态压缩DP或模拟退火
PS、正解貌似是状态压缩DP,DP依旧不会、感觉和售货员问题差不多,于是试了下模拟退火居然还真水过去了= =! 后然用状态压缩DP也写了一次、、、、、 CODE(1):模拟退火/*模拟退火*//*AC代码:890ms*/#include #in原创 2011-08-20 18:38:34 · 957 阅读 · 0 评论 -
POJ--3697[USTC campus network] BFS+hash(O(N^2))
题意:给定一个包含N(1 ≤ N ≤ 10,000)个顶点的无向完全图,图中的顶点从1到N依次标号。从这个图中去掉M(0 ≤ M ≤ 1,000,000)条边,求最后与顶点1联通的顶点的数目。思路:由于数据过大,不能开矩阵直接存(会MLE)。所以每次只能判原创 2011-08-07 13:26:31 · 1343 阅读 · 0 评论 -
HDU--3721[Building Roads] 枚举+求最长路O(N^2)
题意:给一棵树,可以移动树上的一条边,但是必须保证移动之后的图还是一棵树,问如何移动才能使得移动之后的树的直径最短。思路:先在原树上求直径,然后枚举直径上的边(因为要使其直径变短只可能删除直径上的某条边)。u->v.这样原树就被拆成两个子树。原创 2011-08-05 21:13:56 · 1792 阅读 · 7 评论 -
HDU--1534[Schedule Problem] 差分约束
思路:查分约束(求最小值--->= 求最长路)建图:SAS u,v S[u]>=S[v];SAF u,v S[u]>=S[v]+D[v];FAF u,v S[u]+D[u]>=S[v]+D[v];FAS u,v S[u]+D[u]>=S[v];原创 2011-08-04 23:27:07 · 1456 阅读 · 0 评论 -
HDU--3991[Harry Potter and the Present II] Floyd预处理+最小路径覆盖
这题只要先用Floyd预处理出任意两点间的最短距离,并且把Q个条件按时间先后从小到大排序,然后遍历任意两个条件a,b;如果node[b].t-node[a].t>=map[node[a].p][node[b].p];则连一条a->b的边,最后求Q个点的最小路径覆盖就可以了~~~~原创 2011-08-31 23:52:15 · 1020 阅读 · 0 评论 -
HDU--3986[Harry Potter and the Final Battle] 暴力删边枚举
一开始以为暴力删边枚举复杂度太高,想了个各种麻烦的方法~~~~最后居然可以直接暴力水过~~~ PS.要注意最后删边枚举的时候是取一个最大值,而不是最小值、、、 CODE:/*暴力删边枚举*//*AC代码:256ms*/#include #inclu原创 2011-08-31 23:23:23 · 1145 阅读 · 0 评论 -
HDU--3987[Harry Potter and the Forbidden Forest] 求最小割集中的最小边数
比赛时硬是不会,一开始还打算先找一个最小割,然后删一条边在找一次用来确定当前枚举的这条边是不是所求边数最少的割集中的边。不知道可不可行,反正到最后还是没搞出来。赛后才知道原来有巧妙的构造方法可以直接一边最小割得到答案~~~~ 好神奇的方法、、、、、 贴个链接学习下:ht原创 2011-08-31 23:17:53 · 1140 阅读 · 0 评论 -
HDU--3666[THE MATRIX PROBLEM] 查分约束
思路:根据题意可以得到:Xij * Ai – U * Bj 用log把乘法转化成加法:Log(Xij) + logAi – LogU – LogBj logAi – LogBj 另一式子同理,这样就转化成了标准的差分约束问题了。在判负回路时,可以用总的入队原创 2011-07-30 23:42:31 · 808 阅读 · 0 评论 -
POJ--1716[Integer Intervals] 差分约束
题意: 给出N个整数区间[ai,bi],使得序列在区间[ai,bj]的个数>=2个,求出序列的最小长度.此题和1201题类似,不过1201题用Bellman_Ford算法求解会超时,可用SPFA算法求解. 分析: 对于给定的条件,令t[i]表示i是否在原创 2011-07-30 23:54:03 · 653 阅读 · 0 评论 -
POJ--1322[Chocolate] DP+概率
思路:dp(1):dp[N][M]表示取N个后剩下M个的概率;(2):利用N很大时的收敛性: if(N>1000) N=1000+N%2;状态转移方程:dp[N+1][M+1]=dp[N][M]*(C-M)/C; if(M+1dp[N+1]原创 2011-07-30 14:49:38 · 743 阅读 · 0 评论 -
HDU--2066[一个人的旅行] Dijkstra
最短路径题,套用Dijkstra算法,但增加一个顶点A连通所有起点,一个顶点B连通所有终点..问题就转化为A到B的最短路径D,D再减去A跟B多出来的距离就得到结果.. View CodeProblem : 2066 ( 一个人的旅行 ) Judge Status : Ac原创 2010-11-10 00:53:00 · 803 阅读 · 0 评论 -
POJ--3159[Candies] 差分约束
题目意思:flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发,在班上,flymouse和snoopy是死对头,两人势如水火,不能相容,因此fly希望自己分得的糖果数尽量多于snoopy,而对于其他小朋友而言,则只希望自己得到原创 2011-08-01 00:35:03 · 626 阅读 · 0 评论 -
POJ--1191[棋盘分割] 经典的记忆化搜索
思路:(具体参考《算法艺术与信息学竞赛》)1,先化简均方差公式,可以看出,只需要让每个分割后的矩形的总分的平方和尽量小,即可使均方差最小。2,考虑左上角坐标为(x1,y1),右下角坐标为(x2,y2)的棋盘,设它的总和为s[x1,y1,x2,y2]切割k次以后得到k+1块原创 2011-07-30 14:38:39 · 578 阅读 · 0 评论 -
POJ--1286[Necklace of Beads] Polya定理
Polya定理:设G={a1,a2,...,a|G|}是N={1,2,...,N}上的置换群,现用m种颜色对这N个点染色,则不同的染色方案数为S=(mc1+mc2+...+mc|G|)/|G| 旋转:n个点顺时针(或逆时针)旋转i个位置的置换,轮换个数为gcd原创 2011-07-30 13:58:00 · 677 阅读 · 0 评论 -
POJ--3686[The Windy's] 最小费用流或KM
题意:有N个任务和M个机器,给出第i个任务在第j个机器完成的时间map[i][j],每台机器同一时刻只能处理一个任务,机器必须完整地完成一个任务后才能接着完成下一个任务。问N个任务完成时间的平均值最少为多少。关键:设N个任务的执行时间分别为T1,T2…TN,则N个原创 2011-08-07 18:58:31 · 1095 阅读 · 0 评论 -
HDU--4001[To Miss Our Children Time] 排序+SPFA
思路:把所有长方体先按照一定的规则排好序,然后遍历任意两个长方体u,v。如果u能放在v的上面,则连一条u->v权值为v的高度的边。然后添加一个超级源点scr,对于每个点i,连一条从scr到i权值为i的高度的边。最后从scr开始找一条最长路就是答案。PS.长方体的长原创 2011-09-04 19:43:21 · 800 阅读 · 0 评论 -
HDU 1733 [Escape] 分层图网络流+枚举时间
思路:(1):把每个点按照天数拆成d个点。(2):添加源汇点scr和sink。(3):源点向第0天地图上人所在位置的点连一天容量为1的边。(4):枚举时间Ti(5):每次枚举只需向残留网络里重新添加一些新的点和边。然后再从源点向汇点跑最大流。(6):直到前原创 2011-09-17 19:58:20 · 1506 阅读 · 0 评论 -
HDU--3918[Beiju] 几何模拟 二分
思路: 整体不是单调的,但是每一段都是单调的,于是它从下往上,判断到第一个上顶点不行的区间,然后对这段区间进行二分。 要注意的是这个题水是很慢很慢的加的,所以一旦倒了就不会再加了。故要从下往上枚举。 还有注意,最后的高度不用再减去最原创 2011-08-20 00:43:45 · 902 阅读 · 0 评论 -
模拟退火算法——解决售货员的难题
Simulation Annealing 1982年,KirkPatrick将退火思想引入组合优化领域,提出一种解大规模组合优化问题的算法,对NP完全组合优化问题尤其有效。这源于固体的退火过程,即先将温度加到很高,再缓慢降温(即退火),使达到能量最低点。如果急速降温(即原创 2010-11-22 23:20:00 · 9144 阅读 · 2 评论 -
HDU--3957[Street Fighter] 最小支配集
正解应该是DLX。可惜不会,比赛中有神牛用dfs+剪枝过的,还有人用随机算法过的。各种Orz.... 用了某大牛的dfs+剪枝,用二进制优化,好神奇、、、、 CODE:/*状态压缩+迭代加深搜索*//*最小支配集*//*AC代码:7437ms*/#原创 2011-08-19 01:11:30 · 1704 阅读 · 4 评论 -
PKU--1001(hdu 1063)---[Exponentiation] 字符串模拟
解题思路: 针对数据的特点nWA的请注意。输入数据需要考虑R和n的特殊情况!分情况讨论:R:1,整数2,小数然后对于每一种情况又分有无前导零,后导零。R:000000 000100R:小数点可以在任意位置如:.00000 000.00 00000.原创 2010-11-10 22:54:00 · 1271 阅读 · 0 评论 -
HDU--3887[Counting Offspring] DFS标号+线段树O(N*logN)
思路:(1):dfs对每个点标号。记录每个点的开始时间S和结束时间E.(2):按顺序一次查询并访问每个结点。(3):查询并访问:for(i=1;i<=N;i++){ f[i]=Query(1,S1[i],E1[i]); Update(1,S1[i]);原创 2011-08-10 23:18:57 · 1092 阅读 · 0 评论 -
HDU--3885[Find the Difference] 暴搜
题意:就是QQ里的大家来找茬= =!。给两个n*m的整数矩形,求两个矩形间不同的小矩形,输出个数以及每个矩形的左上角、右下角的坐标。要求每个独立的小矩形满足至少有一个点不相同,他的周围一圈是相同的,且这个小矩形不能在其余这种矩形之内。 思路:由于数据较小(N,M原创 2011-08-12 22:39:02 · 872 阅读 · 1 评论 -
HDU--3884[Hinanai Tenshi’s peach garden] 枚举汇聚点O(N^2)
思路: 枚举汇聚点。每次贪心的取距离该汇聚点最近的点上的桃子。直到不能M PS.一开始以为这么暴力的枚举过不了,结果62ms水过、、、ms还是最快的 = =! 原来是道水题、比赛的时候居然都没人做、、 CODE:/*枚举汇聚点O(N^2)*//*原创 2011-08-11 22:49:55 · 1262 阅读 · 0 评论 -
HDU--3487[Play with Chain] Splay_Tree
比较基础的Splay_Tree; 区间操作:(1):CUT a b c :将区间[a,b]切下来插入到c后面;(2):FLIP a b :对区间[a,b]进行翻转操作 CUT a b c:inline void Delete(int pos,int c原创 2011-09-08 22:13:20 · 1171 阅读 · 0 评论 -
POJ--3580[SuperMemo] Splay_Tree
第一道Splay_Tree.题意:给你一段区间,有M个操作,让你对这段区间进行维护。区间操作:(1):ADD x y D 对一段区间都增加一个值value(2):REVERSE x y 翻转一个区间(3原创 2011-09-08 12:40:51 · 1448 阅读 · 0 评论 -
HDU--3830[Checkers] LCA+二分
今天比赛的时候没来得及看,后然赛后想想也不太会。看了别人的题解我只能说“太神奇”了、、、 某牛blog上讲的很详细,而且我也是按照他的思路写的。说以,直接偷懒把他的思路贴出来、、、、、、 --------------------------------------原创 2011-08-08 23:46:55 · 1695 阅读 · 0 评论 -
HDU--3911[Black And White] 线段树
题意:很简单,不多说了、、 思路:线段树 1.区间域:s,e,len:分别表示区间的起点,终点,和区间长度 ll1:左边起最长的连续1个数;rr1:右边起最长的连续1个数;maxs1:当前区间内最长的连续1个数; ll0:左边起最长原创 2011-08-07 23:25:16 · 795 阅读 · 0 评论 -
HDU--4007[Dave] O(N^2)枚举
题目意思:给你N个点和一个边长为R的正方形,为你用这个正方形最多可以覆盖几个点(在正方形边界上的点也算)。注意:正方形的边一定平行于坐标轴。思路:对N个点的y坐标进行排序,然后O(N)枚举正方形的下边界。取出N个点中y坐标在上下边界范围内的点。然后原创 2011-09-04 19:53:52 · 2147 阅读 · 3 评论 -
POJ--2142[The Balance] 扩展欧几里德
题意:Ax+By=C;求一组解x,y使abs(x)+abs(y)最小,若abs(x)+abs(y)相等,则使(A*abs(x)+B*abs(y))最小 解法:在有解的情况下先得到一组解使x为最小正数,然后分别向上和向下枚举直到x,y异号停止,中间不停更新答案。每次x-dx原创 2011-07-30 13:54:56 · 800 阅读 · 0 评论 -
POJ--3521[Geometric Map] 几何图上的最短路
题目大意:给你一幅图,上面有一些“街道”和“标记边”组成。问你某两点之间的最短路径。(“标记边”用来规定“街道”的方向)。 街道:表示两点之间有边相连。标记边:标记边的一端悬空,令一端和一条道路相交(相交一定在中间,不会在道路端点处)。标记规则:假设街道的向量为(a,b);标记边原创 2011-07-29 00:59:33 · 1114 阅读 · 0 评论 -
POJ--1201[Intervals] 基础的差分约束
题目大意:给出N个整数区间[ai,bi],并且给出一个约束ci,( 1= ci个,求出数组Z的最小长度。 分析:对于给定的条件,假设S[j]为数组Z在[0,j]上的包含的元素个数,则我们可以根据条件得到S[bi+1] - S[ai] >= ci ===> S[ai原创 2011-08-01 01:04:41 · 867 阅读 · 0 评论 -
hdu--3411(Snail Alice)
Snail Alice<br />Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)<br />Total Submission(s): 366 Accept原创 2010-12-21 23:21:00 · 824 阅读 · 0 评论 -
HDU--3685[Rotational Painting] 求重心+凸包
稳定的定义:多边形玻璃板的重心向水平面作垂线时,垂足落在支撑边所在的线段上(不包括线段端点)。对多边形支撑边的枚举:由于有可能出现凹多边形,因此可供选择的“支撑边”包括该多边形的凸包的所有边。 思路:先求重心,然后再求凸包,枚举凸包的每条边判断是否可以是支撑边。(注意重心到某条支原创 2011-07-28 00:53:00 · 806 阅读 · 0 评论 -
HDU--3264[Open-air shopping malls] 枚举圆心+二分半径
题意:平面上有n个圆,给定他们各自的圆心和半径。保证任意两个圆不会互相重叠。现在求一个大圆,它的圆心与某个给定圆的圆心重合,且对于每一个给定的圆,大圆至少覆盖该圆面积的一半。请求得满足要求的大圆的最小半径。算法流程枚举圆心位置Oi。二分查找,求得对于当前圆心位置,满足要求的最小半原创 2011-07-28 00:58:10 · 753 阅读 · 0 评论 -
POJ--2286[The Rotation Game] IDA*
剪枝:每次不要往反方向搜。注意:长度相同要输出字典序最小的操作PS.一开始是用状态压缩+BFS的,结果无情的TLE了、、、 估价函数:int h(int st[])//估价函数{ int i,num[4]={0}; for(i=0;i<8;i++) num[s原创 2011-07-27 03:44:28 · 655 阅读 · 0 评论 -
POJ--1639[Picnic Planning] K限度最小生成树
算法流程:1.将该点(以下用v0表示)从图中删除,将得到m个连通分量。2.对每个连通分量求最小生成树,假设m个。3.从每个连通分量中找与v0关联的权值最小的边,与v0相连接,这样将得到v0的最小m度生成树4.如果 k 5.如果 k >=m ,那么考虑构建 m+1度 最小生成树原创 2011-07-27 03:36:03 · 882 阅读 · 0 评论 -
POJ--3921[Destroying the bus stations] 最小费用流+拆点
题目大意:一个有向图有N(NPS.不存在一条边直接连1-N。 思路:最小费用流+拆点 构图:(1):把[2..N-1]个点拆成i->i+N连一条容量为1费用为0的边;//保证每个点被破坏一次(2):把1和N拆点,连一条;//保证不会破坏(3):如果存在一条边(u->v)怎连一条u原创 2011-07-26 01:02:48 · 1295 阅读 · 0 评论 -
POJ--3592[Instantaneous Transference] 缩点+求最长路
思路:(1):构完图缩点然后求最长路(2):注意*号的位置可以选择不跳(3):数据里没有*号跳到#号的情况PS.说实话这题不难,思路和poj3160一样、、 CODE:/*缩点+求最长路*//*注意:*号的位置可以选择不跳*//*AC代码:16ms*/#include原创 2011-07-24 17:35:08 · 699 阅读 · 0 评论 -
2011ACM上海邀请赛J题( Juice Extractor)----离散化+DP
题目连接:http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=19242 PS.这题最后想到思路了,但是时间不够了、、、哎 CODE:/*离散化+DP*//*AC代码:372ms*/#includ原创 2011-07-24 17:30:58 · 1096 阅读 · 0 评论