LOJ #539「LibreOJ NOIP Round #1」旅游路线

MayFlyyh | DP, 倍增 | 2018-08-16
T 城是一个旅游城市,具有n个景点和m条道路,所有景点编号为 1,2,...,n。每条道路连接这n个景区中的某两个景区,道路是单向通行的。每条道路都有一个长度。 为了方便旅游,每个景点都有一个加油站。第i个景点的加油站的费用为 pi,加油量为ci。若汽车在第i个景点加油,则需要花费pi元钱,之后车的油量将被加至油量上限与ci中的较小值。不过如果... [阅读全文]

HDU 5603 D Game

MayFlyyh | DP | 2018-08-14
> 给一个公差集合{D},再给N个数 > 1.在当前剩下的有序数组中选择X(X>=2) 个数字 > 2.检查1选择的X个数字是否构成等差数列,且公差∈{D} ; > 3.如果2满足,删除这X个数字 > 4.重复1-3,直到不能删除更多数字 > 问最多可以删除多少个数字? > N [阅读全文]
ė 6 没有评论 0

HDU 2476 String painter

MayFlyyh | DP | 2018-08-14
题意:给你一个由小写字母组成的串S,让你变成由小写字母组成的串F,你可以每次将一个区间变成任意一个小写字母,后来的操作可以覆盖原来的区间,求最小操作次数。 |S|<=200 本题与bzoj1260很相似,bzoj1260是给你一个空白串让变成F,本题是在S上修改 bzoj1260的做法: dp[i][j]表示从i到j涂成F[i~j]的最小花费次数 初始化 dp[i][i]=... [阅读全文]

POJ 3156 Interconnect

MayFlyyh | Hash, 期望 | 2018-08-11
现在有n个点,给你m条边,每次随机选2个点连边(可能选已经连过的)并且花费1个代价,求使n点联通的期望最小代价。 本题关心每个联通块的规模,但不关心每个联通块具体的点。 然后根据规模记忆化搜索,因为规模无法正常表示成值,所以每次hash一下当前dp的状态,然后记忆化搜索看是否已经算过并返回答案。 对于每个联通块,有两种情况,一种是和... [阅读全文]

POJ 1201 Intervals

MayFlyyh | 最短路 | 2018-08-11
题意:给m个区间li,ri,再给一个ci,要求在每个区间li-ri种至少选ci个数,求满足条件最小选的数字。 数字值域:0~50000,m<=50000 哎,考虑差分约束,设D[i]表示从0-i满足条件至少选多少个 l-r,至少选C个,即D[r]-D[l-1]>=c,从l-1到r连一条权值为c的边 然后隐藏条件:0<=D[i]-D[i-1]<=1 然后呢?选一个最小的li,跑向最大的ri。 ... [阅读全文]

POJ 3417 Network

MayFlyyh | LCA | 2018-08-11
题意:给你一颗N个节点树,再给你M条新边(保证不与树边重复)。现在求剪短一条树边和任意M边中的一条边,能将树分成两个联通块的方案 > N (1 ≤ N ≤ 100 000), M (1 ≤ M ≤ 100 000) 一开始想的:暴力,N*M然后检验。。 然后想到树形DP,能不能按照每个节点剪掉它与它父亲节点的树边思考 剪掉这条树边,树边部分肯定不与大树相连接 分类讨论一下... [阅读全文]

POJ 1475 Pushing Boxes

MayFlyyh | 搜索 | 2018-07-16
想象您正站在一个二维的迷宫中,迷宫由是正方形的方格组成,这些方格可能被岩石阻塞,也可能没有。您可以向北,南,东或西一步移到下一个方格。这些移动被称为行走(walk)。 在一个空方格中放置了一个箱子,您可以挨着箱子站着,然后按这个方向推动这个箱子,这个箱子就可以被移动到一个临近的位置。这样的一个移动被称为推(push)。除了推以... [阅读全文]

POJ 1011 Sticks

MayFlyyh | 搜索 | 2018-07-16
现在有n根木棍,然后需要把它们拼成同样长度的木棍,问满足这个条件的最短的长度是多少? 搜索一下,显然长度之和应该能整除木棍数量,用这个数去看木棍能不能达成 有几个剪枝,先用桶排序,然后每次算的时候从大向小装,记一下装到的长度l,如果没有拼好这个木棍就接着l开始,如果拼好了就开始新的木棍从最大的那个长度开始。(想一想觉得还是... [阅读全文]

POJ2785 4 Values whose Sum is 0

MayFlyyh | 二分答案 | 2018-07-16
题意:四列,每列找一个数,得到和为0的序列,有几种不同的方案 一开始想的是dfs。。。后来想的是前两列两两组合将和放入多重集multiset里然后后两列每次查询一下就可以,但还是T了。 原来是把前两列两两组合,后两列两两组合然后每次查询就可以。 看来是set常数太大了。 #include<cstdio> #include<iostream> #include<cstring... [阅读全文]

POJ 2784 Buy or Build

MayFlyyh | 最小生成树 | 2018-07-16
n个城市,告诉每个城市的坐标,还有q个联通块,现在要把这n个城市连起来,可以购买联通块(每个有一定的费用),或者新建一条边(费用为点之间的距离的平方),问最小费用是多少。 二进制枚举每个联通块的选择情况。 注意联通块的数量大小应该就可以判断出要枚举。然后每次都跑一边最小生成树算出最优的答案。。 #include<cstdio> #includ... [阅读全文]
Ɣ回顶部