自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

肘子的博客

向流星许愿

  • 博客(40)
  • 收藏
  • 关注

原创 滑雪 POJ - 1088 (记忆化搜索/动态规划)

传送门题意:找出一条降序的路径,使得这条路径最长,输出长度即可。题解:对于每个点都进行dfs,dfs的同时进行记忆化搜索即可。附上代码:#include<iostream>#include<cstdio>using namespace std;const int maxn=1e2+50;int h[maxn][maxn],ans,f[max...

2018-10-30 22:25:18 198

原创 Matrix POJ - 2155 (二维树状数组)

传送门题意:给定一个0,1矩阵,首先矩阵都是0,然后给出一个小矩阵,将这个小矩阵所有元素进行异或操作,最后查询某个元素的值题解:使用二维树状数组,二位树状数组的讲解传送门然后参考这篇论文传送门附上代码:#include<iostream>#include<cstdio>#include<cstring>using namespac...

2018-10-21 11:08:32 128

原创 MooFest POJ - 1990 (树状数组)

传送门题意:给出牛的耳聋程度和牛所在的位置,之后求出每两个牛所能听到对方的声音的和,每两个牛的计算公式为max(vi,vj)*|xi-xj|题解:首先暴力肯定是不行的,那么可以按照牛的音量进行从小到大排序,然后维护两个树状数组,一个维护此位置之前之后的牛的个数,另一个维护此位置之前之后的牛的位置之和,之后求和即可.附上代码:#include<iostream>#i...

2018-10-21 09:51:40 126

原创 Garland POJ - 1759(二分)

传送门题意:花环:N个灯泡离地H_i,满足H1 = A ,Hi = (Hi-1 + Hi+1)/2 – 1,HN = B ,求最小B。题解:关键是选取什么值作为mid,已知A,如果知道第二个高度h2的话,就可以推出h3,然后又可以利用h2和h3推出h4。所以h2才是关键,设mid为h2,二分条件为mid可以使得所有灯泡高度大于零。从严密性的角度讲,h2的大小是跟B正相关的,满足二分单调...

2018-10-17 22:41:43 222

原创 Median POJ - 3579 (二分 有点玄学)

传送门题意:给一串数,共n*(n-1)/2个差值,求差值从大到小排序的中值,偶数向下取.题解:使用二分答案,然后可以先把数排序,然后下界0,上界a[n]-a[1],二分假定中值d,如果所有差值中大于等于d的小于等于N/2,说明d太大了.判断d是否可行时如果枚举差值就太慢了,可以对于每一个数x,找所有满足xi>=x+d(xi>x)的xi的个数,这里还是用二分,直接lower_bo...

2018-10-17 22:03:37 209

原创 K Best POJ - 3111 (牛顿迭代法)

传送门题意:有n个物品的重量和价值分别是wi和vi。从中选出k个物品使得单位重量的价值最大。题解:先取前k个元素算出S0 =∑(vi/wi) 作为初始值,然后对每一个元素(n个)求yi=vi-s0*wi,对yi从大到小排序,取前k个元素算出S,重复上面的运算(每次循环后把S的值赋给S0,然后新一轮循环时S有通过S0计算出来),直到fabs(S-S0)<=eps,满足精度要求。正确性...

2018-10-17 20:58:28 240

原创 K Best POJ - 3111(二分)

传送门 题意:有n个物品的重量和价值分别是wi和vi。从中选出k个物品使得单位重量的价值最大。题解:首先考虑二分做法那么一般最先想到的方法是把物品按照单位价值进行排序,从小到大贪心地进行选取。但是这个方法对于很多数据都有bug,所以是不行的。实际上,对于这个问题使用二分搜索可以很好地解决,定义:条件C(x):=可以选择使得单位重量的价值不小于x因此,原来的问题就变成了求满足...

2018-10-17 20:27:22 272

原创 Drying POJ - 3104(二分)

