自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【洛谷P1196】银河英雄传说

有特殊意义的一道题……加权并查集,我们增加cnt、deep数组分别表示i点所在链共有多少个点,以及路径压缩之前点i在链中的深度每次合并时直接修改cnt,路径压缩的同时更新deep因为每次查询之前都要find,所以查询节点x的deep也就在找father时更新了(deep数组初始化为零比较方便) 1 #include<cstdio> 2 #i...

2016-11-17 20:06:00 110

转载 【洛谷P2737】Beef McNuggets

首先有这样一个结论:若p,q为自然数,且gcd(p,q)=1,那么px+qy不能表示的最大数为pq-p-q那么本题中p,q均取决于最大的两个数,不妨取256,那么上界为256^2-256*2之后就是简单的完全背包如果数据中有1,或者最大不能取到的数大于上界,就是0 1 #include<cstdio> 2 #include<cstring&g...

2016-11-16 18:40:00 94

转载 【洛谷·P2320】鬼谷子的钱袋

这道题很神奇我们举一个例子,m=12那么我们可以把它分成两部分,L和R:(1,2,,6)(7,8,,12)我们可以发现R中的数都可以由12/2和左边的数组合得到那么我们对L再分………………同理,奇数时将,m/2变为m/2+1即可 1 #include<cstdio> 2 #include<cstring> 3 using...

2016-11-16 15:39:00 109

转载 【洛谷P2889】Milking Time

很容易想到以结束时间加上R从小到大排序之后怎样呢?我们按层考虑,f[i]表示前i个时间段嫩得到的最大价值每次枚举其之前的状态,如果其ed<当前i的st,那么取max即可 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using na...

2016-11-15 18:53:00 122

转载 【洛谷P3385】模板-负环

这道题普通的bfs spfa或者ballen ford会T所以我们使用dfs spfa原因在于,bfs sfpa中每个节点的入队次数不定,退出操作不及时,而dfs则不会既然,我们需要找负环,那么我们不妨将dis数组初始化为0,以每个点为起点进行dfs spfa这样第一次扩展到的只有边权为负的边,之后若再次走到以访问过的点一定是负权回路记得每次更换起点时清零vis数组...

2016-11-15 15:54:00 83

转载 【洛谷P2866】Bad Hair Day

