自定义博客皮肤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)
  • 收藏
  • 关注

原创 Codeforces 478D Red-Green Towers (DP)

### 题目大意用r块红色、g块绿色的方块,搭成一个h层(尽可能高)的塔,第i层有i个相同颜色的方块。问所有可行的方案有多少。### 解题思路动态规划dp(h, r) 表示到h层,已用r块红色的方案数绿色个数可以通过h,r确定。dp(h, r) = dp(h-1, r-h) + dp(h-1, r)明显可以滚动压缩,dp只与之前一次相关,r反向循环避免引用修改过的数据。dp[r] +

2015-03-09 12:14:50 1299

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2015-03-09 11:55:15 872

原创 SGU 222 Little Rooks (组合数)

222. Little Rookstime limit per test: 0.25 sec.memory limit per test: 65536 KBinput: standardoutput: standardInspired by a "Little Bishops" problem, Petya now wants to solve pr

2015-01-24 15:27:32 1302

原创 CF GYM 100548 The Problem to Make You Happy(2014ACM西安现场赛Problem H)

知识点:有向图,博弈论,动态规划。题目大意:Alice和Bob两人玩游戏。两人各有一个棋子,开始时在有向图中不同的点上。Bob先手,两人轮流移动棋子,每次只能将棋子移到相邻的点上(沿着图上的有向边),不断重复这样的过程,当那人无法移动时,他就输了(规则1)。还有两条附加规则:任何时候,当两个棋子到达同一点时,Alice胜出(规则2)。如果游戏永远无法结束,Bob胜出(规则3)。两人都遵循最优策略,轮流移动棋子,问最终谁会赢。图中没有自环和重边。解题思路:根据博弈论的性质,一个局面是必胜态的充

2015-01-24 14:49:15 2323 4

原创 CF GYM 100548 The Problem Needs 3D Arrays(2014ACM西安现场赛Problem C)

知识点:最大密度子图、最大权闭合图、最小割。题目大意:给出1~n这n个正整数的一种排列P,要求在P中找出一个子序列S,使得子序列中包含的逆序数对数r(S)和子序列的长度l(S)的比值最大。输出这个最大的比值r(S)/ l(S)。解题思路:可以将每个数看成图中的点,将逆序对的关系转换为图中的边。即构成了一个无向图。样例可以转换为下图:现在要求的就是在图中选取一些点,以及他们互相之间相连的边,构成一个闭合子图。使得图中的边数(逆序对数)与点数(选取的数字)的比值最大。这就是一个最

2015-01-24 14:47:10 2943 1

原创 CF GYM 100548 Color(2014ACM西安现场赛Problem F)

知识点:组合数学-容斥原理,快速幂,逆元。题目大意:共有m 种颜色,为n盆排成一直线的花涂色。要求相邻花的颜色不相同,且使用的颜色恰好是k种。问一共有几种涂色方案(结果除10e9+7取余数)。解题思路:首先可以将m 与后面的讨论分离。从m 种颜色中取出k 种颜色涂色,取色部分有C(m, k) 种情况;然后通过尝试可以发现,第一个有k种选择,第二个因不能与第一个相同,只有(k-1) 种选择,第三个也只需与第二个不同,也有(k-1) 种选择。总的情况数为k ×(k-1)^(n-1)。但这仅保证了相

2015-01-24 14:45:12 3170 4

原创 CF GYM 100548 International Collegiate Routing Contest(2014ACM西安现场赛Problem I)

解题思路:每个IP地址由32位二进制组成。整个地址空间可以表现为一棵二叉树(简化的Trie树),如下图所示:图中表示的是以下4个子网的覆盖情况:0.0.0.0/1 (二进制前1位是0)32.0.0.0/3(二进制前3位是001)128.0.0.0/2 (二进制前2位是10)224.0.0.0/3 (二进制前3位是111)图中的红色节点代表网络覆盖的终结点,这一网络号覆盖红色节点下的完整一支;黄色节点也是包含在这个网络中的,题目要求的就是树上没有被输入集合覆盖的分支。不能与

2015-01-24 14:42:55 3018

原创 CF GYM 100548 Last Defence(2014ACM西安现场赛Problem K)