传送门题意:Jane希望计算出所有的衣服都烘干的最短时间,每件衣服一开始都有ai的水分,自然状态下每件衣服在单位时间内都会减少一份水,并且jane有烘干机,烘干机每次只能烘干一件衣服,使用机器烘衣服一个单位时间可以让衣服减少K份水(但是烘干时就不会自然蒸发那1份的水分),现在需要让所有衣服的水分含量都降低至0,至少需要多少时间。题解:二分答案首先整体考虑一下,如果在d单位时间内所有衣服...

2018-10-17 19:17:02 260

原创 Monthly Expense POJ - 3273 (二分)

传送门题意:给出农夫在n天中每天的花费,要求把这n天分作m组,每组的天数必然是连续的,要求分得各组的花费之和应该尽可能地小,最后输出各组花费之和中的最大值。题解:二分答案即可附上代码:#include<iostream>#include<cstdio>using namespace std;const int maxn=1e5+50;int...

2018-10-17 17:31:24 182

原创 牛顿迭代法

可以参考这两篇博文,非常好:传送门   传送门关于百度百科的解释:传送门牛顿迭代法是在计算机编程领域广泛用来求解方程的算法。我们每次枚举一个值X0,代入方程看是否为根,不是的话则将X0的值变为: X0=X0−F(X0)/F′(X0)(其中F′(x)为F(x) 的导数)比如要求出下面方程的一个根: F(x)=5x^3+4x^2+2const double eps=1...

2018-10-17 16:16:23 923

原创 Intersection of Two Prisms Aizu - 1313 (Simpson积分)

传送门题意:有一个侧棱与z轴平行的棱柱P1和一个侧棱与y轴平行的棱柱P2.它们都向两端无限延伸,底面分别是包含M个顶点和N个顶点的凸多边形,其中第i个顶点的坐标分别是(X1i,Y1i)和(X2i,Z2i)。请计算这两个棱柱公共部分的体积。题解:使用Simpson积分做 附上代码:#include<iostream>#include<cstdio>...

2018-10-16 20:20:29 274

原创 自适应simpson积分

辛普森积分是数值积分的一种,是中点公式和梯形公式的改进。假定我们要求如下定积分 略微懂一点微积分知识的都知道,对于一个黎曼可积的函数,我们要求其在某个闭区间上的定积分,要先求该函数的不定积分,即先求原函数。就是找到一个函数F(x),使得F′(x)=f(x),然后根据牛顿—莱布尼茨公式,即:而有时候原函数并不好求,比如要求原的函数很复杂,要求的原函数非初等函数,但用程序进行积分,...

2018-10-16 20:14:17 2948

原创 Jack Straws POJ - 1127 (计算两直线的交点)

传送门题意:桌子上放着n根木棍,木棍的两端坐标分别是(Pix, Piy)和(Qix, Qiy)。给定m对木棍(ai, bi),请判断没对木棍是否相连。当两根木棍之间有公共点时,就认为它们是相连的。通过相连的木棍间接的连在一起的两根木棍也认为是相连的。题解:分析:木棍就是二维平面上的线段,只有能够判断线段是否相交,那么建图以后就可以轻松的进行连接性判断。那么,应该如何判断两条线段是否...

2018-10-16 14:07:28 214

原创 Coneology POJ - 2932(平面扫描+二叉搜索树)

传送门题意:平面上有N个两两都没有公共点的圆,i号圆的圆心在(xi,yi),半径为ri。求所有最外层的,即不包含于其他圆内部的圆。题解:附上代码:#include<iostream>#include<cstdio>#include<vector>#include<set>#include<algorithm>...

2018-10-16 12:10:37 330

原创 Farm Tour POJ - 2135(网络流)

传送门题意:农夫的朋友前来拜访,于是他带领大家参观它的农场,农场里有N块地,其中农夫的家在1号地,而N号地有个很大的仓库。农场内有M条道路(双向通行),道路i连接着ai号地和bi号地,长度为ci。农夫希望按照从家里出发,经过若干地后达到仓库,然后再返回家中的顺序待朋友参观。如果要求往返不能经过同一道路两次,求参观路线总长度的最小值。题解:只考虑去或者回的情况,那么问题只不过是无向图中两点之...

