
UVA
文章平均质量分 59
WildKid1024
骐骥一跃,不能十步。驽马十驾,功在不舍!
展开
-
uva 10954——Add All
题意:给定一个序列,然后从中选择两个数,相加后放入原来的原创 2015-11-05 19:08:12 · 352 阅读 · 0 评论 -
uva 1152 ——4 Values whose Sum is 0
题意:给定4个n元素集合,要求从每个集合中选择一个数,使得A+B+c+d==0,问存在多少种方法。 思路:枚举+hash判断。直接枚举4次方的算法会超,那么只需要枚举ab,然后在c+d的和中查找等于-(a+b)的值(用mp或hash,n2logn的算法)。 Code: #include using namespace std;const int N=4005;int原创 2015-11-06 08:45:31 · 330 阅读 · 0 评论 -
uva 1605 ——Building for UN
题意:给定n,让设计一个大楼,使得n个国家任意两个国家都相邻或上下层。 思路:由于题目中的限定很小,可以这样考虑,只设计两层,每层的第i行为同一个国家,第二层的所有第j列为同一个国家,这样就满足了条件。 Code: #include #include #include #include #include #include #include #include原创 2015-11-06 08:51:06 · 527 阅读 · 0 评论 -
uva 120——Stacks of Flapjacks
题意:一个非常有趣的问题,就是给一摞煎饼,然后从下面拿起来一张,然后把该张上面的所有馅饼反转,求最后使得馅饼从小到大的最小的步数。 思路:贪心。每次都把没排好序的最大数反转到最上面,然后在一次反转到最下面,也就是最多需要2n步就能够把所有的馅饼排好。 Code: #include #include #include #include #include #inclu原创 2015-11-06 08:53:53 · 456 阅读 · 0 评论 -
uva 11572 ——Unique Snowflakes
题意:给定一个序列,然后在这个序列找到一个连续的串,使得串中没有重复的元素。思路:单调队列。每次都把该在序列没出现的数加入到序列中,然后向后扫描找到最大的ans。code://#incllude //#include#include #include using namespace std;const int N=1000005;int v[N];in原创 2015-11-06 08:59:40 · 383 阅读 · 0 评论 -
uva 11054——Wine trading in Gergovia
题意:有n个村庄,每个村庄要么买酒(+),要么卖酒(-),要求供需平衡,求最小代价(代价k为把k个单位的酒运到相邻的村庄)。思路:贪心。可以把第1个村庄的所有酒都从第2个村庄运来,那么12可以合二为一,其他村庄需要运a+b的酒到12村庄,依次类推。code:#include #include #include #include #include #includ原创 2015-11-06 09:06:43 · 313 阅读 · 0 评论 -
uva 1613——K-Graph Oddity
题意:输入n个点m条边的联通图,n为奇数,设k为最小的奇数,使得每个点的度数不超过k,要求把节点都涂上颜色,使得相邻节点颜色不一样。思路:dfs。k的值为奇数,所以k为节点最大度数(+1)。从当前节点往下找,如果下边的节点没有染色,就把当前节点染色继续下找。code:#include #include #include #include #include #i原创 2015-11-07 21:50:28 · 914 阅读 · 0 评论 -
uva 1312——Cricket Field
题意:在w*h的方格内,找出一个最大的正方形,使得正方形内没有点(可以在边界有点)。思路:枚举。正方形可以看作是矩形,只不过在取的时候取最短的那条边作为边长,那么枚举出短边最大的矩形即可。code:#include #include #include #include #include #include #include #include #includ原创 2015-11-07 21:02:29 · 506 阅读 · 0 评论 -
uva 1615——Highway
题意: 给定平面上n个点,和一个值D,要求在x轴上选出尽量少的点,使得对给定的点,都有一个点离他的欧几里德距离步超过D思路:区间覆盖问题。以平面上的点为圆心,以D为半径,求出来一个与x周相交的左右区间,那么只要多个圆都相交的那个区间ans就不用++;code:#include #include #include #include #include #include #inc原创 2015-11-07 21:47:14 · 399 阅读 · 0 评论 -
uva 1617——Laptop
题意:有n个长度为1的线段,确定它们的起点,使得第i个线段在【ri,di】之间,输出空隙数目的最小值。思路:贪心。首先对区间进行排序,然后扫描一遍,当上一个线段最右边加1《=当前最左的点的时,那么ans++;cdode:#include #include #include #include #include #include #include #inclu原创 2015-11-07 21:12:40 · 565 阅读 · 0 评论 -
uva 12627——Erratic Expansion
题意:一开始有1个红气球,每小时一个红气球都会变成3个红气球和1个蓝气球,1个蓝气球会变成4个蓝气球,问k个小时后a行到b行的红气球的数量。思路:递推。a为偶数时,计算a+1到b以及a本行的红气球数。b为奇数时,计算a到b-1以及b本行的红气球数。剩下情况的都是从上一次的气球数*3得到的。code:#include using namespace std;typ原创 2015-11-07 22:04:45 · 505 阅读 · 0 评论 -
uva 11134——Fabled Rooks
题意:给定一个n*n的期棋盘放n个车,要求任意车之间不能相互攻击,并且每个车都在相应的方框内。思路:贪心。因为没有对角线的条件约束,所以放的行号和列号没有影响。那么单独求出来行号和列号即可。对于每一行,如果能往上放,贪心得到行号,同样的方法在得到列号。code:#include #include using namespace std;c原创 2015-11-07 22:09:07 · 597 阅读 · 0 评论 -
uva 1451——Average
题意:给定一个长度为n 的01串,然后选一个长度至少为L的子串,使得子串的平均值最大。思路:单调队列。如果把所有的前缀和都求出来,那么所求即为max((s[j] - s[i]) / (j - i)) ,转化成图也就是求斜率最大的那个点,s[i]是不递减的,那么最优解是下凸的。单调队列维护最优解,当是上凸的就弹出。code:#include using namesp原创 2015-11-07 22:07:09 · 1322 阅读 · 0 评论 -
uva 714——Copying Books
题意:把一个m个整数的序列划分成k个连续非空的子序列,使得子序列和的最大值最小。思路:二分。遇到最大值最小大多都二分了,让划分的子序列都不超过x,根据x来judge最终结果k个是多还是少,然后二分来调整x直到出现k个序列。code:#include using namespace std;typedef long long ll;#define int lo原创 2015-11-07 22:06:08 · 305 阅读 · 0 评论 -
uva 11093——Just Finish it up
题意:环形跑道上有n个加油站,每个站可以加pi单位的油,从当前站开到下一站需要qi的油,问是否能够环游一圈。思路:枚举。首先如果总需求量>总供给量,那么不可能。否则就枚举起点,如果油箱里的油不足以跑到下一站,就把下一站作为起点。code://#inclide #include using namespace std;const int N=100005;i原创 2015-11-07 22:03:25 · 650 阅读 · 0 评论 -
uva 1354——Mobile Computing
There is a mysterious planet called Yaen, whose space is 2-dimensional. There are many beautiful stones on the planet, and the Yaen people love to collect them. They bring the stones back home and mak原创 2015-10-24 19:50:52 · 616 阅读 · 0 评论 -
uva 1610——Party Games
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51171题意:给你n个串的集合D,然后求一个长度最短的串s,使得使得s大于等于D中一半的串,又同时小于另一半串。思路:直接暴力。先对n个串排序,然后选择第n/2-1个串,从第一个字母开始找,在后面添加26个字母枚举,直至找到目标串。原创 2015-10-26 16:46:10 · 509 阅读 · 0 评论 -
uva 1614——UVA 1614 - Hell on the Markets
DescriptionMost financial institutions had become insolvent during financial crisis and went bankrupt or were bought by larger institutions, usually by banks. By the end of financial crisis of all原创 2015-10-29 17:21:59 · 581 阅读 · 0 评论 -
uva 11925——Generating Permutations
题意:给定一个1-n的排列,用不超过2*n2的操作把他变成升序。每次操作只有两种,一种是交换前两个元素,另外一种是把最后一个元素放到最后一位。思路:贪心。用双端队列来保存数据,每次当v[0]>v[1]&&v[0]!=n时用交换前两个的策略把当前排好,否则就放后面等待被排。code:#include #include #include #include #includ原创 2015-11-01 13:59:30 · 534 阅读 · 0 评论 -
uva 11536——Smallest Sub-Array
题意:给定n个数,这n个数在m的范围之内。v[i]=(v[i-1]+v[i-2]+v[i-3])%m+1; 然后求一个最短连续子序列使得序列内包括1-k个数。思路:枚举。枚举以v[i]结尾的最短序列。用ct维护已经找到的k个数中的个数,queue跳转区间。code:#include #include #include #include #include #原创 2015-11-01 21:59:51 · 481 阅读 · 0 评论 -
uva 1612——Guess
题意:有n个选手参加比赛,比赛有3个题目,每个选手每个题目都有一个评测之前的于得分,当通过题目时才可以得到相应分数,否则为0,然后按照得分排名,id小的排在前面,现在给定选手的于得分和排名,求最后一名的最大得分。思路:贪心,要想使最后一名的成绩最大,那么只要保证前面的成绩最大即可。可以把小数化成整数。code:#include #include #include #i原创 2015-11-01 12:59:43 · 319 阅读 · 0 评论 -
uva 12545——Bits Equalizer
题意:给定两个等长的串s和t,其中s串包括0,1,?,T包含0,1,每次可以把s中的0变成1或者交换任意两个数或者?变成任意01.求由s到t的最小步数。思路:杂。所有带?的都要变成0或则1,那么至少要s步,然后加上需要交换的最多的01即可。如果s中的0的个数(加上?变的)code:#include #include #include #include #in原创 2015-11-01 14:42:38 · 443 阅读 · 0 评论 -
uva 1623——Enter The Dragon
题意:有n个装满水的湖,可以预知将来m天下雨情况,每次下满一个湖,或者不下,不下雨的时候可以让某个湖变干,问是否存在一种方案使得每次下雨之前湖总是干的。思路:贪心。什么时候下雨,就什么时候在下雨之前把湖变干。实际上就是找该湖上一次满后的第一个不下雨的日子来把它变干。code:#include #include #include #include #include原创 2015-11-01 21:18:23 · 735 阅读 · 0 评论 -
uva 1153—— Keep the Customer Satisfied
题意:有n个工作,已知每个工作的开始时间和结束时间,问最多能完成多少工作。思路:贪心。要想使得最后的结果最佳,那么开始的晚的,要在最后来做。在此基础上,需要保证先做开始的早的(需要用优先队列来维护)。code:#include #include #include #include #include #include #include #include #原创 2015-11-01 12:13:19 · 361 阅读 · 0 评论 -
uva 1611——Crane
题意:给定一个1-n的排序,每次可以选定一个偶数长的序列,然后交换前一部分和后一部分,使得最后的成为1-n的序列。求最后的次数和每次的策略。思路:贪心。每次贪心的策略都是把i放到第i位置上,交换的时候找到最小的交换序列是前半部分还是后半部分。code:#include #include #include #include #include #include #i原创 2015-11-01 13:42:15 · 637 阅读 · 0 评论 -
uva 10570——Meeting with Aliens
题意:输入1-n的排列,每次可以交换两个整数。用最少的次数把排列变成1-n的环状序列。思路:枚举+贪心。依次枚举环上所有的点,正序一遍,倒序一遍,然后贪心求的所需的最小步数(贪心策略是1与1号交换,2与2号交换……)。code:#include #include #include #include #include #include #include #i原创 2015-11-01 12:06:35 · 369 阅读 · 0 评论 -
uva 11491——Erasing and Winning
题意:给定一个n位的整数,要求从中去掉k位,使得剩下的数字最大。思路:单调队列。在满足删除的数等于k 的前提下求一个不敌减的序列。code:#include #include #include #include #include #include #include #include #include #include #include #inclu原创 2015-11-01 14:13:54 · 441 阅读 · 0 评论 -
uva 1630——Folding
题意:给出一个由大写字母组成的长度为n的串,然后尽量折叠成一个尽量短的串,折叠可以嵌套。思路:区间dp,dp(i,j)表示区间(i,j)的最短的串的长度,as(i,j)表示i到j的答案,有两个状态要处理:1.该串本身是重复串,缩段到最短。2.该串不是重复,然后枚举他的分割点把两段最短找出来,然后合并。code:#include using namespace std;ty原创 2015-12-13 20:46:08 · 749 阅读 · 0 评论 -
uva 1433——Garlands
题意:给定:原创 2015-12-13 21:46:08 · 354 阅读 · 0 评论 -
uva 242——Stamps and Envelope Size
题意:给定最大贴邮票上限和若干个邮票组合,求最大的连续邮资的一个组合,如果有多个,按字典序输出最大的一个。思路:对每一组邮票,求出当邮资为i时需要邮票数的最小值d[i],边界为d[0]=0、d[i]>s时break。属于01背包问题。code:#include using namespace std;#define cls(a,c) memset(a,c,size原创 2015-12-13 18:51:38 · 805 阅读 · 0 评论 -
uva 1631——Locker
题意:有一个n位的密码锁,每位都是0——9可以循环旋转,每次可以往上或者往下旋转一下,然后给定初始状态和末状态求最小旋转步数。思路:递推,dp(i,x,y)表示翻到i位第i+1位为x,第i+2位为y的最小步数,枚举上翻状态,找到正翻和倒翻的最小值。code:#include using namespace std;#define cls(a,c) memset(a原创 2015-12-13 19:21:38 · 1048 阅读 · 0 评论 -
uva 10271——Chopsticks
题意:有n只筷子,然后选出来k+8套(一套有三只,分别ABC),一套筷子质量为最小的两只的平方,选出的使得总的质量和最小。思路:01背包。dp[i][j]表示j套利选出来i套的最优解,每个都有选当前和不选当前两中状态。code:#include using namespace std;typedef long long ll;typedef unsigned l原创 2015-12-13 20:38:43 · 401 阅读 · 0 评论 -
uva 1629——Cake slicing
题意:有一个n行m列网格蛋糕上有一些樱桃,每次可以把蛋糕一刀切成两块,最后使每块蛋糕上都有一个樱桃且切割线总长度最小。思路:区间dp,记忆化搜索整个过程,然后分区间从上到下,从左到右,分区间递归找到找到满足条件的最小值。code:#include using namespace std;typedef long long ll;typedef unsigned原创 2015-12-13 18:34:20 · 589 阅读 · 0 评论 -
uva 10723——Cyborg Genes
题意:输入两个A-Z组成的字符串,找到一个最短的串,使得两个串均是他的子串。思路:最长公共序列问题。当i和j相等时,dp[i][j]=dp[i-1][j-1],不等时就是max(dp[i-1][j],dp[i][j-1]),如果当前的统计的数量大于s就置为s,否则加上s。code:#include using namespace std;#define cls(a原创 2015-12-13 19:11:32 · 506 阅读 · 0 评论 -
uva 1632——Alibaba
题意:直线上有n个点,其中第i个点的坐标是xi,且他会在di秒后消失,阿里巴巴可以从任意位置出发,求访问过所有节点的最短时间,不能输出-1;思路:01背包问题,dp(i,j,0)表示遍历过i,j区间且最终落在i点的最短时间,dp(i,j,1)是落在j点,然后找到从i和j到达当前的最优值,到达之前点消失则置为INF;code:#include using namespa原创 2015-12-13 20:04:58 · 677 阅读 · 0 评论 -
uva 12589——Learning Vector
题意:输入n个向量(x,y),要求选出k个,从(0,0)开始画,使得画出来的折线与x轴围成的面积最大。输出面积的二倍。思路:01背包,dp[i][j]表示y的坐标为i且已经选了j个点的最大面积,然后10包选当前点和不选当前点的最大值。code:#include using namespace std;typedef long long ll;typedef un原创 2015-12-13 20:26:05 · 831 阅读 · 0 评论 -
uva 11584——Partitioning by Palindromes
题意:给定一个字符串,把该字符串划分为最少的回文串。思路:dp,到达i点的回文串长度都存起来,那么dp[i]=min(以i为结尾的最短的回文串长度)。code:#include using namespace std;#define ft(i,s,t) for (int i=s;i<=t;i++)#define cls(v,c) memset(v,c,sizeo原创 2015-11-26 21:42:15 · 391 阅读 · 0 评论 -
uva 10003——Cutting Sticks
题意:给定一长为L的木棍和n个切割点,每次切割的费用为切割的两端的长度和,求最小的费用。思路:dp,子问题是区间(i,j)的最小费用,临界是(i,j)只有一个切割点。code:原创 2015-11-26 21:58:42 · 441 阅读 · 0 评论 -
uva 1626——Brackets sequence
题意:定义满足1.空序列2.()(X)及括号和其括起来的合法序列3.【】要求和()相同都是合法的串。然后给定一段序列,求添加最小的()或【】使得序列合法。思路: 区间dp。以前做过用堆栈来判断合法性的题目,这道题目同样是经典。思想是不断分割小区间,当出现(X)时,应该转移到x,即从dp(i,j)转移到dp(i+1,j-1)如果多于两个字符应该枚举中间原创 2015-11-27 17:57:16 · 1259 阅读 · 2 评论 -
uva 10140——Prime Distance
题意:题目出的很简单,给定一个数据范围(好吧,又是给定一个范围),然后问你在这个给定的范围内,哪两个相邻素数挨的最近,哪两个最远。思路:这破题数据量很大,如果直接打表,铁定T,我蛋疼地打过两边了,T了好几次,后来看到队友P用拉宾米勒的算法水过去了,不过到了poj哪里还是T个不停,算是擦边球,后来又wa了好几次,实在不行,也套用了米勒拉宾的模板,本以为顺风水过,谁知又T了,这题搁置了几天,中间看了题原创 2015-10-26 17:09:17 · 570 阅读 · 0 评论