ACM
文章平均质量分 61
泳裤王子
这个作者很懒,什么都没留下…
展开
-
UVA 10131 - Is Bigger Smarter
<br />题目大意: 给出一些大象,包含它的重量、智商。要你找出最长的序列,满足重量越大、智商越低。(严格增减)<br />题目类型:dp / LIS<br />题目分析:<br />把大象按重量升序排序,然后在此序列中对智商属性找最长单减子序列。要注意的是,题目要求的都是严格增减,所以要在判断条件里考虑相等的情况以排除(主要是重量)。<br />另外还要注意,排序后,序就不是原来的序了,而题目要求输出原序。所以在排序时维护一个r[]数组。<br />对于 最长单减子序列 的dp,状态转移方程(2种):<原创 2011-05-13 16:42:00 · 885 阅读 · 0 评论 -
树形dp 加分二叉树 / 11.05.15
<br /> <br />题目:<br /> <br /> <br /> 加分二叉树<br />【问题描述】<br /> 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第 i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:<br /> subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数<原创 2011-05-15 15:31:00 · 622 阅读 · 0 评论 -
UVA 10066 - The Twin Towers
<br />题目大意:讲了一大堆,就是要求 最长公共子序列。<br />题目类型:dp / LCS<br />题目分析:<br />是我没睡醒吗?为什么明明写的是//Print a blank line after the output of each data set. 而不是每组数据间一个blankline。竟然调了许久。<br /> 代码:<br />① 记忆化搜索版本。<br />//那么大段题目,其实讲的就是最长公共子序列。fuck。#include<cstdio>#include<cst原创 2011-05-13 16:56:00 · 558 阅读 · 0 评论 -
UVA 10405 - Longest Common Subsequence
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=1346题目大意: 就是输入两个字符序列,输出两个序列的最长公共子序列(注意序列跟串的区别)。题目类型: 经典dp /LCS分析: 就是 最长公共子序列(LCS)的问题。d[i][j]表示a[i]之前、b[j原创 2011-03-28 22:52:00 · 1752 阅读 · 0 评论 -
Uva 111 – History Grading
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=47题目大意:判断两个排列的最多相同的相对位置(顺序)。题目类型:简单dp,最长公共子序列,最长单增子序列。(注意串和序列的区别)分析:解法一:把序列sort,然后就变成求它与原序列的最长公共子串问题了。 解法二:按最长单增子序列做,最后变成求d的最大值。代码:原创 2011-03-27 22:55:00 · 1163 阅读 · 0 评论 -
UvaOj 题目难度分析表
<br /># ID Title Solved by Difficulty<br />1 100 The 3n + 1 problem 26485 1<br />2 102 Ecological Bin Packing 10608 2<br />3 10071 Back to High School Physics 9554 3<br />4 10055 Hashmat the Brave Warrior 9432 3<br />5 272 TEX Quotes 8192 3<br />6 458 The转载 2011-03-28 16:44:00 · 25002 阅读 · 0 评论 -
UVA 103 - Stacking Boxes
题目大意: 输入k个n维的东西(当n=2的时候看成框,n=3时看成方体,之后是超立方..),求 最大 的长度 使每个框可以在后一个中装下。输出最大值,和 顺序 (框从小到大,顺序指输入的顺序,从1开始到k)。题目类型: dp。 DAG上的。分析:原创 2011-03-28 17:20:00 · 1123 阅读 · 0 评论 -
UVA 147 - Dollars
<br />题目大意:就是有几种面额的硬币,输入钱S,求有多少种不同的找钱方法。S是其中最小面额的倍数。<br />题目类型: dp / DAG上的路径计数问题<br />题目分析:<br />其实这题跟 UVA 674 - Coin Change 基本一样。<br />只是输入的S是实数,而且输出的方法数会超过int32(这里WA了一次) ,所以要 long long。<br />输入的S由于是其中最小面额的倍数,所以转成int,这里要注意四舍五入(又WA了一次)。<br />最后,还有输出int64原创 2011-05-16 20:56:00 · 1004 阅读 · 0 评论 -
Floyd
<br />用于求每两点间最短路。<br /> <br />算法很简单。<br />百度百科<br /> <br />代码:<br /> 本来期待用-1代替INF,做dist的初始标记量,以方便用memset来减少初始化的二重循环。但是发现,原来的经典算法之所以用INF来做初始,就是减少对特殊值的判断,让dist直接相加,就算是特殊的INF也不影响结果(记得数构里教的“哨兵”吗?)。但是,两INF相加可能造成整数溢出。所以在方法二中把dist初始化为INF/2。(也有介绍说把INF设得比题目数据原创 2011-05-17 16:23:00 · 569 阅读 · 0 评论 -
UVA 674 - Coin Change
题目大意:用5种面额的硬币找钱(钱恰好),求方法数。要注意 1.Note that we count that there is one way of making change for zero cent. 2. Your program should be able to handle up to 7489 cents.题目类型: dp分析:原创 2011-03-29 18:03:00 · 1644 阅读 · 0 评论 -
UVA 10003 - Cutting Sticks
<br />题目大意:<br /> 给出一根长为l的木棒,要切指定的n刀(在木棒上的绝对位置)。而每一刀的<br />消费是被切的木棒长度,求最小总消费。<br /> 另外,注意输出格式: e.g. The minimum cutting is 200.<br /> <br />题目类型: dp。<br /><br />分析:<br /> ①开始还在想是不是可以贪心之类的(虽然知道做的是dp篇=。=),于是就想<br />决策,考虑是不是每次要切较中间的部分,但第二个sample就不符合。还是老实想dp原创 2011-03-30 13:04:00 · 887 阅读 · 0 评论 -
UVA 116 - Unidirectional TSP
题目大意:输入一个m*n的矩阵,按每步走右上、右下、正右(三种选择)的方法,完成从第一列(任何行)走到最后一列。每步的消费是输入的矩阵元素值。注意,规定最后一行跟头一行是相邻的(即可以相互走到)。要求输出 字典序最小(若有多种)的路径,路径用每步所在行表示。行列都从1开始计算。输入 1输出结果不超出int32。注意:①A path starts anywhere in column 1. ② lexicographically smallest should be output.原创 2011-03-30 13:37:00 · 1758 阅读 · 2 评论 -
大神Send to judge. 我们全部in queue!/UVA In judge queue
下午在UVA上做题的时候突然返回个in jugde queue,奇怪!点到Last 50 Submissions那里看了下。。。擦,一串的都这状态。最令人鸡冻的是,啊啊啊啊我看见一个id:Rujia Liu 。直见他交了一个东西后,后面的突然就都in queue,神马情况???[挖鼻屎]。附图(有时差,应该是4点30左右的时候):我表示一个小时了还堵着,。。。。。。。。。蛋疼。原创 2011-03-30 17:25:00 · 6041 阅读 · 1 评论 -
The 11th Zhejiang University Programming Contest - J/ Judge Internal Error
<br />返回目录<br /> <br />题目大意:输入一串数,输出出现次数最多的那个数,若有多个数符合则输出最大的那个 。<br /> <br />题目类型: 基础模拟题<br /> <br />题目分析: 把一组数升序排序,然后从头到尾扫描更新出现最多次数的数。<br /> <br />代码:<br /> <br />#include<cstdio>#include<cstring>#include <algorithm> //sortusing namespace std;#def原创 2011-04-03 18:54:00 · 930 阅读 · 0 评论 -
The 11th Zhejiang University Programming Contest - G/ Gaussian Prime
<br />返回目录<br /> <br />题目大意:在复平面上指定一个范围,求这个范围里的高斯素数的密度(即 高斯素数个数/总坐标数, 化为真分数) 。<br /> <br />题目类型:基础模拟题 / 数学背景题<br /> <br />题目分析:<br /> <br />A Gaussian integer a + bi is a Gaussian prime if and only if either: <br />①One of a, b is zero and the other is a p原创 2011-04-03 19:20:00 · 1003 阅读 · 0 评论 -
XTU (湘潭大学) 2011 新生练习赛(第一场)/ Problem A 连续自然数和
<br />返回目录<br /> <br />题目大意:给定整数M(10 <= M <= 2,000,000),要求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M。<br />(e.g. 1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。)<br />输出 数段的 端点 即可。若有多个解,按升序输出。<br /> <br />题目类型:基础模拟题<br /> <br />题目分析:纯暴力肯定超时的,注意到 上面例子原创 2011-04-04 17:37:00 · 1283 阅读 · 0 评论 -
XTU (湘潭大学) 2011 新生练习赛(第一场)/ Problem C SBB的烦恼
<br />返回目录<br /> <br />题目大意:求x^2-x+y^2-y-2*x*y=0在1 <= x <= a且1 <= y <= b的范围内有多少个整数解。 (1 <= a,b <= 10^ 6)。<br /> <br />题目类型:数学方程解 / 解析几何<br /> <br />题目分析:<br /> <br />将原方程化为 (x’-y’)^2-(x’+y’) = 0,记x’,y’为原的x,y。 令x =x’-y’, y=x’+y’. (x+y = 2x', y-x = 2y').<br原创 2011-04-04 17:51:00 · 1015 阅读 · 1 评论 -
正权图单源最短路(SSSP)- Dijkstra算法
引言:DAG上的最短路可以用dp解得,容易得到状态转移方程。但如果图中可以有环,就要使用其他算法了。这里先考虑边权均为正的最短路问题。Contents:一、 普通的dijkatra实现 O(n2)二、采用邻接表三、 基于优先队列的Dijkstra O(mlogn) 给出样例问题(图片引自Tanky Woo):对下图中的有向图,用Dijkstra算法计算从任意源顶点到其它顶点间最短路径。输入: 671 2 101 4 301 5 1002 3 503 5 104 3 204 5 6012345输出:No.1原创 2011-04-05 22:00:00 · 4472 阅读 · 1 评论 -
The 11th Zhejiang University Programming Contest / 解题报告 4.3
Description: The 11th Zhejiang University Programming ContestStart Time: 2011-04-03 13:30:00 (GMT+8) Length: 4 Hours比赛链接原创 2011-04-03 18:16:00 · 1083 阅读 · 0 评论 -
XTU (湘潭大学) 2011 新生练习赛(第一场)/ Problem B N! Last non zero
<br />返回目录<br /> <br />题目大意:求N!的最后一个不为0的数字,例如5!=120,那么最后一个不为0的数字是2。(1<=N<=1000)<br /> <br />题目类型:简单数学 / 精度<br /> <br />题目分析:<br /> <br />这题开始的时候WA了,因为我以为只要保留每个阶层的最后一位非零数即可,即di为i!的最后非零数,则di = ([d[i-1]*i] )%10.<br />其中[]表示去掉末尾0。<br />这显然是错的,在d[i-1]*i 末尾会乘出0的原创 2011-04-04 18:26:00 · 1368 阅读 · 1 评论 -
Sichuan University Programming Contest 2011 Preliminary(for Non-SCUers) / 解题报告 4.4
Sichuan University Programming Contest 2011 Preliminary(for Non-SCUers)Date 2011-04-04 12:00 Length 5h解题报告链接如下(先开个坑):ID Problem A Course B The Weight of Tree C A Coin Problem D Sawthooth II E Cheapest Cost F Bathroom G Game H Tunnel I Tim J Dynamic Quer原创 2011-04-04 18:35:00 · 943 阅读 · 0 评论 -
关于最长递增子序列问题的求解(LIS)
本文会介绍几种复杂度不同的算法,并给出实现。问题描述:设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=,其中k1很明显注意到子序列跟子串是有区别的。 一、转化为最长公共子序列(LCS)求解 , O(n2)设序列X=是对序列L=按递增排好序的序列。那么显然X与L的最长公共子序列即为L的最长递增子序列。这样就把求最长递增子序列的问题转化为求最长公共子序列问题LCS了。最长公共子序列问题用动态规划的算法可解。可以参考这道题的分析。二、普通dp, O(n2)(一)、记忆化搜索解dp①从后向前规划原创 2011-04-05 02:42:00 · 841 阅读 · 0 评论 -
最长增减子序列(LIS变体)
<br /> <br /> <br />代码:<br /> <br />#include<cstdio>#include<cstring>using namespace std;#define MAXN 10000int a[MAXN];int d[MAXN];int vis[MAXN];int n;int ans;int dp(int cur, int x) //带入x为了判断当前是增还是减{ if(vis[cur]) return d[cur]; in原创 2011-04-05 02:44:00 · 851 阅读 · 0 评论 -
拓扑排序 toposort
大意: 对于DAG(有向无环图),把图中所有结点排序,使得每一条有向边(u, v)对应的u都排在v的前面。直观地说,就是用一条线把有向图中所有点连起来(当然是遵循有向边的)。注:①有环图是不存在拓扑排序的。(因此可以用来判断图是否有环)。 ②一个DAG可能有多个拓扑序列。实现: 主要有两种实现方法:① bfs版:(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它. (2)从网中删去该顶点,并且删去从该顶点发出的全部有向边. (3)重复上述两步,直到剩余的网中不再原创 2011-04-06 15:44:00 · 971 阅读 · 0 评论 -
最大子段和
<br />问题描述:给定数列 a1 a2 ....an<br />要求求ai+...+aj 使其和最大<br /> <br />晚上做一道题想到这个问题,记得刘汝佳的书上是拿这个来讲分治的,印象太深,发现dp其实可以O(n),<br />还比分治简单,擦。还到网上去查了一下,继续各种误导。纠结了一下。<br /> <br />普通算法是O(n^2)<br />分治算法是O(nlogn)<br />dp达到O(n)原创 2011-04-06 22:21:00 · 461 阅读 · 0 评论 -
单源最短路径算法 Bellman-Ford && SPFA 及 最短路算法统一归纳
为避免各种求最短路的方法混淆,开始之前先做个归纳。① BFS - 无权图 (有向或无向,有环或无环)- 对于树的bfs,无需判重,因为根本不会重复。对于图的bfs,要有vis[]进行判重,不然一个点可能被多次拓展,极大地浪费时间空间。② dp - 有向无环图(DAG,带权或不带权)- 很多问题可以转换成DAG上的最短路(当然还有最长路)问题,这个时候,一个点就是一个状态,根据状态转移方程计算,属于最优化问题。对于这里非隐式的图(存在显式结点的),是可以用下面其他最短路算法的。③ Dijkstra - 正权图原创 2011-04-06 18:16:00 · 2641 阅读 · 3 评论 -
差分约束系统 - 最短路
<br /> 如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi<=bk(i,j∈[1,n],k∈[1,m]),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。<br />求解差分约束系统,可以转化成图论的单源最短路径问题。<br /> 观察xj-xi<=bk,会发现它类似最短路中的三角不等式d[v]<=d[u]+w[u,v],即d[v]-d[u]<=w[u,v]。因此,以每个变量x原创 2011-04-06 20:14:00 · 557 阅读 · 0 评论 -
Sichuan University Programming Contest 2011 Preliminary(for Non-SCUers) / A Course
返回目录题目大意: 输入一些课程和对应的成绩,假设是按时间发展顺序。求重修成功(即同一课程,后一次比前面的最大成绩大的情况)次数。题目类型: 模拟题目分析: 虽然是水题,但是不注意细节还是很容易WA。注意点吧。另外,既然是水题,做的时候就不要轻易放弃它,相信可能错的地方就那么几点,静下心来,逐一排查 。代码 :#include#includeusing namespace std;#define MAXN 102#define MAXM 32struct course{ in原创 2011-04-08 23:23:00 · 902 阅读 · 0 评论 -
关于宏 & 内联函数 - 11.4.8
<br />未完<br /> <br />最近看到有人这样用 inline int Rint(){ int x; scanf("%d", &x); return x;} //int Tcase = Rint(); 来读取一个整数<br />显然是为了代码能敲得更快,但是这个跟宏有什么区别和共通之处呢。我找了一些资料。<br /> <br />①inline函数(摘自C++ Primer的第三版)<br /> <br /><br />内联能提高函数的执行效率,为什么不把所有的函数都定义成内联函数?<br原创 2011-04-08 23:55:00 · 432 阅读 · 0 评论 -
Sichuan University Programming Contest 2011 Preliminary(for Non-SCUers) / M A Simple Problem
题目大意: 背景是acm比赛的成绩排名规则,要求输出成绩最好的那个队。题目类型: 排序题题目分析: 利用 #include 的sort排序,自定义cmp函数。代码:#include#include#include using namespace std;struct team{ char name[20]; int num; int p;};team a[102];int cmp( const team &a, const team &b ) {原创 2011-04-09 00:03:00 · 1060 阅读 · 0 评论 -
UVA 10034 - Freckles
Q10034: Freckles給你一些點的座標,把這些點用墨水畫直線連起來,使得所有的點最後都連在一起。你的任務是寫一個程式找出墨水畫出的長度最小是多少?Input輸入的第一列有一個整數,代表以下有幾組測試資料。每組測試資料的第1列有一個整數n(0輸入的第一列與第一組測試資料間空一列,各測試資料間亦空一列。請參考Sample InputOutput對每一組測試資料輸出墨水畫出的長度最小是多少。測試資料間亦請空一列。Sample Input231.0 1.02.0 2.02.0 4.021.0 1.02.0原创 2011-04-09 23:47:00 · 941 阅读 · 0 评论 -
UVA 10048 - Audiophobia
<br />题目大意:给出一个图,求某点到某点所必须忍受的最小噪音(即所经过路径的相邻两点的权的最大值最小)。<br />中文翻译<br />题目链接<br />题目类型:图论 / Floyd<br /> <br />题目分析:<br />①虽然做的是图论专题,但是开始还是觉得可以dp(后来证明我之前没有充分理解所谓“松弛技术”)。结果是写了一个可以过样例但是wa的dp。于是后来分析,关键点是两个相邻指标值,它们是相互依赖的,具体的说,假设有1点和2点它们相邻,则算d1的值时要根据d2的值算一次,但是d2的原创 2011-04-10 02:22:00 · 762 阅读 · 0 评论 -
【转】三分法——求解凸性函数的极值问题
不懂三分,发现个很不错的,讲三分的,转一下。http://hi.baidu.com/acmdearway/blog/item/8cb3370240ba3d9cd53f7c00.html三分法——求解凸性函数的极值问题——czyuan原创 二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以“大显身手”~~ 如图,类似二分的定义Left和Right,mid = (Left + Right) / 2,midmid = (m转载 2011-04-09 20:50:00 · 513 阅读 · 0 评论 -
USTC Monthly Contest 2011-04-10 / 解题报告
<br />比赛链接<br />解题报告链接(开坑不解释):<br />A Square Root 11.1% 4/36<br /> B Shortest Subsequence 25.5% 25/98<br /> C Draw a Circle to Curse You! 0.0% 0/0<br /> D Packing chocolate 0.0% 0/0<br /> E Weight loss plan 0.0% 0/0<br /> F Crazy Biscuits 25.0% 24/96<br />原创 2011-04-10 14:18:00 · 414 阅读 · 0 评论 -
XDUOJ Problem 1082 - Let's SPFA II
<br /><br />Problem 1082 - Let's SPFA II <br />Time Limit: 1000MS Memory Limit: 65536KB Difficulty: <br />Total Submit: 185 Accepted: 17 Special Judge: No <br />Description<br /><br /> 邮递员去送信,他初始在街道口S,要给A,B两个街道口送信,你的任务很简单,计算从S出发按任何顺序访问A,B, <br /><br原创 2011-04-10 17:39:00 · 647 阅读 · 0 评论 -
集合划分 DP
<br />题目:<br />e.g. TOJ 2820/XDUOJ Problem 1079 - 贝尔<br />分析:<br />先明确,设d[i][j]为i个数分成j个集合的情况数。d[i][j] = d[i-1][j-1] + j* d[i-1][j].<br />①d[i-1][j-1],也就是i-1个数分为j-1个集合的时候,只要再加一个元素独自成为一个集合,就成了i个数分为j个集合的情况。<br />②j* d[i-1][j] ,i-1个数分为j个集合的时候,j个集合中任选一个集合,新加入一原创 2011-04-10 21:35:00 · 658 阅读 · 0 评论 -
c++读写文件操作
<br />最近计划刷usaco,转个c++文件操作的入门帖。<br /> <br />http://hi.baidu.com/ctralt/blog/item/cde79fec87f841302697911c.html<br />原创 2011-04-12 17:03:00 · 397 阅读 · 0 评论 -
二分图最大匹配 - 匈牙利算法
<br />问题描述:<br /> X集合(编号1~m),Y集合(编号m+1~n)。n,m<100. 给出若干组合(x, y)(相当于映射x->y),问最都能同时有几个组合(分配)。<br /> <br />分析:<br />题目可能简化描述得不太好,这显然是一个二分图最大匹配的问题。(二分图)<br />可以用匈牙利算法,或者网络流来求解。这里介绍匈牙利算法。<br />匈牙利算法的核心就是找增广路。不断找增广路,然后更新现有匹配M(M可以看成是X->Y的一个特殊的映射关系),每次更新,都能使匹配数增加一原创 2011-04-17 00:40:00 · 780 阅读 · 0 评论 -
The 8th Zhejiang Provincial Collegiate Programming Contest / M - Median
<br />返回目录<br /> <br />代码:<br />#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;inline int Rint() {int x; scanf("%d", &x); return x;}inline double Rd() {double x; scanf("%lf", &x); return x;}int n;#def原创 2011-04-16 18:19:00 · 749 阅读 · 0 评论 -
The 8th Zhejiang Provincial Collegiate Programming Contest / 解题报告 11.4.16
The 8th Zhejiang Provincial Collegiate Programming Contest 解题报告比赛链接解题报告链接:A Ordinal Numbers 51.24% (413/806)B Conic Section 29.45% (291/988) C Old Labels 5.26% (6/114)D String Successor 15.50% (198/1277) E Wall-nut Bowling 0.00% (0/13)F Kagome Kagome 55.原创 2011-04-16 18:10:00 · 1038 阅读 · 0 评论