知识点:Ad-Hoc,辗转相除法。题目大意:给定数列S的首两项,要求之后的各项满足Si= |Si−1 − Si−2|(前两项差值的绝对值)。问整个数列S中不同的数字个数。解题思路:首先容易发现,当i足够大时,最后一定会出现“xx0xx0...”这样的重复。所以不同数字个数一定是有限的。究其原因,对于数y和x,y一定能写成kx+b的形式,在数列的生成过程中,会出现kx+b、x、(k-1)x+b、(k-2)x+b、x、...、2x+b、x、x+b、b、x,其中出现的不同数字个数就是(kx+b)/

2015-01-24 14:40:14 2190

原创 CF GYM 100548 Built with Qinghuai and Ari Factor(2014ACM西安现场赛Problem A)

知识点:水题。解题思路:当输入的n个数都能被3整除时,输出“Yes”;否则输出“No”。

2015-01-24 14:37:57 1937

原创 HDU 5137 How Many Maos Does the Guanxi Worth(最短路径)

题目大意:问去除关系网中的一个点,使得从1到n的路径最长,输出最长路径。若可以使得1到n不通,输出Inf。解题思路:枚举去除的点,计算1->n的最短路径。因为数据范围实在太小,直接弗洛伊德乱搞。

2015-01-16 16:03:01 769

原创 HDU 5135 Little Zu Chongzhi's Triangles(贪心)

题目大意:给一些线段的长度,要求将他们组合成一些三角形,使得总面积最大。解题思路:根据海伦公式,可以贪心解。即变长越大,三角形面积越大。所以,将所有边排序后,从大到小,如果最大的三条边可以组成三角形,则采用这种组合;若无法组成三角形,即第二大和第三大的边之和不大于第一大的边(因已经排序,其他限制不用考虑),则丢弃第一大的边,因为之后的边任意组合也不可能与最大边组成三角形。

2015-01-16 15:44:20 1210 1

原创 HDU 5131 Song Jiang's rank list(水题)

题目大意:按杀人数降序输出水浒英雄,若杀人数相同,按姓名字母序升序输出。并统计输出两种名次。解题思路:排序后,顺序扫描统计即可。水题。

2015-01-16 15:39:32 1018

原创 HDU 5128 The E-pang Palace(暴力)

题目大意:找出两个不相交的矩形的总面积,可以是回字型。解题思路:暴力即可。

2015-01-16 15:34:00 1821

原创 Linux 实验 —— shell 编程

1、 查看当前系统下用户 shell 定义的环境变量的值。2、 定义变量 AK 的值为 200,并将其显示在屏幕上。3、 定义变量 AM 的值为 100,并使用 test 命令比较其值是否大于 150。4、 创建一个简单的 shell 程序,其功能为:1) 将主机名改为你的名字汉语拼音字母;2) 显示计算机主机名以及显示系统日期和时间。5、 使用 if-then-else 语句创建一个根据输入的分数判断分数是否及格的 shell 程序。6、 使用 for 语句创建求命令行上所有整数之和的 sh

2014-12-13 10:04:57 17394

原创 UVaLive/LA 6811 Irrigation Lines(二部图,最小点覆盖)

题目大意:矩形的农田,每行每列都有一个闸门,一些格子内中有庄稼,问最少开几个阀门,使得所有的庄稼都能得到灌溉。解题思路:明显的二部图最小点覆盖模型。基本属于二部图最大匹配的模板题。将行最为一个集合,列作为一个集合,庄稼(即行与列的交叉点)作为关系连边,问题转化为,同最少几个点(行或列),覆盖所有的边(庄稼),即最小点覆盖。用匈牙利算法即可。

2014-11-23 21:46:53 1132

原创 UVaLive/LA 6809 Spokes Wheel(搜索,二进制循环移位)

// Author: Yuan Zhu#include #include #include #include #define ll long longusing namespace std;int t;char a[40], b[40];int toint(char c) { if(c >= '0' && c <= '9') return c - '0'; e

2014-11-23 21:45:27 857

原创 UVaLive/LA 6807 Túnel de Rata(最大生成树)

