自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hnust_Derker的博客

Talk is cheap, show me the code.

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

原创 LA4127 The Sky is the Limit(离散化)

题意:给出若干个等腰三角形,覆盖的部分以及底边长不计,求这些等腰三角形的腰的总长度思路:很容易想到离散化,将三角形三个点的横坐标以及没两条斜边所在的直线的交点记录下来,然后去重,求出所有x与所有线段(不是直线)相交的最大值(纵坐标),然后求相邻两个点的距离之和即可,注意去除两个三角形相隔的部分还有不满足条件的点#include#include#include#incl

2016-12-30 14:57:28 780

原创 Uva 11990 "Dynamic" Inversion(树状数组 + 数据结构分块)

题意:给一个1 ~ n的排列,有m次删除操作,问每次删除前该序列有多少逆序对思路:预处理原来总共有多少逆序对,树状数组即可,求出以每个数为逆序对有多少个,删除的时候,先用剩余的逆序对数减去以该数形成的逆序对数,然后看删除的数有多少与该数形成逆序对,再加回去,可以使用分块的方法,快速查询有多少删除的数与其形成逆序对,每次删除的数加在一个新数组上,对新数组分块查找就行了#inc

2016-12-17 18:11:27 325

原创 Uva 12003 Array Transformation(分块查找)

