自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 51nod 1732 51nod婚姻介绍所 后缀数组 + rmq

传送门:51nod1732题意:中文题。思路:看完就感觉是后缀数组,翻了翻白书,果然是模板题,套个rmq就好了。我从网上扒了个后缀数组的模板然后自己写了个线段树实现rmq,其实直接套kuangbin巨巨的模板就好,连带rmq什么都是全的。代码:#include #include #define lson l, mid, rt << 1#define rson mid +

2017-07-31 18:46:20 247

原创 CodeVS 2075 yh女朋友的危机 贪心 + DP

传送门:CodeVS 2075题意:中文题。思路:先按总身高排个序(ai + bi),然后做dp。dp[i] := 救出i个人后剩余的(坑内的)最大∑a。至于为什么要贪心的先救总身高小的,我也证明不太了,但是我可以证明单纯先救身高矮的或者手长的都会wa。。代码:#include#define ll long long#define pb push_back#defin

2017-07-31 14:36:19 208

原创 POJ - 2566 Bound Found 尺取法 + 前缀和

传送门:POJ2566题意:给定一个序列,求元素和的绝对值最接近t的子序列。思路:读完题会想到尺取法,然而由于元素有正有负,因此我们无法直接运用尺取法,尝试一下改变思路,先将前缀和求出来,然后对其进行排序,这样就变成了整体有序的一个序列,并且任选两个点其绝对值之差也对应于原序列的一个子序列的元素和。因此我们可以在这个序列上进行尺取,需要注意的就是子序列不能为空,因此l == r的时候要让r

2017-07-30 17:14:08 288

原创 POJ - 1759 Garland 二分

传送门:POJ1759题意:给出一个递推公式Hi = (H i-1 + H i+1)/2 - 1, for all 1 和首项 H1 = A,问在保证所有项都非负的情况下第n项最小为多少。思路:容易得到 Hi+1 = 2 * Hi + 2 - Hi-1,接着向后推几项就可以知道H[n]一定可以用H[2] 和H[1]线性表示,因此我们可以二分H[2],然后判断有没有小于0的项就行了,

2017-07-30 14:37:32 245

原创 POJ - 3662 Telephone Lines 二分 + 最短路

传送门:POJ3662题意:有n个点,其中m对可以连边,但是有不同的花费,现在要求将1和n连通,你可以先选k对点使其免费连上,剩下的需要你自己花钱,定义费用为需要你花钱的边中花钱最多的那条边,问最小费用是多少。思路:显然尽量让长的边都免费是最优的,因此我们可以二分花费第k+1大的边(也就是答案),然后用最短路进行检查,看看能不能只用k条比mid费用大的边就能让1和n连通,由于比mid小的边

2017-07-30 14:21:47 378

原创 POJ - 3685 Matrix 二分套二分

传送门:POJ3685题意:给定一个矩阵的通项公式,问第m大的数是多少。思路:根据 i2 + 100000 × i + j2 - 100000 × j + i × j  我们可以发现,对于固定的j,式子整体值的变化是随i的变化单调的。因此我们可以先二分答案,然后检查是否满足的时候对每一列再用一个二分,这样时间就够使了。因为会出现大小相同的元素,因此二分的时候一定要注意条件的

2017-07-30 14:06:32 247

原创 POJ - 3579 Median 二分 + 尺取法

传送门:POJ3579题意:给出一个序列x,问这个序列产生的所有| xi - xj |的中位数是多少。思路:二分答案,然后考虑每个数的贡献,关键是检查的时候如何判断每个数的贡献,可以对排序后的序列进行二分,这样总体复杂度为n(logn)^2,但是我们还有更好的方法,将序列排序后,用尺取的思想求得每一个数的贡献,总体复杂度为nlogn。代码:#include#include#in

2017-07-30 13:42:09 442

原创 POJ - 3111 K Best && POJ - 2976 Dropping tests 最大化平均值(二分||牛顿迭代)

传送门:POJ3111 题意:给定n种物品,每种物品有不同的vi和wi,让你从中选出k种来使得∑v/∑w最大。思路:设∑v/∑w = x,我们的目标就是最大化x,因此我们可二分x,然后判断是否存在一个集合使得∑v/∑w >= x,关键是如何进行判断,显然直接枚举所有的集合是不现实的,可以考虑将不等式变形成∑(v - x * w) >= 0 ,这样我们就可以针对vi - x * wi 排

2017-07-30 13:27:11 301

