自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 noi知识点

Oier~

2017-07-28 21:23:42 1164

原创 LA 2038 Strategic game

题目描述 传送门注意此题蓝书上的翻译有误! 蓝书上说“使得每个没有选中的节点至少和一个以选中的节点相邻”,而题目要求的是使得每条边至少和一个以选中的节点相邻。 搞得我硬是找不出错。 简单的树上DP,设d(i,0),d(i,1)d(i,0),d(i,1)分别为以ii为根节点的子树ii点不放兵和放兵总共所需的最小放兵数量,转移简单。代码#include<cstdio>#include<iostr

2017-10-20 15:22:47 336 1

原创 UVa 10859 Placing Lampposts

题目描述 传送门根据蓝书的思路: 设d(i,j)d(i,j)为以ii为根节点的子树,ii的父节点是否放灯(jj=0,1分别为放和不放)的最小方案数。 因为在放置街灯aa相等的情况下还有第二个比较条件,把条件统一为恰好被一盏灯照亮的边数c尽量小。设一个适当的数M,转换为最优化x=Ma+cx=Ma+c,M的选取要使在a1<a2a_1<a_2的情况下x1=Ma1+c1x_1=Ma_1+c_1一定小于x

2017-10-20 10:57:11 304

原创 UVa11825 Hackers' Crackdown