题意:给出n(1思路:lrj训练指南的一种叫分块查找的数据结构,把每个块分成大概O(sqrt(n))个元素,编码简单又快#include#include#includeconst int maxn = 3 * 1e5 + 10;const int sz = 4096;using namespace std;int A[maxn], block[maxn / s

2016-12-17 16:49:08 339

原创 Uva 11297 Census(线段树)

题意:给一个n*n的矩阵,给出q个操作,操作有两种,一种是查询 矩阵内x1 思路:二维线段树的模板题#include#include#include#include#includeconst int INF = 1 << 30;const int maxn = 2010;using namespace std;int Max[maxn][maxn], Mi

2016-12-17 15:29:08 314

原创 HDU 5988 Coding Contest(费用流)

题意:有n个地点m条有向路,每个地点有选手和食物,现在要求每个选手能吃到食物,需要经过这些路,每次经过一条路会有一定概率影响赛场,第一次经过不影响,问影响赛场的最小概率是多少。思路:容斥原理可知道对赛场的总概率是 : 1-(p1^n1)*(p2^n2)...*(pm^nm),其中pi为经过第i条路不影响赛场的概率,ni表示经过该条路的(次数-1),因为第一次经过不影响,要使整个式子结果

2016-12-17 14:02:07 312

原创 Uva 10806 Dijkstra,Dijkstra(最小费用流)

题意:给一个n个点的带权无向图,问S到T的最短往返路径,不能重复走。思路:可以看做S到T有两条没有重边的路径,那么原图每条边的容量为1,花费为边权,就转化为了,S到T最大流是2的时候最小费用是多少,如果最大流为1那么答案无解。#include#include#include#include#includeconst int maxn = 205;const in

2016-12-14 11:22:04 1123

原创 Uva 11367 Full Tank?(多状态最短路)

题意:有n个城市m条无向路连接,第i个城市的油价格为pi, 给出q个询问,每个询问包含起点s和终点t,还有油箱容量c,问从s到t最便宜的路径思路:设d[i][j]:到达第i个城市还剩j升油时,所需要的最少花费,那么这里可以按花费直接用dijkstra,只是多加了一个状态而已#include#include#include#include#includeconst

2016-12-14 10:07:58 422

原创 哈尔滨理工大学第六届程序设计团队赛G OX(博弈搜索)

题意:给出井字棋的当前状态和先手,问最终是谁会赢,或者是平局?思路:将每一个状态用三进制压缩,设dp[S][now]为当前状态为S,下棋的人是now时的胜负状态,那么当前如果对方连成了3子,己方就输了,或者自己连城了3子,己方就赢了,或者是棋盘已满,则为平局。如果当前状态可以进入至少一个必败态,那么当前状态是必胜态,否则如果可以进入一个平局态,那么当前状态就是平局态,否则是必败态。

2016-12-13 21:13:21 511

原创 哈尔滨理工大学软件学院ACM程序设计全国邀请赛 A Golds(LCA + 最大流)

题意:有 n座矿山,每座矿山有a[i] 的金子,两两相互连接的路径形成一棵树,有m个机器人,可以在顶点si 到ei这条路径上的矿山开矿(走过的路不能重复走),但是开采的总量不能超过wi,问最多能开采多少金子思路:一开始没有看到形成一棵树,老想着有环怎么办。。。。如果形成了一棵树,那么任意两点间只有一条路径可达(不能重复走),那么机器人只能在那些矿上上开采,机器人和那些山连上边就好了

2016-12-10 08:54:44 565

原创 Uva 11270 Tiling Dominoes(轮廓线动态规划)

题意:给一个n*m的棋盘用1*2的骨牌铺满,有多少种方法。思路:lrj训练指南的原题,讲的很清楚,以当前格子为右下角,在决定是否要放的时候,以当前格子往前数m格,形成一个状态,当然假设这些格子之前的都已经铺满了,那么只有不放,左放,上放三种状态,如果上面格子没放,那么久一定要上放,不然之后无法再铺满上面的格子。#include#include#includetyped

2016-12-08 14:33:48 437

原创 LA 4794 Sharing Chocolate (状压DP)

题意:给你一块x * y的巧克力问是否经过若干次切割后能分成面积为a1,a2,....an的巧克力思路:因为n很小,所以可以状态压缩,设dp[S][i]当宽为i的时候是否能分成集合为S的巧克力,因为宽度确定了的话,那么长度也就一定确定了,再者就是保证S集合的巧克力面积总和要可以整除i。这里还需要运用到一个枚举子集的技巧,这样才能高效枚举子集。#include#includ

2016-12-07 10:01:57 266

原创 LA 3983 Robotruck(DP)

题意:有n个垃圾且有各自的重量,一个机器人按标号从小到大开始捡垃圾,且手中的垃圾重量不能超过C,问机器人怎样捡才能使他的行走路程最短。思路:dp,设dp[i] : 拾取完前i个垃圾的最短路程,则有dp[i + k] = min { dp[i] + dis[i + 1] + dis[i + k] + tal[i + k] - tal[i + 1] },其中dis[i]为第i个垃圾距离源点

2016-12-06 20:57:12 351

原创 Uva 10859 Placing Lampposts(树状DP)

题意:给一个n个点m条边的无向无环图,在尽量少的节点上放灯,使得所有边都被照亮。每盏灯将照亮以他为一个端点的所有边,在灯的总数最小的前提下,被两盏灯同时照亮的边数尽量大思路:放置的灯数a尽量少,被两盏灯同时照亮的边数应尽量大。后面那句话等价于恰好被一盏灯照亮的边数c尽量小。最终求 x = a * M + c的最小值。其中M是一个足够大的数,那么x / M就是放置的灯数,x % c就是被

2016-12-06 13:49:11 265

原创 哈尔滨理工大学软件学院ACM程序设计全国邀请赛 C Coin

题意:有n个硬币,价值总和为m,问硬币可以凑成1 ~ m的所有价值 的方案总数为多少思路:dp题,设dp[i][j][k]表示:用i个硬币能凑成1 ~ j且最大面值为k的方案数,那么增加一个面值为add(add >= k)的硬币时, 则有dp[i + 1][j + add][add] += dp[i][j][k],注意add的值不能超过j + 1,理由是当add > j + 1时,无论

2016-12-06 11:52:13 410

原创 Uva 10891 Game of Sum(区间DP)

题意:给一个长度为n的序列,A、B两人玩游戏,可以从左端或者从右端开始取走任意数量的数,最终取得数之和为该人得到的分数,两人都希望自己的分数尽可能高,求最终A - B的分数思路:区间dp,设dp(i,j)为在区间[i,j]取数时,先手可以得到的最大的分数,则dp[i][j] = sum[i][j] - min(dp[i+1][j],dp[i+2][j]......dp[j][j],dp

2016-12-04 17:42:11 373

原创 UVA 11019 Matrix Matcher(AC自动机)

题意:给一个n*m的文本串和x*y的模式串,问模式串出现几次。思路:对模式串每一行建立Tire,设c[i][j]代表模式串p左上角在(i,j)位置上时有模式串多少行可以与文本串匹配,在文本串中每一行用AC自动机寻找,注意可能有模式串重复的情况,要用一个nxt数组,连接起所有的重复的模式串,tire上的值即为模式串的行号#include#include#include#

2016-12-02 21:37:41 243

空空如也

空空如也

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

TA关注的人

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