原创 POJ - 3045 Cow Acrobats 贪心

传送门:POJ 3045题意:有n头牛,每头牛有不同的重力w和力量s,现在要将它们叠罗汉一样的摞起来,定义risk(i)为第i头牛上面的所有牛的重量和减去第i头牛的力量,问最大的risk最小是多少。思路:个人思路:假设牛的总重量是W,若把第i头牛放到最下面,那么risk(i) = W - wi - si,把j号牛放在第二个上,那么risk(j) = W - wi - wj - sj,以此类

2017-07-30 13:04:39 294 1

原创 HDU 6052 To my boyfriend 思维 + 枚举(计数)

传送门:HDU6052题意:给出一个n*m的矩阵,每个点有一种颜色,定义矩阵的val为矩阵中不同颜色的数量,问任意一个子矩阵的val的期望为多少。思路:我是直接看了一篇讲解的想不理解都难的博客:点击打开链接代码:#include#define ll long long#define pb push_back#define fi first#define se sec

2017-07-28 23:04:27 1010

原创 HDU 6050 Funny Function 矩阵快速幂

传送门:HDU6050题意:就是根据给出的公式求Fm,1.官方题解:对于任意i>=1,当j>=3时,有  通过归纳法可以得到  进而推导出  通过矩阵快速幂求解个人感觉除了不知道第一个式子是怎么来的,后边的根据上面步骤一步步推导还是能推出来的,然而让我自己想的话是不可能做出来的,但是比赛的时候有很多人出这个题,就很慌,赛后发现大佬们很多都是直接推出了个线性的

2017-07-28 15:50:52 324

原创 HDU 6053 TrickGCD 莫比乌斯反演||筛法

传送门:HDU6053题意:给定一个序列Ai,构造一个序列Bi,满足Bi=2.  问有多少种Bi序列正解:比赛的时候有点容斥的思路,但是感觉容斥太麻烦了,就换了题去搞,完全忘了莫比乌斯反演。。显然我们要枚举gcd,然后对于每个gcd求所有(Ai/gcd)的乘积,最后再加起来,但是这个过程会有重复的,需要容斥,用莫比乌斯函数即可,好像也有用类似于筛法一样的容斥也能过。

2017-07-27 23:41:32 677

原创 HDU 6044 Limited Permutation dfs + 组合数(读入挂)

传送门:HDU6044题意:给出n个区间,对于第i个区间[li,ri]有li一开始没看到题目中的if and only if,看人家的博客都看不懂。。后来翻到一篇使我醍醐灌顶的博客,点击打开链接转载至下:首先要理解题意:当前仅当li因此对于P[i]一定有P[i]>P[li-1]且P[i]>P[ri+1],进一步说区间[li,ri](除了[1,n])一定被某个区间[lj,rj]包

2017-07-26 23:43:34 841

原创 HDU 6040 Hints of sd0061 STL

传送门:HDU6040题意:给出一个递推序列,和m个询问,问其中第mi小的数是多少。官方题解:1008. Hints of sd0061最慢的情况是 bb 的取值为 0,0, 1,1, 2,2, 3,3, 5,5, 8,8, \cdots⋯ 的情况,但事实上也只有 \mathcal{O}(\log_{1.618}{n})O(log​1.618​​n) 个取值。

2017-07-26 17:28:41 279

原创 HUD 6035 Colorful Tree dfs序||树形dp

传送门:HDU6035题意:给出一颗树,每个节点有不同的颜色,定义树上路径的长度为一条路径上不同颜色的数量,问所有路径的总长度是多少。思路:这是17年多校第一场的1003,当时看完题还以为是分治什么的,没什么清晰地思路,赛后给的官方题解是:单独考虑每一种颜色,答案就是对于每种颜色至少经过一次这种的路径条数之和。反过来思考只需要求有多少条路径没有经过这种颜色即可。直接做可以采用虚

2017-07-26 16:00:56 233

原创 Codeforces 832 D. Misha, Grisha and Underground 倍增法求LCA

传送门:Codeforces 832D题意:给出一棵n个节点的树,然后给出m个三元组(i,j,k),将其中两个点做起点另一个点做终点,问两条路径的公共部分最大是多少。思路:很明显要求lca,我用了较为简单的倍增法求,然后就是对给出的三个点枚举终点,求一个最大值,求两条路径的公共部分的时候有思维点,需要仔细思考一下,有必要画个图思考一下两条路径的相交可能出现的情况。代码:#include