题目描述 传送门简单的状态压缩DP。代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn=18;int d[1<<maxn],p[maxn],S1[1<<maxn];int main(){ int n,kase=0;

2017-10-20 09:15:37 308

原创 BZOJ 1051 [HAOI2006]受欢迎的牛

题目描述 传送门学习了Tarjan缩点。#include<cstdio>#include<iostream>#include<cstring>#include<vector>#include<algorithm>#include<stack>using namespace std;const int maxn=10005;vector<int> g[maxn];int dfs_cl

2017-10-19 20:18:01 250

原创 UVa10917 Walk Through the Forest

题目描述 传送门根据题目意思建立DAG,再统计路径条数。代码#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int maxn=1005,maxm=(maxn-1)*(maxn-2);const int INF=1e

2017-10-19 19:36:24 295

原创 UVa11374 Airport Express

题目描述 传送门正反向Dijkstra,枚举商业线。 坑点:最后输出路径,格式。代码#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int maxn=1005,maxm=(maxn-1)*(maxn-2);con

2017-10-19 19:33:35 246

原创 UVa4080 Warfare And Logistics

题目描述 传送门尝试删mm条边重新计算nn个点的最短路时间复杂度O(nm2logn)O(nm^2logn) 但对于点ii只有删除了以ii为源点的最短路树上的边才需要重新计算。 预处理好每个点的最短路树,这样最多计算O(n2)O(n^2)次单源最短路,时间复杂度降为O(n2mlogn)O(n^2mlogn)代码#include<cstdio>#include<iostream>#include

2017-10-19 19:26:10 224

原创 UVa10537 Toll! Revisited

题目描述 传送门考虑到反向做Dijkstra,终点的dd值为pp,反向Dijkstra时对于当前的(u,v)∈E(u,v)\in E 可以推出如果vv是村庄,边权为11;如果是城镇,边权为⌈d(u)/19⌉\lceil d(u)/19 \rceil。为了方便,加了个虚拟终点00。代码#include<cstdio>#include<iostream>#include<cstring>#incl

2017-10-19 19:14:33 268

原创 BZOJ 1026 [SCOI2009]windy数

题目描述 传送门原来这就是数位DP,原来做过一道类似的。 主要思路就是设d(i,j)d(i,j)为最高位为ii有jj位有多少个windy数,最后计算答案时要注意细节。 我的好像和大多数人的点不一样,似乎写麻烦了…代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace s

2017-10-02 10:16:38 291

原创 BZOJ 1008 [HNOI2008]越狱

题目描述 传送门数学题,不过我数学太辣鸡了…… 思路是总的减去不行的,总的有MNM^N种,不行的情况,第一个有罪犯MM种宗教可信仰,之后第二个~第N个都有M−1M-1种选择,所以有M∗(M−1)(N−1)M*(M-1)^(N-1)。代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using na

2017-10-02 10:08:07 245

原创 BZOJ 1012 [JSOI2008]最大数maxnumber

题目描述 传送门有用单调数据结构的更好的做法,不过我先写个线段树。 cin无限RE!!代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=200005;int maxv[maxn*4],ans=0,now,m,t; void

2017-10-02 10:02:07 272

原创 Tyvj P4869 罪犯分组

题目描述 传送门一看完题就觉得是状压DP。 DP方程不难想:设d(S)d(S)为集合SS需要的最小分组数。 那么 d(S)=min{ d(S−S0)+1 | S0⫋S,S0集合可分成1组 }d(S)=min\{\ d(S-S_0)+1\ |\ S_0\subsetneqq S,S_0集合可分成1组\ \} 要枚举全集的所有子集的所有子集,时间复杂度是多少呢?答案是O(3n)O(3^n)( 结

2017-09-22 13:09:25 328

原创 BZOJ 5011 [JXOI2016]颜色

题目描述 传送门按照老师的思路:倍增(st表)+递推 完成的此题。 但不知道是不是我没写好还是我思路不好,这份代码在BZOJ明显比别人的慢。 希望dalao能分享更好的解法。 代码#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int max

2017-09-21 13:09:46 364

原创 Tyvj P4868 天天和不可描述

题目描述 传送门递归。 先预处理每个括号的配对情况,用lef[i]表示i位置的右括号的与它配对的左括号的位置,rig[i]同理。 然后递归处理,用k表示从右往左还是从左往右。遇到括号递归。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<string>using namespac

2017-09-19 18:19:37 485

原创 Luogu P1600 [NOIp提高组2016]天天爱跑步

题目描述 传送门我觉得好难好难啊,看题解我都看不懂(我觉得实现起来有点麻烦)。 总结一下: 首先也许可以想出S=1和T=1的数据的做法,然后想到把S->T路径拆成S->LCA和LCA->T. 然后要想到一个点i可观测到的人一定满足: S->LCA路径: depth[i]+w[i]=depth[S]depth[i]+w[i]=depth[S] LCA->T路径: distance(S

2017-09-19 13:54:19 671

原创 Luogu P1850 [NOIp提高组2016]换教室

题目描述 传送门作为蒟蒻的我不懂概率,不懂期望QWQ。看别人的题解裸地期望DP似懂非懂。先写一下吧,以后再做应该会更能理解的。代码#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn=2010,maxv=305;int a[maxn]

2017-09-14 18:00:02 369

原创 Luogu P1941 [NOIp提高组2014]飞扬的小鸟

题目描述 传送门个人感觉70分的DP还是比较容易的。 设d(i,j)d(i,j)为在第ii列第jj高度需要的最少点击数,无法到达为INFINF. 其实满分做法也不算难,完全背包+01背包,都是比较基础的东西,就是有坑点。 其实坑点细心一点就行了,但是我脑子抽了,导致调了好久(超级久QWQ)。 错误的地方代码里有注释。代码#include<cstdio>#include<iostream>

2017-09-12 13:02:27 420

原创 Luogu P1563 [NOIp提高组2016]玩具谜题

题目描述 传送门水题而已,没什么好说的。 就是看看能不能最快速度AC(我的代码能力好差的QWQ…)代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<string>using namespace std;string name[100010];int face[100010]

2017-09-08 18:15:38 337 1

原创 Luogu P1970 [NOIp提高组2013]花匠

题目描述 传送门我感觉比第一题还水啊~~ 虽然一开始看题有点mengbi,然后看到洛谷标签DP更mengbi. 然后好困就睡着了,醒来敲了和类似于第一题的一遍扫描(似乎是贪心),自己傻逼数组开小了没一遍AC。代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std

2017-09-08 13:42:56 308

原创 Luogu P1969 [NOIp提高组2013]积木大赛

题目描述 传送门一道水题搞了半个多小时,无语了… 这道题告诉我:NOIp第一题一定不要想复杂,不要脑子抽了!!! 仔细想想可以发现这样做:从前往后扫,如果当前积木高度大于上一个积木高度h>hlasth>h_{last}答案增加hlast−hh_{last}-h。代码#include<iostream>#include<cstdio>#include<cstring>#include<alg

2017-09-07 18:06:56 317

原创 UVa10635 Prince and Princess

题目描述 传送门求两序列的LCS,当序列元素两两互不相等可转化为LIS。 LIS可以用O(nlogn)O(nlogn)的算法求解。 (但我还是理解不透彻,总感觉在背模板…)代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=7

2017-09-07 13:24:14 297

原创 LA3882 And Then There Was One

题目描述 传送门蓝书上的例题,递推法求之。 设f(n)f(n)为0~n-1个数字围成一圈,从0开始每k个删一次最后删的数。 f(n)=(f(n−1)+k)%nf(n)=(f(n-1)+k)\%n 最终答案是 (f[n]+m-k+1)%n 注意可能是负数,还要处理一下。代码#include<cstdio>#include<iostream>#include<cstring>#includ

2017-09-07 12:58:04 298

原创 UVa10524 Wavio Sequence

题目描述 传送门最长上升子序列和最长下降子序列,O(nlogn)O(nlogn)算法理解的还不是很透彻。代码#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>using namespace std;int a[10010],b[10010],g[10010],f[10010],d1[10010],d2[1

2017-09-03 13:19:09 232

原创 UVa11552 Fewest Flops

题目描述 传送门DP,设d(i,j)d(i,j)为前ii段(kk个字母为1段)以字符jj结尾能得到的最少块数,可以发现把每段重排字符顺序时相同字符排在一起一定最好。代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cstdlib>using namespace std;bool

2017-09-03 13:12:32 267

原创 LA4256 Salesmen

题目描述 传送门很容易想到O(n2)O(n^2)暴力预处理在每个城市时小A和小B分别要到达的另一个城市和距离。再暴力O(nm)O(nm)求每一个询问。这样可以骗到70分。 预处理时可以用平衡树,具体操作是将每一座城市从西往东一个插入树,再寻找与它距离最近的,仔细想一下就知道怎么找了。因为是倒着插,所以树中的一定是此城市西边的。(平衡树可以用STL的set) 作为蒟蒻的我以前只知道倍增可以搞st表

2017-09-03 12:28:52 275

原创 Luogu P1081 [NOIp2012]开车旅行

题目描述 传送门很容易想到O(n2)O(n^2)暴力预处理在每个城市时小A和小B分别要到达的另一个城市和距离。再暴力O(nm)O(nm)求每一个询问。这样可以骗到70分。 预处理时可以用平衡树,具体操作是将每一座城市从西往东一个插入树,再寻找与它距离最近的,仔细想一下就知道怎么找了。因为是倒着插,所以树中的一定是此城市西边的。 作为蒟蒻的我以前只知道倍增可以搞st表和树上lca,然而不知道倍增还

2017-08-20 20:41:36 334

原创 Luogu P1314 [NOIp提高组2011]聪明的质监员

题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi 。检验矿产的流程是: 1 、给定m 个区间[Li,Ri]; 2 、选出一个参数 W; 3 、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi: 这批矿产的检验结果Y 为各个区间的检验值之和。即:Y1+Y2…+Ym 若这批

2017-08-19 20:28:28 267

原创 Luogu P1311 [NOIp提高组2011]选择客栈

题目描述 传送门 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号。每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均有各自的最低消费。 两位游客一起去丽江旅游,他们喜欢相同的色调,又想尝试两个不同的客栈,因此决定分别住在色调相同的两家客栈中。晚上,他们打算选择一家咖啡店喝咖啡,要求咖啡店位于两人住的两家客

2017-08-19 19:55:11 272

原创 Luogu P1282 多米诺骨牌

题目描述 传送门 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|。例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2。每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置。 编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小。 对于图中的例子,只要

2017-08-19 19:42:18 547

原创 Luogu P2687 [NOIp提高组2015]跳石头

题目描述 传送门这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终 点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达 终点。 为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳 跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M 块岩

2017-08-17 21:56:36 252

原创 Luogu P2680 [NOIp提高组2015]运输计划

题目描述 传送门 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球。 小 P 掌管一家物流公司,该公司有很多个运输计划,每个运输计划形如:有一艘物 流飞船需要从 ui 号星球沿最快的宇航路径飞行到 vi 号星球去。显然,飞船驶过一条航道 是需要时间的,对于航道 j,任意飞船驶过它所花费的时间为 tj,并且任意两艘飞船之 间不

2017-08-17 19:43:11 284

原创 Luogu P2827 [NOIp提高组2016]蚯蚓

题目描述 传送门哎…开三个队列,可证单调性,我怎么就想不到呢QWQ. 代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include<cctype>#include<climits>#define INF INT_MAX-1using namespace

2017-08-16 22:02:45 318

原创 BZOJ 1911 [APIO2010]特别行动队

题目描述 因为是从别人博客里斜率优化分类一栏找的题目,所以…这题被我秒了。显然先预处理前缀和s(i)=∑ik=1xis(i)=\sum_{k=1}^ix_i 设d(i)d(i)为将前ii个士兵分组的最大修正后战斗力。 d(i)===max{ d(j)+a(s(i)−s(j))2+b(s(i)−s(j))+c }max{ d(j)+a×s(i)2−2a×s(i)s(j)+a×s(j)2+b×s(

2017-08-14 19:42:48 326

原创 Luogu P2679 [NOIp提高组2015]子串

题目描述 有两个仅包含小写英文字母的字符串 A 和 B。现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问有多少种方案可以使得这个新串与字符串 B 相等?注意:子串取出 的位置不同也认为是不同的方案。设d(i,j,k)d(i,j,k)表示字符串A前ii个字符取出kk个子串组成字符串B的前jj个字符的方案数

2017-08-14 13:43:30 365

原创 BZOJ 1096 [ZJOI2007]仓库建设

题目描述 传送门 L公司有N个工厂,由高到底分布在一座山上。如图所示,工厂1在山顶,工厂N在山脚。由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。突然有一天,L公司的总裁L先生接到气象部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏。由于地形的不同,在不同工厂建立仓库的费用可能是不同的。第i个工厂目前已有成品Pi件,

2017-08-14 10:20:16 399

原创 BZOJ 1010 [HNOI2008]玩具装箱toy

题目描述 传送门 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为1…N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,形式地说如果将第i

2017-08-14 00:04:08 306

原创 UVa10970 Big Chocolate

题目描述 哈哈哈超级大水题~~ 代码#include<cstdio>using namespace std;int main(){ int a,b; while(scanf("%d%d",&a,&b)==2) printf("%d\n",a*b-1); return 0;}

2017-08-13 17:04:35 378

原创 LA3983 Robotruck

题目描述 蓝书上的例题,我重新推导一遍。 设d(i)d(i)表示捡完前ii个垃圾需要走的最短距离。 d(i)=min{d(j)+dist0(j+1)+dist(j+1,i)+dist0(i) | w(j+1,i)<=c}d(i)=min\{d(j)+dist0(j+1)+dist(j+1,i)+dist0(i)\ |\ w(j+1,i)<=c\} 其中: dist0(i)dist0(i)

2017-08-13 10:43:54 344

原创 UVa10285 Longest Run on a Snowboard

题目描述 DP 代码#include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cstring>using namespace std; string s;int n,m,t,d[110][110],a[110][110];int dp(int i,int j){ int

2017-08-12 21:47:55 253

空空如也

空空如也

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

TA关注的人

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