题目大意:去除图中的所有回路,且去除的边权和最小。解题思路:因为要使去掉的边最小,剩下的图有不能又任何回路,可以想到生成树的模型,生成树上在加边,就会构成回路。所以尽可能使得生成树上的边权最大,那么去掉的边权和就最小。用Kruskal算法可以很方便地实现。

2014-11-23 21:28:51 1394

原创 UVaLive/LA 6806 Hari Merdeka(AC自动机,DP)

// Author: Yuan Zhu#include #include #include #include #define maxn 20010#define ll long longusing namespace std;int t;int N, M, B;int v[30], c[210];int next[maxn][26], fail[maxn];int L,

2014-11-23 21:26:28 1100

原创 UVaLive/LA 6805 Pantun Grader(模拟)

题目大意:按照给定的规则,给诗歌打分。有音节、押韵等规则。解题思路:仔细读题,主题细节。输入的逗号后不一定有空格。

2014-11-23 21:12:11 1083

原创 UVaLive/LA 6804 Group of Strangers(图论)

// Author: Yuan Zhu#include #include #include #include #include #include #include #define ll long longusing namespace std;int t, n, m;vector G[5010];pair p[20010];int vis[5010][5010];in

2014-11-23 21:08:13 1364

原创 UVaLive/LA 6802 Turtle Graphics(水题)

题目大意:类似贪吃蛇游戏。问经过给定路径(F-向前,L-左拐,R-右拐)后的终点坐标,和经过两次以上的点数。解题思路:模拟一下即可。

2014-11-23 21:01:46 1394

原创 UVaLive/LA 6801 Sequence(DP)

题目大意:给定n个开关(0/1)的初始状态,执行k次操作,每次可以任意选择一个,将其状态反转(0-1, 1-0)。问使得最终状态全是0的方法数%1000000007。解题思路:动态规划。用dp[i][j]表示第i次操作后,还有j个1的方案数。状态转移方程: dp[i][j+1] = dp[i-1][j] * (n-j) dp[i][j-1] = dp[i-1][j] * j

2014-11-23 20:53:40 894

原创 UVaLive/LA 6800 The Mountain of Gold?(BellmanFord判负环+记忆化搜索)

题目大意:给定一张有向图,问能否从0号点出发,回到0号点,经过的路径上边权之和小于0。若可能,输出“possible”,否则输出“not possible”。解题思路:Bellman Ford算法不但可以计算单源最短路径,还可以应用于判断:从源点出发,是否能够到达一个负环。应用于本题,因为只要从0出发,能够到达一个负环,并且还能走回的话,就能实现要求(负环外的边权不用考虑,在负环内多走几圈,肯定能使总边权小于0)。所以用Bellman Ford找出所有从0出发能到达的负环,再用记忆化搜索的方法,判断

2014-11-23 20:41:31 1258

原创 2014 Asia Kuala Lumpur Regional Contest(吉隆坡2014)解题报告汇总