2018-10-15 21:39:32 155

原创 Dining POJ - 3281 (网络流)

传送门题意:农夫约翰为他的N头牛准备了F种食物和D种饮料。每头牛都有各自喜欢的食物和饮料,而每种食物或饮料只能分配给一头牛。最多能有多少头牛同时得到自己喜欢的食物和饮料?题解:如果只是分配食物的话,那么用二分图最大匹配就好了,但遇到这种情况需要同时给一头牛分配所喜欢的食物和饮料的情况,就不能很好的处理了,可以将食物和饮料所对应的两个匹配通过下面这种方法匹配起来。图的顶点在食物对应的匹配...

2018-10-15 20:54:44 309

原创 最小费用最大流(白书+kuangbin)

讲解:附上白书代码:#include<bits/stdc++.h>using namespace std;const int MAX_V=100;const int INF=0x3f3f3f3f;struct edge{ int to,cap,cost,rev; edge(int _to,int _cap,int _cost,int _rev)...

2018-10-14 10:57:48 403

原创 Asteroids POJ - 3041(二分图匹配)

传送门 题解:附上代码:#include<iostream>#include<cstdio>#include<vector>#include<cstring>using namespace std;const int MAX_K=1e4+50;const int MAX_N=5e2+50;const int MAX_...

2018-10-13 21:22:36 143

原创 网络流(Edmonds-karp算法 来自汝佳大神)

#include<iostream>#include<cstdio>using namespace std;struct edge{ int from,to,cap,flow; edge(int u,int v,int c,int f):from(u),to(v),cap(c),flow(f){}};struct demondskarp{...

2018-10-13 16:10:33 281

原创 Matrix Power Series POJ - 3233 (矩阵快速幂)

传送门题意:题解:附上代码:#include<iostream>#include<cstdio>using namespace std;typedef long long ll;const int MAXN=70;struct node{ ll a[MAXN][MAXN];};node shu,ans,mp;ll N;...

2018-10-11 22:22:38 264

原创 Blocks POJ - 3734 (矩阵快速幂)

传送门题意:题解:附上代码:#include<iostream>#include<cstdio>using namespace std;typedef long long ll;const ll mod=1e4+7;const int N=4;struct node{ ll a[N][N];};node shu,ans,m...

2018-10-11 21:47:04 224

原创 Traveling by Stagecoach POJ - 2686 (状压dp)

传送门题意:所在的国家有m个城市,这个人手中一共有n张票,票上写着马数,从一个城市到另一个城市的所需时间等于城市之间道路的长度除以马的数量的结果,规定起点和终点,问最后所需最短时间可以到达,或者无法到达。题解:考虑“现在在城市v,此时手中还剩下的车票的集合为S”这样的状态,从这样的状态出发,使用一张车票i属于S移动到相邻的城市u,就相当于转移到了"在城市u,此时还剩下的车票的集合为S\{i...

2018-10-11 21:19:14 165

原创 旅行商问题(TSP,Traveling Salesman Problem)