2017-07-25 23:18:32 961

原创 POJ - 1930 Dead Fraction 无限循环小数化分数(数学小知识)

传送门:POJ2429题意:给出一个无限不循环小数,但没说明是从哪一位开始循环的,将其转化为分母最小的最简分数。思路:据说是小学奥数知识:推导过程:图片转自:点击打开链接具体实现过程就是循环节有多长就在分母上添几个9,非循环小数部分多长就在分母最后添几个0,分子按上面公式计算一下就行。代码:#include#include#include#includ

2017-07-25 20:49:18 481

原创 POJ - 3204 Ikki's Story I - Road Reconstruction 最大流(残余网络应用)

传送门:POJ3204题意:给定一个流网络,找到扩充其容量就能使最大流的流量增加的边,并统计有几条。思路:根据最大流性质,很容易知道只有最大流中的满流边才有可能成为满足题意的边,因为非满流边你再扩充它它也不可能满流,假设满流边为(u,v),还要满足s到u的存在非满流路径,v到t存在非满流路径才能使得(u,v)成为满足题意的边。所谓非满流路径就是指存在这样一条路径,路径上的边都是非满流的。

2017-07-24 21:26:43 343

原创 POJ - 3189 Steady Cow Assignment 二分 + 枚举 + (最大流||二分图多重匹配)

传送门:POJ3189题意:有n头猪,m个猪圈,每个猪圈都有一定的容量,每只猪对每个猪圈的喜好度不同(所有猪圈在每个猪心中都有一个排名),要求所有的猪都进猪圈,但是要求所有猪的喜好度排名最低的和最高的差值的绝对值最小。思路:这题网上很多做法,但综合来说无非  二分、枚举、最大流、二分图多重匹配,二分就是二分题目中问的差值的绝对值,枚举就是枚举上界或者下届,最大流或者二分图多重匹配就是用来检

2017-07-24 20:56:58 322

原创 POJ - 2987 Firing 最大权闭合子图(最小割)

传送门:POJ 2987题意:老板决定裁员,每开除一个人,同时要将其下属一并开除,如果该下属还有下属,照斩不误。给出每个人的贡献值和从属关系,求最小裁员数及最大贡献值和。定理:最大权闭合图的的权=原图中权值为正的点权和 - 最小割(最大流)正解:最大权闭合图定理题,证明及相关建图方法放到代码后面,这题关键是求最小裁员数的部分有意思,由于定理中的相关内容,正常思路是求完最大流后在从源点开

2017-07-24 20:15:53 374

原创 POJ - 3762 The Bonus Salary! 区间图的最大权独立集(最大流)

传送门:POJ3762题意:每天都有n种工作,每种工作有不同的价值,每种工作只能做一次,某一时刻只能做一种工作,问k天内最多可获得的价值是多少。思路:这题就是POJ3680的翻版,做法详见POJ3680。代码:#include#include#include#include#include#define ll long long#define inf 0x3f3f3f3

2017-07-24 18:43:55 202

原创 POJ - 3680 Intervals 区间图的最大权独立集(最大流)

传送门:POJ3680题意:给定n个带权的开区间,i号区间覆盖(ai,bi),权重为wi,现在要从中选取一些区间,要求任意点都不被超过K个区间覆盖,目标是最大化总的权重。思路:将区间端点看成图中的点,在区间之间和区间内部建边,保证每个区间只能选一次就要在同一个区间的两个端点之间建一条权值为-wi,容量为1的边,剩余的点之间建边容量为inf,权值为0,至于每个点至多选k次,用源点的出边限制一

2017-07-24 17:30:47 962

原创 Aizu - 2224 Save your cats 最大生成树

传送门:AOJ 2224题意:有n个点和m条边,每条边有不同的权值,问最少花费多少删除边能使得图中没有圈。思路:我们知道树是没有圈的,因此删边后的图一定是一棵树,我们想要删除的边权尽量小,就是要留下的边权尽量大,因此留下的树必定是最大生成树。关键点就是思维的转化,剩下的就没什么难的了。代码:#include#define ll long long#define pb pus

2017-07-24 17:10:43 1794

原创 Aizu - 2200 Mr. Rito Post Office floyd + dp(好题)