总体而言,这套题目难度偏易。I和K较难,其他题目都比较基础,相对国内赛区简单很多。解题报告汇总:A The Mountain of Gold?(负环)B Sequence (DP)C Turtle Graphics (简单模拟,水题)D Circle and Marble(博弈,暂缺)E Group of Strangers(图论,逆向思维)F Pantun Grader(模拟)G Hari Merdeka(AC自动机,DP,详见wonderzy博客)H Túnel de Rata(最大

2014-11-23 20:17:37 1830

原创 UVa 10626 Buying Coke(DP)

题目大意:去买可乐,一瓶可乐8元。有1元、5元和10元三种货币,初始分别拥有数量给定。自动售货机会用最少的硬币数量找零。找零的钱可以继续使用。问最少向售货机中投入多少枚硬币,能买到C瓶可乐。解题思路:货币数量较少,状态不多。只有付10*1找1*2(投入1枚)、付5*1+1*3找0(投入4枚)、付10*1+1*3找5*1(投入4枚)、付1*8找0(投入8枚)这四种情况,可以想到其他的方法,投入的硬币数量肯定更多,所以不用考虑。动态规划。只需记录三种面值的数量所为状态即可。用dp[n1][n5][n1

2014-11-20 10:11:32 3423

原创 HDU 5033 Building(单调栈, 类凸包)

2. 如上图所示,中间的紫色楼,对于第四座楼右侧的位置,计算角度时也是无关的。右侧位置的左仰角都在红线和黄线之间。顶层模型:排序后,从左到右再从右到左,分两次得出每个查询点的左侧和右侧天空角度,相加即是答案。通过画图分析,可以得出以下两点:1. 如上图所示,在一座高楼左侧的矮楼,对于高楼右侧的任意位置,计算天空角度时都是无关的。所以,这题可以用类似求凸包的方法,利用单调栈进行维护。计算左侧天空角度时,左左向右扫描,始终维护当前站立位置左侧得上凸包,因为不在凸包上的点(将楼房抽象为顶部代表的点),对

2014-11-15 21:47:53 708

原创 HDU 5032 Always Cook Mushroom(极角排序, 树状数组)

题目大意:有1000*1000个点,点(x, y)的权值为(x+A)(y+B),对于每次询问,输入(a, b) 和 x,输出以(0, 0)、(x, 0)、(x, x/a*b) 构成的三角行(含边界)包围的点的权值和。解题思路:解题的关键在于抓住每个三角形都含有原点(0, 0)这一信息,又可以发现不同的三角行之间有很多重复部分,想办法减少重复计算。1. 我们可以预处理出1000*1000个点的逆时针极角序集合。2. 将所有的询问离线操作,按(a, b)逆时针排序,从斜率最小的开始。3. 对于询问

2014-11-14 22:46:57 871

原创 UVa 10688 The Poor Giant(区间DP)

题目大意:有n个苹果,和一个数k,第i个苹果的重量是k+i(1<=i<=n). 已知其中只有一个苹果是甜的,所有比它重量轻的都是苦的,比它重的都是酸的。为了要找出甜的苹果,就要去一个一个地吃它,且吃了咬了苹果就必须把它吃完,不管苹果是苦的还是酸的。(题目描述有误)例如,先吃#1, 如果#1是甜的,花费1如果#2是甜的,那么选择吃#3,不管#3是什么味道,都可以推测出#2和#4的味道,那么花费1+3如果#3是甜的,第二次选择吃#3, 共花费1+3 = 4如果#5是甜的,方案和上面一样, 共花费1

2014-11-13 11:49:43 864

原创 UVa 607 Scheduling Lectures(DP, 贪心)

题目大意:教授一门课程,每次讲座时长为L,共有n个知识点需要讲授,每个知识点需要花费 t[i] 的时间。要求一个知识点不能拆开到两次讲座中,且必须按顺序讲授。问怎样安排知识点,使得总的讲座数最少,同时让不满意度最低。不满意度有每次讲座提前结束的时间决定,服从题目中的DI函数。解题思路:对于总讲座数最少的问题,因为知识点必须按顺序讲授,很容易想到用贪心的方法,每次讲座尽可能填满,安排不下只能新开一次讲座。对于不满意度最低的问题,用DP解决, dp[i][j]表示用i次讲座容纳前j个知识点的最低不满意度

2014-11-13 11:48:27 741

原创 UVa 10593 Kites(DP)

题目大意:给定一张纸,纸上一些未知有洞,要求剪出一些风筝(正方形或菱形),问一共有多少种剪法。解题思路:动态规划。正方形和菱形分开考虑。用dp[i][j] 表示以(i, j)点为正方形的右下角点(菱形的最右边的点)时,图形的尺寸。如下图所示,按图2上的顺序遍历)状态转移方程: 正方形:dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1; ((i, j)、(i-1, j-1)、(i-1, j)、(i, j-1) 都为x)

2014-11-13 11:47:21 1022

原创 UVa 10559 Blocks(DP)

题目大意:方块消除游戏,给你一个n个方块的序列,相同颜色的一段同时消掉,得分为 len^2,问最高得分。解题思路:这题是比较经典的动态规划题。当前决策会对未来决策的花费产生影响,自己不太容易想到,根据黑书和论文(http://wenku.baidu.com/view/83d0a76925c52cc58bd6bea8.html),可以每次决策时,预先计算未来可能的花费,这样以后决策时可以直接转移使用。dp[l][r][k]表示将[l,r]区间连同之后的长度为k的一起消除的最大得分。两种决策如图所示:

2014-11-13 11:39:46 1579

原创 HDU 5090 Game with Pearls(贪心, 二部图最大匹配)

解题思路:方法一、统计后,从小到大分过去,剩下的放到i+k的位置,这样O(n)的可以得到答案。方法二、转化乘二部图模型,将 初始状态 和 可到达的球数 作为两个集合,符合倍数条件的连边,若最大匹配数=n,则Jerry赢。

2014-11-11 20:50:57 834

原创 HDU 5095 Linearization of the kernel functions in SVM(模拟, 水题)

现场最水的一题,1A,对代码功和细心程度还是有一定考验的。以下代码是赛后重写的,当时写的比较乱,没用函数,各种重复的if写了10段。。按平时写数学式子的常理输出。注意几个细节,全0、第一个为正、系数为1、常数项为1等。

2014-11-11 20:48:59 673

原创 HDU 5099 Comparison of Android versions(模拟-水题)

比较Android版本号,题意比较难搞清,If two builds are not in the same code branch, just compare the date code; if they are in the same code branch, compare the date code together with the individual version. 注意这句话。

2014-11-11 20:47:52 1054

原创 HDU 5092 Seam Carving(DP, 路径)

题目大意:给定一个N∗M的矩阵,每次可以向下面三个方向移动,现在要求走过的路径上的值最小,并且尽量靠右。输出值和路径。解题思路:dp[i][j]表示移动到第i层j的位置的最优解,r[i][j]则对应记录的是从上一层的哪一个位置到来。水题,只是坑题意。

2014-11-11 20:43:35 943

原创 HDU 5094 Maze(BFS、状态压缩)

注意钥匙拿到就一直拿到了,门只需开一次,同一个位置可能有多把钥匙!!

2014-11-11 20:40:58 681

原创 HDU 5093 Battle ships(二部图最大匹配)

题目大意: 在海上(*)放战舰,任意两个战舰不能出现在同一行或列,除非中间有冰山(#)相隔。问最多放多少战舰。解题思路: 比赛时没有想到用二部图来解。后来发现是白书二部图的经典题型。 现将行和列,以冰山(#)为分隔,分割成多段。对于每一个可能放置的位置(*),将其所在的行和列的分段相连。表达的意思就是,这个点如果放置,那么相邻的同一区段(*、o)都不能再用,就是一个二部图的思想。

2014-11-11 20:39:00 1012 1

原创 HDU 5073 Galaxy(Anshan 2014)(数学推导,贪心)

题目大意:数轴上有n个点,每个点重量1 ,可以移动其中k个点到任何位置, 使得题中式子的值最小 解题思路:选择保留区间长度为N - K的连续的数, 然后其余的K个数都移动到这N-K个数的中心。那个式子其实表示的是方差,选择的点越密集,方差越小,所以选择连续的N-K个。其余的如果放到其他地方,肯定没有放到N-K的质心更优。但这样每次枚举长度为N-K的区间,再计算相应的方差,复杂度为O(NK),会超时。所以通过数学推导变形,避免重复计算。具体如下:第i个到第i+n-k-1个的方差 = (Xi - X

2014-10-23 00:38:08 1158

原创 ZOJ 3826 Hierarchical Notation(Mudanjiang 2014)(JSON解析模拟)

Hierarchical NotationSource: The 2014 ACM-ICPC Asia Mudanjiang Regional Contest题意:JSON解析,对于查询的key值,输出相应的value值。思路:注意细节。

2014-10-15 16:39:39 934

原创 UVa 11795 Mega Man's Mission(动态规划-状态压缩DP)

题目大意:T组测试数据, 每组测试数据1个n,表示要杀n个人,接下来1行表示一开始,拥有杀哪些人的武器,例如“110”表示有杀第1,2个人的武器,接下来n行,分别表示杀完第i(1<=i<=n)个人可以得到的武器。解题思路:状态压缩DP,转移方程就是 dp[x] = sum(dp[y]),其中y满足两个条件,(1)y是x的子状态,也就是y再杀一个人k就到x。(2)y拥有杀k的武器。

2014-08-03 18:20:25 827

空空如也

空空如也

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

TA关注的人

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