单调栈版子 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=80010; 5 int n,a,top=0,zh[N]; 6 int read(){ 7 int sum=0; 8 char ch=getcha...

2016-11-15 14:15:00 138

转载 【洛谷P3197】越狱

本来还想了一会dp……然而一看数据范围明显是数论……那么推一推。。我们发现可以用总方案数减去不会越狱的方案数那么我们考虑在长度为n的数列中填数首先第一个位置有m种选择,后面的位置:总方案:m种;不会越狱:m-1种快速幂。 1 #include<cstdio> 2 #include<cstring> 3 #define...

2016-11-15 14:12:00 139

转载 【洛谷P2513】逆序对数列

前缀和、滚动数组优化dpf[i][j]表示前i个数,逆序对数为j的方案数我们知道,在第k个位置放第i个数,单步得到的逆序对数为i-k则在前i个数,最多能产生的逆序对数为i个,最少0个,均可转移到j所以我们得到:f[i][j]=sum(f[i-1][j...j-i])所以我们可以通过前缀和优化j滚动数组消去 i 的一维这样时间复杂度由n^2k变为nk,空间由nk...

2016-11-15 08:12:00 111

转载 【洛谷P3076】Taxi

这道题值得好好想一会我们通过对一些小数据的手算,以及对于每段路程的拆分,可以发现:1.每个st对应的ed这段路程无论如何都要算上2.额外还要计算的一段路程,就是“切换”费用什么是切换费用呢?我们知道可能会有这样的位置st,到达该位置时,把已经在车上的牛 i 扔下去,载上该处的牛 j 并将它运到其终点ed再回来把牛 i 载上那么我们就需要再加上每一对abs(ed-s...

2016-11-14 20:25:00 116

转载 【洛谷P3143】Diamond Collector

算是一道dp首先,排序好每一个架子上都是一段区间,然后只需要统计每个点向左向右最长延伸的区间。所以我们预处理出每个点以左、以右最大能延伸的长度(最多能选几个差值不超过k的)然后枚举每个点作为断点,sum取max即可 1 #include<cstdio> 2 #include<cstring> 3 #include<algori...

2016-11-14 18:08:00 374

转载 【洛谷P3398】仓鼠找sugar

画个图就能多少看出些规律证明借鉴一下大牛的题解:设从A到B,经过的深度最小的点为X 同理,C,D的为Y题目是一个点从A出发到B 一个从C出发到D那么从A到B可以分解成 先从A到X 再从X到B。。。 C同理假设能相遇 那么要么在A到X的过程A,B相遇 要么在X到B的过程A,B相遇对于在A到X的过程相遇的情况 又可以分解为:情况1:在A到X的过程和 C到Y...

2016-11-14 08:37:00 85

转载 【洛谷P3258】松鼠的新家

很好的一道题LCA+树上前缀和sum数组是前缀和数组,分类讨论一下,1.访问到一个点p1,若下一个点p2需要往儿子下面找的话,那么lca就是这个点p1,则sum[p1]--; sum[p2]++;2.访问到一个点p1,若下一个点p2需要往父亲上找的话,那么lca就是p2,则sum[f[p2][0]]--; sum[f[p1][0]]++3.访问到一个点p1,若下一...

2016-11-12 23:06:00 74

转载 【洛谷P1378】油滴扩展

搜索……PS一个坑点:r<=0时并不是舍弃这种情况,而是让r=0(因为每个点都要放一滴油)(读题啊!) 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #define dd double 5 using namespace std; 6 ...

2016-11-09 15:57:00 81

转载 【洛谷 P1352】没有上司的舞会

树形dp 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=6010; 6 int f[N][2],w[N],in[N],out[N],n; 7 int head[N],n...

2016-11-07 17:55:00 69

转载 【洛谷P1969】积木大赛

递增区间内累计增量 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int a,h,n,ans; 5 int main(){ 6 a=ans=0; 7 scanf("%d",&n); 8 for (int i=1;...

2016-11-01 18:11:00 71

转载 【洛谷P1351】联合权值

我们枚举中间点,当连的点数不小于2时进行处理最大值好搞求和:设中间点 i 所连所有点权之和为sum则对于每个中间点i的联合权值之和为:w[j]*(sum-w[j])之和 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int p=10...

2016-11-01 10:34:00 83

转载 【洛谷P1941】飞扬的小鸟

f [ i ] [ j ] 表示横坐标为 i ,高度为 j 时的最小点击次数分别dp处理:1.上升,(1)<m (2)>=m2.下降3.管道 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int ...

2016-11-01 09:59:00 64

转载 【洛谷P1541】乌龟棋

四维dp 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=41; 5 int f[N][N][N][N],g[356],a,b,c,d,n,m; 6 int max(int x,int y){ 7 return x&g...

2016-10-31 20:45:00 63

转载 【洛谷P1080】国王游戏

我们按照左右手数的乘积升序排序,就能使最多金币数最小了为什么呢?我们知道:1)如果相邻的两个人交换位置,只会影响到这两个人的值,不会影响他人2)假设相邻的两个人i, i + 1。设A[i]B[i] <= A[i + 1]B[i + 1],i之前所有人的左手乘积为S。ans1 = max{S / B[i], S * A[i] / B[i + 1]}ans2...

2016-10-31 19:14:00 51

转载 【洛谷P2296】寻找道路

反正图两边bfs 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 5 using namespace std; 6 7 inline int readint(){ 8 int x=0,f=1; 9 char ch=ge...

2016-10-31 18:49:00 89

转载 【洛谷P1083】借教室

显然线段树可以搞……不过常数需要优化的很小另一种做法,我们可以考虑二分答案每次对于1--mid天维护前缀和判断即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=1000010; 5 int n,m,r[N],su...

2016-10-31 15:18:00 77

转载 【洛谷P1462】通往奥格瑞玛的道路

意思就是费用的最大值最小那么我们对最大费用进行二分,按此跑最短路,累计扣减血量进行比较即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=10010,M=100010; 5 long long n,m,hp,tmp,sum[N]...

2016-10-31 13:56:00 55

转载 【洛谷P2679】子串

dp设f[i][j][l]表示A串取i个(但a[i]不一定能取到),B串取j个(b[j]一定能取到),此时用了l个串的方案数。第一种情况:a[i]==b[j]f[i][j][l]=f[i-1][j-1][l]+f[x][j-1][l-1]第二种情况:a[i]!=b[j]f[i][j][l]=0到这里,已经拿到60分了。又:每次的转移只跟这次和上次状态有关,...

2016-10-31 10:24:00 56

转载 【洛谷P1970】花匠

主要有两种做法:乱搞和dpdp相对来说考虑的特殊情况少一些最重要的一点就是:为了避免类似:(1 2 2 2 1 )的情况,我们需要一个q记录“前”一个数p记录当前数判断时 p > ( < ) q & & p > ( a [ i + 1 ] )即可 1 #include<cstdio> 2 #inc...

2016-10-30 20:41:00 70

转载 【洛谷P1966】火柴排队

两列排序后将编号一一对应归并排序求逆序对(每一次交换就去掉一个逆序对) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define ll long long 5 using namespace std; 6 const int N=...

2016-10-30 20:09:00 33

转载 【洛谷P1371】NOI元丹

不考虑insert则NOI的个数可通过O(n)递推得到:sum_NOI<--sum_NO<--sum_N考虑insert:首先预处理对于每个N,其后面的O和I各有多少个N:显然插入在最前面I:最后面O:枚举断点,前面的N*后面的I,取max 1 #include<cstdio> 2 #include<cstring...

2016-10-30 11:16:00 77

转载 【洛谷P2409】Y的积木

这是一道dp……f [ i ] [ j ] 表示前 i 组,总和为 j 时的方案数f [ i ] [ j + a [ i ] [ k ] ] <-- f [ i - 1 ] [ j ] 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 u...

2016-10-30 10:21:00 89

转载 【洛谷P2759】奇怪的函数

x^x>=10^(n-1)lg x^x>=n-1x*lg x>=n-1x*(log2 x/log2 10)>=n-1左边单调递增,二分x即可 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 using namespace...

2016-10-29 22:26:00 82

转载 【洛谷P1064】金明的预算方案

对于每一个主附件集合无非有:五种状态:1:不选2:主件3:主件+附件14:主件+附件25:主件+附件1+附件2所以对于每个主附件集合转化为至多4个物品(价值和与代价和),01背包即可 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 con...

2016-10-29 18:37:00 49

转载 【POJ3090】Visible Lattice Points

对前几行的手算可以得出:从(0,0)连接到(n,0)到(n,n),斜率为:1 / n , 2 / n ...( n - 1 ) / n也就是说,凡是分子和分母能够约分的,之前均已有过那么我们将这个矩形以y=x分为两部分,对于第n行(列)能连的个数也就是Φn最后再加上(1,1)的一个点即可 1 #include<cstdio> 2 #incl...

2016-10-27 10:45:00 45

转载 【洛谷P1736】创意吃鱼法

一开始的思路是预处理矩阵前缀和递推时通过前缀和判断是否合法(原图和左右反图分别一边)for (int i=1;i<=n;i++) for (int j=1;j<=m;j++){ if (!c[i-1][j-1]&&c[i][j]) f[i][j]++; if (c[i][j]==...

2016-10-27 10:37:00 68

转载 【洛谷P1417】烹调方案

如果没有 b [ i ] 就是01背包加上 b [ i ] 这个属性,我们可以考虑:对于1,2两个,先完成1的价值p=a[1]-b[1]*c[1]+a[2]-b[2]*(c[1]+c[2])先完成2的价值q=a[2]-b[2]*c[2]+a[1]-b[1]*(c[1]+c[2])p>q 要求 b[1]c[2]>b[2]c[1]故满足这个条件上的所有物品对(...

2016-10-25 16:35:00 55

转载 【洛谷P1006】传纸条

双线程dpf [ i ] [ j ] [ k ] [ l ] 表示 走到 (i,j),返回时走到(k,l)时的(总)最大价值 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=52; 5 int f[N][N][N][N],a[N]...

2016-10-24 21:29:00 42

转载 【洛谷P1282】多米诺骨牌

01背包,但至少取一种f [ j ] 表示当点数之差为 j 时的最小反转次数,0<=j<=m (点数最大值之和)我们可以不考虑每一块骨牌点差,仅考虑每次减去上面的(和翻转到上面的)数所得到的 j则:f [ j ] = min ( f [ j - a [ i ] ] , f [ j - b [ i ] + 1),前者条件为 j>=a [ i ],后者条件 j...

2016-10-24 20:44:00 117

转载 【洛谷P1485】火枪打怪

本题二分显然关键是怎么O(n)check我们很容易想到应该从右往左打起我们设对于二分出的伤害值为 p,射到从左到右第s个怪物身上的子弹数为kk[s]。对于p-(i-j)*(i-j)我们将它拆开,变成-j^2+2ij-i^2+p。对于第j个怪,它受到的溅射伤害应为-(kk[j+1]+...+kk[n])*j^2+2*(kk[j+1]*(j+1)+...+kk[n]*n)*j-...

2016-10-24 16:44:00 131

转载 【YY】Oxer的noi

EZOI+1【问题描述】“君不见Oxer 感染AHdoc,愈发喜爱毒瘤题。“君不见多组数据卡常数,难写难调难对拍“……”一首《将进酒》道出了Oxer对于毒瘤题的热爱与执着。现在,他开始对一些毒瘤题进行分类,开始时,每道毒瘤题都是各自一类,每次,他会选择两道毒瘤题,认为他们是类似的(我们也认为类似是可以传递的,即 a与 b类似,b与 c类似,则 a...

2016-10-20 21:33:00 56

转载 【洛谷P1108】低价购买

O(n^2) LIS 附带方案数思路:b [ i ] :以第i天为结尾,最大购买次数f [ i ] :到第i天,最大购买次数ok [ a [ i ] ]:在与 a [ i ] 价格相同的情况下,该价格是否为最优y:当前 i ,循环到 j 时的最大 b [ ]转移方程:b [ i ] = max{b [ j ] }+1,1<=j<=i-1 ...

2016-10-20 12:50:00 56

转载 【YY】second

一道很好的EZOI模拟赛的题忘了原题了……【题目描述】有两个集合 X 和 Y , 每个集合中有 n 个正整数元素, 分别为 1 , 2 , .....n.。现在要从这两个集合中各选一个元素, 并要求这两个元素的乘积小于等于 n.求选这两个元素的方案数.【数据范围】对于 30% 的数据,n<=500.对于 50% 的数据,n<=5000.对于 7...

2016-10-20 11:07:00 58

转载 【CF519B】Rebranding

暴力显然正解,我们发现每个操作仅仅修改一对小写字符,所以实际上只是将所有的字符a映射到b所以对于26个小写字符建立一个映射表,初始时 a --> a,b --> b...每次修改只需遍历映射表并修改,最后参照映射表输出即可 1 #include<cstdio> 2 #include<cstring> 3 using na...

2016-10-20 10:37:00 142

转载 【YY】三角形的概率

题意:随机产生3个正整数,作为一个三角形的三条边,求他们构成一个三角形的概率思路:构成三角形:a + b > c--> a/c + b/c > 1即:两个小数的和大于1那么建立平面直角坐标系,x,y取值均为0~1,直线 x + y = 1将此正方形平分,在它之上的为即和 > 1故概率为1/2转载于:https:...

2016-10-13 10:39:00 225

空空如也

空空如也

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

TA关注的人

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