传送门:AOJ  2200题意:你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处。而且岛上只有一条船,下次想走水路还是得回到X处才行;两个镇子之间可能有两条以上的水路或旱路;邮递员必须按照清单上的镇子顺序送快递(镇子可能重复,并且对于重复的镇子不允许一次性处

2017-07-24 17:02:51 407

原创 Aizu - 2249 Road Construction 最短路变形

传送门:AOJ 2249题意:出若干个建筑之间的一些路,每条路都有对应的长度和需要的花费,问在保证源点1 到其他个点的距离最短的情况下,最少的花费是多少。思路:以前做过类似的题,就是在松弛过程中维护花费,如果相等的话特殊判断一下就行,然而我把维护cost的过程写成了和维护dis一样的松弛操作。。应该是直接赋值就好了,不用加上前面的cost,否则就会有很多边被重复计算。代码:#inc

2017-07-24 16:51:48 367

原创 POJ - 2139 Six Degrees of Cowvin Bacon floyd裸题

传送门:POJ2139题意:牛们最近在拍电影,所以他们准备去玩一个游戏——“六度分割”的变体。 游戏是这样进行的:每个牛离自己的距离是0度,如果两个不同的牛同时出现在一个电影里,那么他们之间的距离为1度,如果两只牛从未一起工作,但它们都与第三只牛一起工作,那么他们之间的距离为2度。 这N(2思路:求任意两点间最短距离,典型floyd,注意一下输出的时候取下整数就行了。#include

2017-07-24 16:45:58 411

原创 POJ - 3422 Kaka's Matrix Travels 费用流

传送门:POJ3422题意:有一个N X N的矩阵,每个点都有对应的值,现在要从左上角走到右下角k次,每次只能往下走或者往右走,但是每个点的值只能获得一次,问最大可获得的值是多少。思路:典型费用流,由于每个点的值只能获得一次,要拆点限制一下,然后就是因为点略多,加边的时候细心一点就好了。代码:#include#include#include#include#include

2017-07-23 23:50:55 218

原创 POJ - 3498 March of the Penguins 最大流(拆点 + 枚举汇点)

传送门:POJ3498题意:一堆企鹅要碰面,现在有N块冰块,第i个冰块坐标为(xi,yi),上面有企鹅ni个,能承受企鹅在上面起跳mi次,并且知道企鹅最大跳距离为d,问企鹅们有可能在哪个冰块上汇合。思路:因为要输出所有有可能汇合的冰块,因此我们要枚举汇点,由于每个点有mi的限制,因此要拆点转化为边上的限制,然后最大流判断能否全部到达汇点就行了。代码://ISAP int#incl

2017-07-23 23:43:05 395

原创 POJ - 1637 Sightseeing tour 混合图欧拉回路的判断(最大流)

传送门:POJ1637题意:给出一个混合图,判断是否存在欧拉回路。用网络流判断混合图中是否存在欧拉回路方法及证明:【混合图】混合图(既有有向边又有无向边的图)中欧拉环、欧拉路径的判定需要借助网络流!(1)欧拉环的判定:一开始当然是判断原图的基图是否连通,若不连通则一定不存在欧拉环或欧拉路径(不考虑度数为0的点)。其实,难点在于图中的无向边,需要对所有的无

2017-07-23 23:20:20 250

原创 Aizu - 2170 Marked Ancestor 并查集好题

传送门:AIZU2170题意:给出一颗树,有两种操作:1. mark  u  标记结点u2.query  u  询问离u最近的且被标记的祖先结点是哪个让你输出所有询问的和。思路:刚读完题感觉是LCA一类的东西。。想到了离线处理,也想到了按标记和询问的先后搞事情,然后就没思路了。。正解:将所有被标记的结点记录他们最早被标记的时间,然后将所有询问记录下来并倒着处理,因为如果我们

2017-07-23 19:43:38 432

原创 POJ - 2010 Moo University - Financial Aid STL(优先队列)

传送门:POJ2010题意:给出c个点对(a, b),从中选出n个来,使得sum(b)不大于f,并且由a组成的序列的中位数尽量的大。正解:先将所有的点对按a排序,假设k是中位数对应的点对在原序列的位置,由中位数定义可知,[1,k-1]中必定选了(n-1)/2个点对,[k+1,c]中也必定选了(n-1)/2个,而且无论剩下的点对怎么选,最后影响结果的都只是k中的a。又因为我们要满足sum(b

2017-07-23 19:23:41 202

原创 POJ - 2184 Cow Exhibition 01背包变形

传送门:POJ2184题意:给定n个点对(a,b),从中选出任意个来,使sum(a)+sum(b)尽量大并且sum(a)>=0,sum(b)>=0.思路:开始我想的是dp[i][j]表示前i个点对sum(a)= j的时候的最大sum(b),算着复杂度也差不多,然而mle,看题解才恍然大悟,这不就是01背包么,a就是重量,b就是价值,虽然所求目标和01背包不太一样,但是我们将sum(a)当下

2017-07-22 22:10:57 227

原创 POJ - 2392 Space Elevator 多重背包

传送门:POJ2392题意:有k种砖头,每种高为hi,可以摞到的最大高度为ai,数量为ci,问用这些砖头最多摞多高。思路:典型多重背包,算了算感觉不加优化也能过,写一发还真过了。。暴力:#include#include#define ll long long#define pb push_back#define fi first#define se second#def

2017-07-22 21:55:55 276

原创 POJ - 3666 Making the Grade DP

传送门:POJ3666题意:给定一个序列Ai,要求将其变成一个非递减或者非递增序列Bi,花费为∑ |Ai - Bi|,问最小花费是多少。思路:首先我们明确如果需要将Ai改变,那么Ai要么变成Ai+1要么变成Ai-1,否则就不变,这样一定是最优的。我证明不了,不过可以自行举几个例子模拟一下改变过程就知道了。因此,Bi中的数必定都属于Ai,既然有了Bi的范围集合,那么我们就可以dp转移了,

2017-07-22 21:49:15 232

原创 POJ - 1631 Bridging signals DP(LIS)

传送门:POJ 1631题意:这个题题意不好懂,不过看图就能明白了,就是让你去掉最少的线段,使得所有的线段都不想交。思路:将线段用点对表示,左端点为一个递增的序列1,2,3....n,右端点是一个1-n的排列,不难发现在这样情况下若要不相交,则左端点比前面大的线段的右端点一定也比前面的线段大,即在右端点的排列中找一个最长的递增子序列,转化为LIS求解。其实对着样例看也能看出是最长上升子

2017-07-22 21:25:10 202

原创 POJ - 1065 Wooden Sticks DP(LIS)|| 贪心

传送门:POJ 1065题意:要处理n个长为li,宽为wi的木棍,若处理完(li, wi)后接着处理(li', wi')且满足li' >= li, wi' >= wi 则不花费时间,否则花费1单位时间,问处理完n根木棍最少花费多长时间。思路:一开始想着贪心来着,谁让这是dp系列的题呢,就没敢写,没想到贪心还真能解。。解法一:利用Dilworth定理将本题转化为LIS问题,有关Dilwo

2017-07-22 14:53:55 308

转载 偏序集相关定理

链-反链-Dilworth定理偏序集:We define a Partially Ordered Set, or a Poset, as a set P with a partial ordering  defined on it’s elements. I.e, for any two elements x and y of P, either x ≤ y, y ≤

2017-07-22 14:45:40 1443

原创 CodeM美团点评编程大赛复赛 配对游戏 概率(期望)DP

配对游戏时间限制:1秒空间限制:262144K美团点评是综合性生活服务平台,覆盖吃喝玩乐。在休闲娱乐版块,有很多轰趴、桌游、密室逃脱类的项目,适合多人一起玩。下面就是出自团队游戏场景中的一个问题。有 n 个人排成一排,一开始全部面向前方,然后大家一起转身,随机朝左或是朝右转。转身后,不断检查队列,如果存在两个面对面的相邻的人,则将这两个人从队列中消除;直

2017-07-22 11:44:18 763

原创 POJ - 3280 Cheapest Palindrome 区间DP

传送门:POJ3280题意:给定一个字符串,要将其变成回文串,删除一个字母和添加一个字母都有不同的花费,问最小花费是多少。思路:这题我真是没有思路,太弱了。。正解:dp[i][j]表示将[i,j]区间的字符串变成回文串的最小花费,然后又如下转移:如果s[i] == s[j]  那么 dp[i][i] = dp[i + 1][j - 1]否则 dp[i][j] = min(dp[

2017-07-21 21:27:02 237

原创 POJ - 3616 Milking Time DP(区间的最大权独立集)

传送门:POJ3616题意:给出n个带权区间,要求从这n个区间中选取一个元素互不相交的子集,使得子集元素的权重和最大。思路:我自己的思路是dp[i]表示右端点小于等于i的所有区间所能得到的最大权重,然而因为按左端点排序排习惯了wa了好久。。代码:#include#include#include#define ll long long#define pb push_back

2017-07-21 21:10:32 452

空空如也

空空如也

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

TA关注的人

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