题意:给定一个n个顶点组成的带权有向图的距离矩阵d(I,j)(INF表示没有边)。要求从顶点0出发,经过每个顶点恰好一次后再次回到顶点0.问所经过的边的总权重的最小值是多少?假设现在已经访问过的顶点的集合(起点0当作还未访问过的顶点)为S,当前所在的顶点为v,用dp[S][v]表示从v出发访问剩余的所有顶点,最终回到顶点0的路径的权重总和的最小值。由于从v出发可以移动到任意的一个节点u(不属于...

2018-10-11 18:29:17 7376 1

原创 K-th Number POJ - 2104 (静态主席树)

传送门题解:本文参考博文:传送门主席树又叫函数式线段树,就是多颗线段树的相互连接形成的一种数据结构,其时间复杂度和空间复杂度都为为 O(nlogn)首先可以看下怎么求整个区间的第K大值问题传送门,这篇博文讲的非常好了来简化一下整个区间的第K大问题:求整个区间的第K大值问题。我们可以用线段树解决,让线段树的第 i 个叶子节点表示原数组中排第 i 的有多少个,而其他节点表示排第L~R ...

2018-10-11 16:29:46 152

原创 K-th Number POJ - 2104(归并树)

传送门题解:使用归并树把数列用线段树维护起来,线段树的每个节点都保存了对应区间排好序的结果。建立线段树的过程和归并排序类似,而每个节点的数列就是其两个儿子节点的数列合并后的结果。建树的复杂度是O(nlogn)。这颗线段树正是归并排序的完整再现。要计算再某个区间中不超过x的数的个数,只需要递归地进行如下操作:如果所给的区间和当前区间完全没有交集,那么返回0个如果所给的...

2018-10-10 21:07:03 140

原创 K-th Number POJ - 2104 (块状数组(平面分割))

传送门题解:静态查询区间第k小问题,此处使用块状数组(平面分割)解决附上代码:#include<iostream>#include<cstdio>#include<vector>#include<algorithm>using namespace std;const int B=1000;const int MAX_N...

2018-10-10 19:21:04 208

原创 树状数组(区间问题)

本文引自:传送门目录一维树状数组单点更新,区间查询区间更新,单点查询区间更新,区间查询二维树状数组单点更新,区间查询区间更新,单点查询区间更新,区间查询区间最值一维树状数组 单点更新,区间查询#include <iostream>using namespace std; const int MAX_N=10010;int...

2018-10-09 21:41:16 264

原创 A Simple Problem with Integers POJ - 3468 (树状数组区间操作)

传送门题解:有种区间操作叫做线段树LAZY操作,但是还有种树状数组关于区间的操作很巧妙,使用两个树状数组进行维护。第一种维护方法:附上代码:#include<iostream>#include<cstdio>using namespace std;typedef long long ll;const int MAX_N=1e5+50;co...

2018-10-09 21:25:02 188

原创 Detachment HDU - 5976(数学+费马小定理求逆元+前缀和前缀积)

传送门题意:给定一个数,让你分成互不相等的n个数(n为自然数),使这些数的乘积最大,输出最大乘积。题解:本文参考传送门首先:那就是不能分出1来,因为1乘任何数都是它本身,而因为分出了1,另一部分也变小了,白白使整个乘积都变小了第二:尽量将数n分成连续的数之和能使得乘积最大即2,3,4.....r之积假设将数n分成两个数之和r1,r2那么如果把r1再次分解成非1的两个数相加r11,r...

2018-10-08 21:24:48 350 2

原创 Game of Taking Stones HDU - 5973(第一个JAVA高精度+二分搜索法的结束判定+威佐夫博弈板题)

传送门题意:给你两个石堆的石头数量,两个人轮流拿,两人轮流从任意一堆取至少一个或者从两堆取同样多的物品。问你先手获胜还是后手胜。题解:先了解威佐夫博弈传送门,知道了威佐夫博弈的规律后,就知道了怎么进行求解了,这个题由于精度过高,采用JAVA大数包,第一个JAVA程序,刚开始Eclipse环境调了半天,最后还算功夫不负有心人,对于采用的是二分求解10^(-100)的精度问题,其中1次循环可以...

2018-10-08 21:05:56 223

原创 Save your cats Aizu - 2224(思维+最大生成树)

传送门题意:给出一个图,这个图形封闭区域(可能多个可能一个也没有),问最少需要破坏多少边使得封闭区域不封闭。先给出每个点的坐标,然后给出每条边的关系。题解:这个题因为封闭区域可能一个可能多个可能没有,所以正向思维去做这个题会比较复杂,把一些边破坏掉之后,得到的图不在存在封闭区域,那么破坏边之后得到的图就是一棵树,所以,总的边长度之和=要破坏的长度 + 破坏完后剩下的树的边的总长度,...

2018-10-08 13:33:13 139

原创 A Simple Math Problem HDU - 5974 (数学题)

传送门题意:已知x+y=a,lcm(x,y)=b,现在给出a,b,问是否存在x,y并且输出题解:设g=gcd(x,y)可推导出g*k1=x,g*k2=y(k1,k2为整数,并且k1,k2互质,这点很容易想到的啦,不互质g就不是最小公约数了)那么g*(k1+k2)=a,g*k1*k2=b,接下来推导的可是很厉害的因为k1,k2互质,那么k1+k2与k1*k2也就互质,(这也是这个...

2018-10-08 11:02:46 195

原创 Fliptile POJ - 3279 (反转(开关问题))

传送门题解:这个题仍然是个反转问题,和传送门思想很像,但是略有不同,此时我们只需要枚举第一行,然后根据这块上面那块本来是什么以及周围或者自身总共反转了多少次,最后得出自己是否需要反转,最后只需要特判最后一行是否合理即可,并进行维护更新答案即可。附上代码:#include<iostream>#include<cstdio>#include<cstri...

2018-10-02 18:56:10 301

原创 Face The Right Way POJ - 3276(反转(开关问题))

传送门题解:首先,交换区间反转的顺序对结果是没有任何影响的,此外,可以知道对于一个区间进行两次以上的反转是多余的。问题被转化成需要被反转的区间的集合,考虑一下最左端的牛,包含这头牛的区间只有一个,因此这头牛面朝前方,就能知道这个区间不需要反转,反之,面向后方,就需要进行反转了,而且在此之后最左的区间不需要反转,这样一来,只需要考虑最左端的牛是否需要反转,问题的规模就缩小了1,不断地重复,就无需...

2018-10-02 12:16:31 191

原创 4 Values whose Sum is 0 POJ - 2785(折半枚举(双向搜索))

传送门题解:如果从4个数列中选择的话总共有n^4种情况,所以全都判断一遍不可行。不过将它们对半分成AB和CD考虑,就可以快速解决了,从2个数列中选择的话只有n^2种组合,所以可以进行枚举。先从A,B种取出a,b后,为了使总和为0则需要从C,D中取出c+d=-a-b。因此先将A,B中取出a,b后,为了使得总和为0则需要从C,D中取出c+d=-a-b。因此先将C,D中取数字的n^2种方法全都枚举出...

2018-10-01 22:20:48 210

原创 Aggressive cows POJ - 2456 (二分搜索)

传送门题解:使用二分搜索答案即可附上代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=1e5+50;int x[maxn];int n,m;bool C(int d){ int las...

2018-10-01 21:32:22 140

原创 Cable master POJ - 1064

传送门题解:使用二分搜索,在输出小数问题上,一般都会指定允许的误差范围或者是输出中小数点后面的位数。因此在使用二分搜索法时,有必要设置合理的结束条件来满足精度的要求。设定循环次数作为终止条件,1次循环可以把区间的范围缩小一半,100次的循环则可以达到10^(-30)的精度范围,基本上是没有问题的,也可以把精度设置为(ub-lb)>eps这样,指定一个区间的大小。在这种情况下,如果ep...

2018-10-01 21:12:23 250

原创 Bad Cowtractors POJ - 2377 (最大生成树)

传送门题解:求一个最大生成树,只需要把排序顺序颠倒即可附上代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int MAXN=1100;const int MAXM=400...

2018-10-01 15:13:15 184

原创 Wormholes POJ - 3259 (floyd判负环||spfa判负环||bellman_ford判负环)

传送门题解:第一种使用floyd判负环,只需要在算法过程多一个判读dp[i][i]是否为负数即可。附上代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=505;int min(int a,int b){...

2018-10-01 11:52:47 448

原创 Convenient Location Aizu - 0189 (spfa||floyd)

传送门题意:大概意思是说,选定一个地点使得从该地点开始到达剩余每个地点的总长度加起来最小,找出这个点并且找出这个点所到达其他点的总长度,最后输出。题解:两种解法:一,既可以使用spfa解法,对每个点跑出所有的最短路并进行更新,最后得出答案附上代码:#include<iostream>#include<cstdio>#include<algorit...

2018-10-01 09:24:18 214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除