其他OJ习题
文章平均质量分 82
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
2015编程之美资格赛 A 2月29日
时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期)。只有闰年有2月29日,满足以下一个条件的年份为闰年:1. 年份能被4整除但不能被100整除2. 年份能被400整除输入第一行为一个整数T,表示数据组数。之后每组数据包含两行。每一行格式为"mo原创 2015-04-20 12:06:18 · 823 阅读 · 0 评论 -
2015编程之美资格赛 B 回文字符序列
时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定字符串,求它的回文子序列个数。回文子序列反转字符顺序后仍然与原序列相同。例如字符串aba中,回文子序列为"a", "a", "aa", "b", "aba",共5个。内容相同位置不同的子序列算不同的子序列。输入第一行一个整数T,表示数据组数。之后是T组数据,每组数据为一行字符串。原创 2015-04-20 12:14:35 · 1149 阅读 · 0 评论 -
2015编程之美资格赛 C 基站选址
时间限制:2000ms单点时限:1000ms内存限制:256MB描述需要在一个N × M的网格中建立一个通讯基站,通讯基站仅必须建立在格点上。网格中有A个用户,每个用户的通讯代价是用户到基站欧几里得距离的平方。网格中还有B个通讯公司,维护基站的代价是基站到最近的一个通讯公司的路程(路程定义为曼哈顿距离)。在网格中建立基站的总代价是用户通讯代价的总原创 2015-04-20 12:45:51 · 1156 阅读 · 0 评论 -
2015编程之美初赛第一场 B 建造金字塔
时间限制:4000ms单点时限:2000ms内存限制:256MB描述在二次元中,金字塔是一个底边在x轴上的等腰直角三角形。你是二次元世界的一个建筑承包商。现在有N个建造订单,每个订单有一个收益w,即建造此金字塔可获得w的收益。对每个订单可以选择建造或不建造。建造一个金字塔的成本是金字塔的面积,如果两个或多个金字塔有重叠面积,则建造这些金字塔时重叠部份原创 2015-04-26 11:02:43 · 1167 阅读 · 0 评论 -
2015编程之美初赛第一场 C 质数相关
时间限制:2000ms单点时限:1000ms内存限制:256MB描述两个数a和 b (a输入第一行为一个数T,为数据组数。之后每组数据包含两行。第一行为N,为集合S的大小。第二行为N个整数,表示集合内的数。输出对于每组数据输出一行,形如"Case #X: Y"。X为数据编号,从1开始,Y为最大的子集的大小。数据范围1 ≤ T ≤原创 2015-04-26 13:29:25 · 1012 阅读 · 2 评论 -
2015编程之美初赛第一场 A 彩色的树
时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定一棵n个节点的树,节点编号为1, 2, …, n。树中有n - 1条边,任意两个节点间恰好有一条路径。这是一棵彩色的树,每个节点恰好可以染一种颜色。初始时,所有节点的颜色都为0。现在需要实现两种操作:1. 改变节点x的颜色为y;2. 询问整棵树被划分成了多少棵颜色相同的子树。即每棵子树内原创 2015-04-25 17:42:47 · 1169 阅读 · 4 评论 -
ACMer去刷题吧 XDU1020
1.题目描述:点击打开链接2.解题思路:本题利用概率dp解决。根据题意描述,我们可以定义d(i,j)表示前i道题做对j道的概率。那么根据全概率公式,可以得到如下递推式:d(i,j)=d(i-1,j)*(1-p[i])+d(i-1,j-1)*p[i](0≤j≤i)其中p[i]表示第i道题做对的概率。这样,得到所有的d值后,ans=sum{d(i,j)|k≤j≤n}3.代码:#de原创 2015-04-25 12:08:58 · 746 阅读 · 0 评论 -
亮亮做加法 XDU1003
1.题目描述:点击打开链接2.解题思路:本题要求输入两个b进制整数X,Y,输出他们相加后的b进制的结果。本题据说可以直接用Java的特性很方便的解决。但这里还是介绍如何利用C++来解决。其实思路很简单,模拟b进制数相加的过程即可。先把输入的X,Y转化为十进制整数,相加得到十进制的和后再转化为b进制即可。不过其中有一些要注意的地方:(1)注意结果是0的时候。(2)由于题目中说答案的最大范围不超过原创 2015-04-24 22:05:52 · 643 阅读 · 0 评论 -
最优规则式 XDU1024
1.题目描述:点击打开链接2.解题思路:本题要求找到四个数,满足aLeft[i]=max{Left[i-1],arr[i-1]-minx};上式中,minx是区间[0,i-1)上的最小元素。同理可得Right数组的递推式:Right[i]=max{Right[i+1],maxx-arr[i]};上式的maxx表示区间[i+1,n)上的最大元素。每次都可以只用O(N)的时间即可算原创 2015-04-27 23:01:55 · 690 阅读 · 0 评论 -
HDU 4119 Isabella's Message (2011年成都赛区现场赛I题)
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,要求模拟一个解密的过程,练习这么久第一次做模拟题1Y了,内心还是很激动的~。只需要根据题意,记录* 所在的位置即可,然后每次都是先解密,后顺时针旋转90度。把每次解密的信息放到一个vector里,接下来就是连接它们,得到解密后的字符串,在map中查找这些单词是否存在即可。如果都存在,就把这条解密信息放到ans中,最后对ans排序,输出a原创 2015-08-26 00:29:38 · 1312 阅读 · 0 评论 -
HDU 4427 Math Magic (2012年长春现场赛H题)
1.题目描述:点击打开链接2.解题思路:本题要求寻找k个正整数,它们的和恰好是N,它们的LCM恰好是M的解的个数。可以设置一个三维的dp来解决。用dp(i,j,k)表示选择i个数,它们的和恰好是j,它们的LCM恰好是k的个数。那么答案就是dp(k,n,m)。不过这里介绍一种利用状态压缩思想求解的方法。通过题意可以发现,N,M的范围都比较小,不超过1000,而1000之内的所有数的不原创 2015-08-27 00:04:23 · 1183 阅读 · 0 评论 -
HDU 4115 Eliminate the Conflict (2011年成都赛区现场赛E题)
1.题目描述:点击打开链接2.解题思路:本题属于2-SAT问题,第一次做这种题,还是很感兴趣的。2-SAT解决的是给定m条语句,每一条语句形如“xi为真或xj为假”,问你是否可能让所有的语句都成立。那么不难发现,本题就属于一种2-SAT问题。首先,根据题意可知,第i轮有2种出法,要么是x[i],要么是(x[i]+1)%3。我们令xi为真表示出x[i],xi为假表示出(x[i]+1)原创 2015-08-26 12:15:28 · 654 阅读 · 0 评论 -
HDU 4435 charge-station (2012年天津赛区现场赛E题)
1.题目描述:点击打开链接2.解题思路:本题利用DFS解决。不过本题的解法颇为巧妙,注意到2^0+2^1+...+2^(i-1)3.代码:#include#include#include#include#include#include#include#include#include#include#include#include#include#include原创 2015-08-27 21:10:40 · 687 阅读 · 0 评论 -
HDU 4118 Holiday's Accommodation (2011年成都赛区现场赛H题)
1.题目描述:点击打开链接2.解题思路:本题利用树形dp求解。本题要求每个结点上的人都交换位置后,使得走过的总路程最大,这就意味着每条边经过的次数都尽可能的多。因此我们不妨从边的角度入手来考虑,怎么才能让第i条边通过的次数最多呢?可以发现,如果这条边右侧的结点数有size个,右边有n-size个,那么最大的通过次数就是2*e[i].w*min(size,n-size),而计算size正是树形d原创 2015-08-26 09:31:59 · 625 阅读 · 0 评论 -
HDU 4422 The Little Girl who Picks Mushrooms (2012年长春赛区现场赛C题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单模拟题,然而,自己的方法不对WA了很多次==。最后不得不弃用自己的思路了。首先用-1表示还没有使用过的位置。可以每次枚举3个位置,如果发现这3个位置中没有-1且他们的和不能被1024整除,那么return 0,否则,找到没有被标记的另外2个位置,如果这2个位置其中一个为-1,那么直接返回1024,因为我们已经交了三个袋子了,剩下的袋子中如果原创 2015-08-26 22:00:57 · 717 阅读 · 0 评论 -
HDU 5002 Tree (2014年鞍山赛区网络赛F题)
1.题目描述:点击打开链接2.解题思路:LCT的模板题3.代码:#include #include #include #include #include using namespace std;const int N = 111111;const int INF = 1111111111;int n, m;class LCT {private :原创 2015-08-28 01:44:44 · 1132 阅读 · 0 评论 -
HDU 1496 Equations
1.题目描述:点击打开链接2.解题思路:本题利用Hash技术+双向查找解决。可以先计算出a*x0*x0+b*x1*x1的所有可能结果,然后再查找-(c*x2*x2+d*x3*x3)的个数,由于每个值都有2种情况,因此一共有16种组合,最终统计出个数后还要乘以16。存储前一半的所有可能的结果可以有多种方法,可以使用STL中的set或者multiset,也可以自己写一个Hash函数,将所有结果和一原创 2015-08-10 11:34:11 · 603 阅读 · 0 评论 -
HDU 5381 The sum of gcd (2015年多校比赛第8场)
1.题目描述:点击打开链接2.解题思路:本题利用莫队算法解决。由于是第一次学习这个算法,因此研究了比较长的一段时间才弄懂。首先,莫队算法解决的问题是无修改的离线区间查询问题。该算法实际上是由曼哈顿距离最小生成树演变来的,由于要处理m个区间,可以将这m个区间看做二维平面上的点,那么处理这m个区间就等价于让这m点连通,且总的转移代价最小。这其实就是一个曼哈顿距离最小生成树问题。经典的曼原创 2015-08-15 13:26:43 · 1970 阅读 · 0 评论 -
HDU 5374 Tetris (2015年多校比赛第7场)
1.题目描述:点击打开链接2.解题思路:本题要求模拟俄罗斯方块游戏,然而比赛时候写了好久还是没过。后来补题发现原来是第四步的逻辑实现写错了。。。题目中要求如果一整行可以消除,那么仍然执行该步,否则才回到第一步。但是我的代码却是不论是否可以消除,都回到第一步。。。补题时候还发现一个地方我的理解出错了。。(可能是我脑洞真的有点大),题目中说如果一整行可以消除,那么它上面的方格要下落。我的理解是下落原创 2015-08-11 22:03:47 · 860 阅读 · 0 评论 -
HDU 5353 Average (2015年多校比赛第6场)
1.题目描述:点击打开链接2.解题思路:本题属于一个简单的模拟题,然而在比赛时候考虑不周WA了。本题要求相邻的两个人可以交换一个糖果,且仅能交换一次。首先计算所有糖果的个数sum,如果sum不能整除n,那么肯定无解。否则,计算出平均值mean,然后让a[i]-=mean得到差值。此时可以利用贪心法来解决本题。令第i个人只和第i+1个人之间进行糖果交换:如果差值为-1,则第i+1个人给第i个原创 2015-08-06 22:49:02 · 874 阅读 · 0 评论 -
POJ 1182 食物链
1.题目描述:点击打开链接2.解题思路:本题利用并查集解决。根据题意知,需要三个并查集,这里为了方便,给数组par均分为三段,分别记为A,B,C。通过下标来控制不同的集合。那么接下来该如何处理每一条信息呢?当输入第一种信息时,表示u和v属于同一类,此时有三种可能,因此要把u和v分别合并到A,B,C中。如果是第二种,表示u吃v,那么也有三种情况:u在A中v在B中,u在B中v在C中,u在C中v原创 2015-04-06 23:29:28 · 459 阅读 · 0 评论 -
HDU 4462 Scaring the Birds (2012年杭州赛区现场赛J题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单模拟题。不过重点还是对于题目细节的理解。容易犯2个理解错误:(1)误以为是每个稻草人有不同的scaring range,实际上scaring range是由不同的vacant intersection决定的,跟稻草人毫无关系。(2)误以为所有点都需要被覆盖,实际上题目要求的是只要所有corn被保护就行,插稻草人的地方本来就是空地,有没有被保原创 2015-08-30 15:43:35 · 581 阅读 · 0 评论 -
POJ 3050 Hopscotch
1.题目描述:点击打开链接2.解题思路:本题利用DFS解决。对每一个格子都进行dfs,当cur==6时,将合成的整数放入set中,最后输出set的大小即可。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#inclu原创 2015-04-08 15:40:08 · 506 阅读 · 0 评论 -
HDU 5384 Danganronpa (2015年多校比赛第8场)
1.题目描述:点击打开链接2.解题思路:本题利用字典树解决。本题要求查找所有的B[j]在A[i]中出现的总次数。那么我们可以建立一颗字典树,将所有的B[j]插入字典树,由于一个串的所有字串相当于它所有后缀的前缀。因此在查找时候,只需要查找A[i]的每一个后缀即可,然后累加这个后缀的前缀个数,即可得到该后缀中子串的个数,所有后缀的值相加,就是最终的答案。3.代码:#pragma comm原创 2015-08-14 21:50:26 · 631 阅读 · 0 评论 -
POJ 2431 Expedition
1.题目描述:点击打开链接2解题思路:本题利用优先队列解决。本题在思维上需要稍微灵活变通一下:如果到达第i个加油站时,把它能够提供的油量预存储到队列中,等将来真正需要加油的时候,再从队列中取出来。这就等价于在到达第i个加油站时选择了加油的措施。不过本题要求加油次数最少。这时我们可以考虑使用STL中的优先队列解决。每次都选加油量最大的那个加油站来加油。这样的贪心选择可以保证最终的加油次数是最少的原创 2015-04-06 20:00:02 · 422 阅读 · 0 评论 -
HDU 4455 Substrings (2012年杭州赛区现场赛C题)
1.题目描述:点击打开链接2.解题思路:本题利用dp解决。不过这个dp的思路的确比太容易想到。需要观察规律才能发现。我们可以从贡献值的角度考虑。以题目中给的样例来说明这种方法。通过观察相邻两个w值,我们会发现一个事实:每个大区间都包含了小区间的解(这里的解即原题中的sum值)。但是这原创 2015-08-30 13:47:04 · 728 阅读 · 0 评论 -
POJ 2718 Smallest Difference
1.题目描述:点击打开链接2.解题思路:本题利用暴力搜索法解决。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include#include#include#include#include#include#include#includ原创 2015-04-07 23:57:18 · 803 阅读 · 0 评论 -
POJ 3253 Fence Repair
1.题目描述:点击打开链接2.解题思路:本题利用霍夫曼编码的原理解决。这道题本可以用动态规划来解决,之前已经在UVa10003上做过了这道题,不过今天才发现原来就是霍夫曼编码的变形,真的是非常巧妙。我们考察切木棍这个过程可以发现,实际上这把总长为L的木棍切割为L1,L2,L3等等我们需要的木棍是一个树状结构。那么最终的总开销就是sum{木板的长度*节点的深度}。从最优的角度考虑,最短的板对应的原创 2015-04-06 21:05:05 · 456 阅读 · 0 评论 -
HDU 1003 Max Sum
1.题目描述:点击打开链接2.解题思路:本题是经典的最大连续和问题,效率高的解决方法有两种:(1)利用公式:A[i]+A[i+1]+...+A[j]=S[j]-S[i-1];(2)利用动态规划;(3)边读入边计算(精简版的动态规划)。对于(1),二重循环还是会TLE的,应该事先计算好0~j之间的最小值及其位置。对于(2)定义d(i)表示以i结尾的最大连续字串的和,再用一个辅助变量保存开始值s,原创 2015-02-12 20:55:27 · 491 阅读 · 0 评论 -
HDU 5386 Cover (2015年多校比赛第8场)
1.题目描述:点击打开链接2.解题思路:本题利用逆向思维+贪心法解决。因为题目中已经告诉我们一定存在解,因此可以考虑贪心法的使用。这道题的妙处在于答案和初始矩阵是无关的,只和目标矩阵有关。因为不管初始矩阵长什么样,只要操作一样,加上解的存在性,得到的目标矩阵一定是相同的。接下来就是如何寻找操作序列。假设最后一步操作执行后,我们得到了目标矩阵,由于所有操作都是对一整行或者一整列进行的原创 2015-08-15 10:30:00 · 806 阅读 · 0 评论 -
HDU 4458 Shoot the Airplane (2012年杭州赛区现场赛F题)
1.题目描述:点击打开链接2.解题思路:本题利用运动的相对性解决。可以假设飞机固定不动,那么子弹相当于还有一个水平分量,只不过方向是-v。这样,问题就转化为一个动点什么时候到达一个多边形内部的问题了。不过本题有一个细节就是g可能等于0,因此要分匀变速运动和匀速运动2种情况求出最大可能的子弹飞行时间。另外一个细节就是本题对精度要求比较高,建议判断点是否在线段上改为利用坐标的差值来判断,避开使用D原创 2015-08-30 20:19:49 · 1165 阅读 · 0 评论 -
POJ 3255 Roadblocks
1.题目描述:点击打开链接2.解题思路:本题利用Dijkstra算法的原理解决。由于要求出次短路,我们需要思考Dijkstra成功求解出最短路的原理,然后再加以改进。Dijkstra算法的原理是先把所有距离设为INF,然后令dist[0]=0。每次都从已经确定了距离的顶点出发,依次更新跟它相邻的结点的最短距离,以后就不再考虑“最短距离已经确定了的顶点”。注意:我们不用考虑的是“最短距离已经原创 2015-04-07 16:16:03 · 1171 阅读 · 0 评论 -
POJ 1376 Robot
1.题目描述:点击打开链接原创 2014-11-06 19:57:19 · 642 阅读 · 0 评论 -
HDU 5360 Hiking (2015年多校比赛第6场)
1.题目描述:点击打开链接2.解题思路:本题利用优先队列解决,然而在这次多校的比赛时候并没有往这个角度考虑,最终要么WA要么TLE==。其实本题的贪心策略很好想:如果把题目中的人数看做数轴上的点的话,那么应该按照从0依次递增的顺序来选择区间,把符合条件的区间预先存起来,然后按照他们的终点由小到大排序,第一个就是我们要的区间,如果遇到第一个区间的终点也小于当前值,那么也将他放入ans数组,只不过原创 2015-08-06 20:52:11 · 983 阅读 · 0 评论 -
POJ 3187 Backward Digit Sums
1.题目描述:点击打开链接2.解题思路:本题通过观察发现实际上是找符合这样的等式的一个排列:C(n-1,0)*a[0]+C(n-1,1)*a[1]+...+C(n-1,n-1)*a[n-1]==sum其中数组a是1~n的一个排列,C(n-1,i)代表组合数。这样的话,可以花费O(N^2)时间预先计算好所有组合数,然后用next_permutation函数枚举下一个排列即可。如果发现正好原创 2015-04-08 14:53:15 · 613 阅读 · 0 评论 -
POJ 2559 Largest Rectangle in a Histogram
1.题目描述:点击打开链接2.解题思路:本题利用单调栈解决。单调栈是满足从栈顶到栈底,元素大小严格递增或者严格递减的栈。对于本题,如果我们可以知道以i为端点,向左可以最远延伸的距离和向右最远延伸的距离,那么最大面积res=max{hi*(R[i]-L[i])|0那么如何高效地计算L[i]和R[i]呢?通过观察我们发现如果在某一处p有h[p]3.代码://#pragma commen原创 2015-08-16 11:25:59 · 597 阅读 · 0 评论 -
POJ 2823 Sliding Window
1.题目描述:点击打开链接2.解题思路:本题利用单调队列解决。单调队列和单调栈性质一样,内部元素严格单调递增排列。单调队列的一个典型应用就是本题的求滑动窗口的最值问题。那么怎么求解呢?首先,由于长度为k,因此我们可以先把0到k-1的下标全部试图入队列。在加入元素i时,若队列的末尾的值j满足Aj≥Ai,则不断地取出,直到队列为空或者Aj还可以简单的理解:从头滑到尾可以求出最小值,从尾滑到头可原创 2015-08-16 13:23:45 · 604 阅读 · 0 评论 -
HDU 4453 Looploop (2012年杭州赛区现场赛A题)
1.题目描述:点击打开链接2.解题思路:本题是伸展树的基本题型,不过由于是第一次使用这种数据结构,先补了一下BST和Treap的基础知识,然后才开始学这种数据结构。不难发现,伸展树最基本且最核心的操作就是伸展操作,它能够将一个指定的结点通过旋转操作逐步转为树根。同时由于伸展树本质上也是一种BST,因此同时具备BST的基本功能,比如查询操作。我们每次都把箭头指向的位置作为树根。首先是原创 2015-08-31 15:01:27 · 1071 阅读 · 0 评论 -
ZOJ 3818 Pretty Poem (2014年牡丹江赛区网络赛J题)
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,输入一个串,要求判断是否形如“ABABA”或“ABABCAB”。只需要对两种情况逐一尝试即可。然而这道题有诸多细节需要考虑。这里说一下我自己的方法。首先,如果输入的串长度3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#原创 2015-08-17 15:06:02 · 663 阅读 · 0 评论 -
ZOJ3811 Untrusted Patrol (2014年牡丹江赛区网络赛C题)
1.题目描述:点击打开链接2.解题思路:本题利用BFS+并查集解决。题意要求寻找输入的访问次序是否可行,而且所有结点都要访问到,因此,如果一开始整个图是不连通的,自然要输出No,连通性可以用并查集来判断。如果图连通,那么看L和K的关系,如果L如果访问顺序是可行的,那么第一个仓库是谁并不重要,不妨就把收集到的第一个传感器信号所在的结点作为第一个访问的仓库,接下来我们可以利用BFS将所原创 2015-08-18 10:37:29 · 835 阅读 · 0 评论