
UVA
GoneWithTheWind_yin
山科大学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Twenty Questions UVA - 1252
题目传送门思路:这个题目很巧妙啊,一看就是一个状压DP,但是这个题我觉得难点在于如何求得状态转移以后的状态,一开始想了很久都没有想出来,然后看了lrj的书上写的,确实十分的巧妙,我们用dp[s][a]来表示当前已经询问了集合s的问题,具有集合a特征的还要询问最少多少次才能求得最优解,然后我们可以预处理一个数组来记录每一个状态下有多少个满足的物体。#include <algorithm>#inclu原创 2017-11-20 20:31:25 · 398 阅读 · 0 评论 -
Generating Permutations UVA - 11925
题目传送门题意:这个题意紫书描述出了一些问题,题意是给你两种操作,让你从原来的严格升序列变成现在的序列。 操作一:交换最前面的两个数字。 操作二:把最后一个数字放到最前面。思路:这个题要逆向思维,然后就可以用冒泡的思想。但是一开始这个样子一直都是死循环,后来发现要把首位是n的情况特判。#include <algorithm>#include <cmath>#include <cstdio>原创 2017-08-28 09:56:54 · 369 阅读 · 0 评论 -
Feel Good UVA - 1619
题目传送门题意:给你一个长度为n的非负整数序列,求一段连续的字序列a1,a2,a3…..,使得(a1+a2+..+ar)*min(a1,a2,..,ar)的值最大。思路:这个题不难到想到要求最大值就是要看当前的点往左往右能够延伸的到的最远距离(使当前的点是这一段序列当中的最小值),但是如果暴力枚举的话时间复杂度太高所以要进行优化,记录当前的节点能够延伸到的最远距离,然后后面的节点如果小于当前的节点,原创 2017-09-05 19:00:59 · 330 阅读 · 0 评论 -
Smallest Sub-Array UVA - 11536
题目传送门题意:有n个0~m-1的整数组成一个序列,你的任务是要找到一个尽可能短的连续子序列使得这个子序列包含1~k的所有整数。思路:直接用尺取法就可以了,不难,注意一下状态的维护就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream>#include <ios原创 2017-09-04 20:59:56 · 303 阅读 · 0 评论 -
Caravan Robbers UVA - 1616
题目传送门题意:输入n条线段,把每一条线段的变成原线段的一条子线段,使得改变之后的线段等长且不相交(端点可以重合)。输入最大的长度。思路:思路很简单,先排序然后二分就可以了,这个题难的是在于如何将一个小数转换为分数,一开始自己写的可能精度有些问题后来看了一下别人的思想差不多。#include <algorithm>#include <cmath>#include <cstdio>#includ原创 2017-09-04 19:52:42 · 376 阅读 · 0 评论 -
Meeting with Aliens UVA - 10570
题目传送门题意:有一个1~n的排列,你每次可以都可以交换两个整数,用最少的次数交换次数把这个序列变成一个1~n的环状排列。思路:这个就是直接三重循环暴力就好了,如果当前的这个位置不是的话就找到应该放倒当前的位置的数字,然后进行交换。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <原创 2017-09-04 17:26:09 · 299 阅读 · 0 评论 -
K-Graph Oddity UVA - 1613
题目传送门题意:给你一个联通图,给这个图上的所有点染色,使得任意相连的两个点之间的颜色不同,一共有K种颜色(K是最大度,如果K是偶数的话,K加1)。思路:直接用DFS染色就可以了,一开始用BFS和STL的queue结果无限超时,然后改成了DFS90ms就过了,也是很迷。#include <algorithm>#include <cmath>#include <cstdio>#include <原创 2017-09-04 16:19:54 · 437 阅读 · 0 评论 -
Average UVA - 1451
题目传送门题意:给你一串n个数字序列,这一串序列只包含0或者1,让你求一段不少于k个数字的序列的平均值最大。思路:运用数形结合的思想,具体的可以查看《周源–浅谈数形结合思想在信息学竞赛中的应用》集训队论文。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream>#inc原创 2017-08-15 20:55:46 · 386 阅读 · 0 评论 -
Party Games UVA - 1610
题目传送门题意:输入一个n(n是偶数)个字符串的集合,找一个长度最短的字符串S,使得集合当中恰好有一半的字符串小于等于S,有一半大于等于S,如果有多解的话,输出字典序最小的解。思路:求出来中间的两个字符串然后贪心即可。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream原创 2017-08-22 16:55:54 · 306 阅读 · 0 评论 -
Erasing and Winning UVA - 11491
题目传送门题意:给你n个数字让你从这n个数字当中删除m个,使得最后得到的数字的大小最大。思路:贪心即可,从前面仅可能选择最大的数字。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream>#include <iostream>#include <list>#incl原创 2017-08-24 10:15:56 · 383 阅读 · 0 评论 -
Disgruntled Judge UVA - 12169
题目传送门题意:给你一个递推式x[i] = (a * x[i - 1] + b) mod 10001,然后输入T,x[1], x[3], ….., x[2 * T - 1],求出剩下的序列。思路:我们可以枚举a的值,然后用扩展欧几里得来求出来b然后进行验证当前的a,b是不是可以构成整个序列。#include <algorithm>#include <cmath>#include <cstdio>原创 2017-09-25 10:30:13 · 297 阅读 · 0 评论 -
Free Figurines UVALive - 7752
题目传送门题意:给你一些的套娃的嵌套方式,给你两种操作 1. 打开一个套娃然后放一个比他小的套娃进去。 2. 打开一个套娃拿出其中的套娃。思路:这个题看到直接就写成暴力了,然后就一场组队赛一直在做这个题直到结束也没有做出来,其实这个题就是一个技巧题。先把初始状态下的所有套娃都分开成单个然后在再组装成目标状态下的所需操作,然后再减去其中不必要的操作就是所需要最小操作数。#include <algo原创 2017-08-30 19:45:38 · 363 阅读 · 0 评论 -
Tour UVA - 1347
题目传送门思路:这个题目其实最重要的一点就是把一个人从最左边走到走右边在走回来这个问题转换为两个人同时从最左边走到最右边(除了最左边和最右边的点其余的点只能走一次)。那么我们定义dp[i][j]代表a从起点走到了i,b从起点走到了j的最短距离(1~max(i, j)全部已经走过了),然后只有两个状态转移dp[i + 1][j]或者dp[i + 1][i],我们可以直接求解了。#include <al原创 2017-11-01 20:17:29 · 516 阅读 · 1 评论 -
Prince and Princess UVA - 1063
题目传送门题意:求两个序列的最长公共子序列。思路:如果用最朴素的算法,显然会超时,所以用LIS的方式对LCS进行一个优化使O(N^2)转化为O(N*logN)的时间复杂度的算法(这个实现要求两个序列当中重复的元素比较少,这个题目两个序列没有重复的元素,所以没问题)。#include <algorithm>#include <cmath>#include <cstdio>#include <cs原创 2017-10-11 10:42:18 · 278 阅读 · 0 评论 -
Double Patience UVA - 1637
题目传送门题意:36张牌分成9堆,每堆4张牌,每一次可以拿走顶部两个相同点数的牌,如果有多种方法则按照等概率的随机拿,如果最后拿走了所有的牌则胜利,求胜利的概率。思路;用一个九元组储存状态,进行记忆话搜索。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#in原创 2017-10-10 21:19:27 · 308 阅读 · 0 评论 -
Password UVA - 1262
题目传送门题意;给你两个6行5列的密码矩阵,找出满足下列条件的“密码”:密码中的每一个字母都在两个矩阵的对应列中出现,求字典序第k大的的密码,如果没有输出NO。题意:直接暴力瞎搞一下就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <l原创 2017-09-27 17:41:18 · 414 阅读 · 0 评论 -
Send a Table UVA - 10820
题目传送门题意:给出n,算出小于等于n的所有数中,有几对互质。思路:我们用欧拉函数打个表就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <queue>#include <原创 2017-09-27 11:12:27 · 312 阅读 · 0 评论 -
Irrelevant Elements UVA - 1635
题目传送门题意:给你n个数字,一次求出相邻的两个数字的和,会得到一个新的数列,重复这个操作,最后会变成一个数字,问这个数字的余数和哪些数字无关?思路:这个题如果直接计算组合数的话要用到高精度算法,所以我们可以将这个问题转换为用唯一分解定理来做,求出来m的所有素因子,然后再求组合数的所有素因子判断即可。#include <algorithm>#include <cmath>#include <cs原创 2017-09-27 09:46:23 · 310 阅读 · 0 评论 -
Choose and divide UVA - 10375
题目传送门题意:给你四个数字p,q,r,s,计算C(p, q) / C(r, s)思路:因为直接计算的话中间的结果会过大,所以不能直接计算我们可以使用唯一分解定理来把这个题目转换为阶乘这个样子就不会使中间的结果过大了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostrea原创 2017-09-25 16:20:32 · 265 阅读 · 0 评论 -
Minimum Sum LCM UVA - 10791
题目传送门题意:给你一个整数N,求至少两个正整数,使得他们的最小公倍数是N,且这些整数的和最小,求和。思路:我们可以用唯一分解定理来求解,发现N的每一个质因子单独作为一个整数的时候情况最优。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <l原创 2017-09-25 16:51:03 · 241 阅读 · 0 评论 -
Defense Lines UVA - 1471
题目传送门题意:给你一个长度为n的序列,你的任务是删除一个连续的子序列,使得剩下的序列当中有一个长度最大的连续递增子序列。思路:我们想枚举每一个数字,看他能最多向左和向右可以延伸到哪里,然后我们就可以开始枚举i,j了,但是直接枚举的话时间复杂度是不够,所以我们可以仿造最大上升子序列的方法,进行优化将时间复杂度缩减到O(nlogn),就可以了。#include <algorithm>#include原创 2017-08-15 10:03:51 · 350 阅读 · 0 评论 -
Cav UVA - 1442
题目传送门题意:已知一个洞穴由宽度为n个片段组成,已知每一个片段的顶部高度和地面高度,要在洞穴里储存尽可能多的燃料,但是任何一个片段的燃料都不能触碰到洞穴的顶部。思路:这个题目还用到了连通器原理啊,连通的水面高度相同,不难想到就是要求出每一个片段的高度,但是如果全部枚举的话,时间复杂度显然是不够的,所以使用扫描法,从左扫描一次,从右扫描一次,就可以求出答案了。#include <algorithm>原创 2017-08-22 10:32:47 · 334 阅读 · 0 评论 -
Guarding the Chessboard UVA - 11214
题目传送门题意:一个n*m的棋盘上有一些点被标记了,问最少多少个皇后(国际象棋)能够把这些点全部都攻击到。思路:就是和把皇后的思路十分的类似,但是我犯了一个错误,一只wa,如果一个点被攻击到了的话这个点还是要进行枚举的,而不能直接跳过不然就会错。然后剪一下枝,我是按照IDA*来写的,但是没有想出来特别好的估值函数,就假设如果还不能全部覆盖就至少需要一个皇后加上一个这个判断时间是从3000ms减少到了原创 2017-08-11 21:36:24 · 496 阅读 · 0 评论 -
The Domino Effect UVA - 211
题目传送门题意:给你28个多米诺骨牌,每一个多米诺骨牌都有两个数字,然后给你一个7*8的网格,每一个网格上面都有一个数字,要求用这28个多米诺骨牌铺满整个网格,骨牌可以横着摆放也可以竖着摆放,问有多少种情况。思路:这个就是一个DFS,直接搜索就可以了,注意把情况都写全。比较坑的就是里面的格式控制了,注意什么时候该输出换行,因为如果空行输出少了,会返回WA。#include <algorithm>#原创 2017-08-11 13:56:47 · 309 阅读 · 0 评论 -
Sticks UVA - 307
题目传送门题意:题意很简单,一开始有一些等长的木棍,你把这个木棍分割成了n份,现在给你这n个木棍的长度,让你求出初始木棍的最小长度。思路:这个题,一看到就想到了直接DFS暴力搜长度,大胆的猜测一定是从大到小找,尽可能选大的然后很快就写出来了,然后一直wa调程序调不出来,然后在网上看到一组数据 10 21 14 13 11 9 6 4 3 2 1 发现我的程序过不了这个样例,我的猜测不对,不能纯原创 2017-08-10 21:49:20 · 296 阅读 · 0 评论 -
Non-boring sequences UVA - 1608
题目传送门题意:给你长度为n的一个序列,如果这个序列的任何一个连续子序列都有至少一个出现了一次的数字就说这个序列是一个不无聊的序列,反之就是一个无聊的序列。思路:这个题就是求出来每一个数字所在位置离他左右最近的相同的数字,然后进行搜索就可以了,从两边开始向中间搜索。PS:这个题目遇到一个奇怪的问题,这个做法的复杂度应该是O(nlogn),但是花了2000+ms,我就一直在找原因,然后最后发现原因竟然原创 2017-08-17 19:06:21 · 374 阅读 · 0 评论 -
Square Destroyer UVA - 1603
题目传送门题意:给你一个n*n的用火柴棍拼成的正方形,然后在这个正方一开始先取走m个火柴棍,问你剩下的最少取走多少个可以使这个这些火柴无法构成正方形。思路:这个题知道是IDA*搜索,可是这个题最大的问题就是把所有的正方形都找出来,现在代码能力太弱了,这个东西写了两个小时都没写出来,最后借鉴了别人的把这个写了出来,剩下的就是枚举删除剩下的正方形每一个边,然后迭代加深搜索还有估值函数,我看了一下最初的图原创 2017-08-10 17:16:53 · 717 阅读 · 0 评论 -
Shuffle UVA - 12174
题目传送门题意:你正在使用的音乐播放器有一个所谓的乱序播放功能,即随机打乱歌曲的播放顺序。假设一共有s首歌,则一开始会给这s首歌随机排序,全部播放完毕后再重新随机排序、继续播放,依次类推。注意,当s首歌播放完毕之前不会重新排序。这样,播放记录里的每s首歌都是1~s的一个排列。给出一个长度为n(1≤s,n≤100000)的播放记录(不一定是从最开始记录的)xi(1≤xi≤s),你的任务是统计下次随机排原创 2017-08-17 09:11:57 · 341 阅读 · 0 评论 -
Erratic Expansion UVA - 12627
题目传送门题意:每一秒钟后一个红气球会变为三个红气球和一个蓝气球(蓝气球在右下角),一个蓝气球会变为四个蓝气球,问你k秒时,第a行到第b行一共有多少红气球。思路:仔细观察一下题目中给出来的图,第k秒的时候图中的红气球的数量为3^k,而且是由三个k-1秒的气球图和一个全部都是蓝色气球的图组成,我们可以用递归的方式求得前a - 1行的红气球总数,然后用前b行的红气球总数减去前a - 1行的红气球总数即是原创 2017-08-16 16:57:09 · 322 阅读 · 0 评论 -
Piotr's Ants UVA - 10881
题目传送门题意:在一个长为L的木棍上有n只蚂蚁,每只蚂蚁要么往左爬,要么往右爬,如果两只蚂蚁相遇的话,二者同时掉头,计算经过t秒后所有蚂蚁的位置。思路:这个题目看见这个题的时候,想模拟整个蚂蚁的爬行的过程,后来发现很难实现,就想到如果两只蚂蚁相遇以后,一只蚂蚁本来要到达的位置就是于它相遇的蚂蚁会到达的位置,这样一来就可以把终止状态下的蚂蚁的位置都模拟出来了(提前排一下序)。但是题目要求的是按输入顺序原创 2017-06-29 10:57:16 · 435 阅读 · 0 评论 -
Cutting Chains UVA - 818
题目传送门题意:给你n个环,这些环有一些已经连在了一起,你可以将其中的一些环打开在关闭,问你最少打开几个环可以使所有的环联成一条链。思路:这个题比赛的时候用并查集加欧拉路写的,但是并没有写出来,比赛结束了以后我看了一下题解,发现因为圆环的个数最多只有十五个,所以这个题目可以用二进制来枚举所有的子集来做,找到所需要最少的环。 有几个要注意的地方: 1.如果断开环以后,还有分支数大于2的无法构成一条原创 2017-08-09 19:41:18 · 360 阅读 · 0 评论 -
The Rotation Game UVA - 1343
题目传送门题意:有个#字型的棋盘,2行2列,一共24个格。 每个格子是1或2或3,一共8个1,8个2,8个3. 有A~H一共8种合法操作,比如A代表把A这一列向上移动一个,最上面的格会补到最下面。 求:使中心8个格子数字一致的最少步骤,要输出具体的操作步骤及最终中心区域的数字。如果有多个解,输出字典序最小的操作步骤。思路:这个题目可以使用迭代加深搜索,时间复杂度也完全足够,这个方法的关键其实就原创 2017-08-08 19:58:20 · 332 阅读 · 0 评论 -
Egyptian Fractions (HARD version) UVA - 12558
题目传送门题意:题意和埃及分数的大致一样,只是题目里会给你k个不大于1000的数字,你不能使用这些数字。思路:就是IDA*迭代加深搜索,一开始判断能不能使用有一种情况没有考虑到一只wa,判断这个数字能不能使用不仅要在每一次开始进行搜索的时候进行判断,还要判断最后一个数字能不能满足(一开始就错在这里了)。#include <algorithm>#include <cmath>#include <c原创 2017-08-12 12:31:11 · 292 阅读 · 0 评论 -
Crane UVA - 1611
题目传送门题意:给你n个数字的序列,你可以一次操作一个区间(区间大小是偶数),交换区间的前半部分与后半部分,用不超过9^6的操作数使这个序列变成一个升序列。思路:这个我一开始理解的是要用最少的操作数,然后就想了好久都没有想出来,但是发现了只需要从左到右进行操作就可以,每一数字最多只需要两次操作就可以了,但是一只输出的操作不是操作次数最少的(十分崩溃啊),然后后来发现不需要次数最少。。。。。。#inc原创 2017-08-25 10:08:26 · 371 阅读 · 0 评论 -
Unique Snowflakes UVA - 11572
题目传送门题意:给你一个序列,问你最长的连续序列里没有重复的数字思路:这个题目其实就是一个尺取法的题目,用set来维护一下状态就可以了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream>#include <iostream>#include <list>#in原创 2017-08-14 20:05:12 · 250 阅读 · 0 评论 -
Amphiphilic Carbon Molecules UVA - 1606
题目传送门题意:平面上有n个点,每一个点为白点或者黑点。现在要放置一个隔板,使得隔板的一侧白点加上另一侧黑点的总数最大。思路:这个题借鉴了这位博主的做法http://blog.youkuaiyun.com/u014800748/article/details/47952253#include <algorithm>#include <cmath>#include <cstdio>#include <cst原创 2017-08-14 19:36:36 · 348 阅读 · 0 评论 -
Fabled Rooks UVA - 11134
题目传送门题意:给你一个n*n的棋盘,在这个棋盘上放置n个车是他们不互相攻击,且第i个车一定在矩形Ri中。思路:这个题可以发现车的横坐标与纵坐标是没有联系的,然后我们可以分开来进行计算,这个题按理说是可以直接贪心过的,但是我的贪心策略错了,然后就不知道怎么改了。就换成了匈牙利算法写匹配,也是一样可以的。#include <algorithm>#include <cmath>#include <c原创 2017-08-14 17:06:38 · 318 阅读 · 0 评论 -
Guardian of Decency UVA - 12083
题目传送门题意:Frank是一个思想有些保守的老师。有一次,他需要带一些学生出去旅游,但又怕其中有一些学生在旅途中萌生爱意。为了降低这种事情发生的概率,他决定确保带出去的任意两个学生至少要满足下面4条中的一条: (1)身高相差大于40厘米。 (2)性别相同。 (3)最喜欢的音乐属于不同的类型。 (4)最喜欢的体育比赛相同。 最多能带出去多少人思路:比赛的时候没做出来,想到这个是一个二分图匹原创 2017-08-21 14:59:02 · 315 阅读 · 0 评论 -
Foul Play UVA - 1609
题目传送门题意:有n只队伍(n是2的整数幂)打淘汰赛,每一轮都是两两配对,胜利者进入下一轮。每一只队伍的实力都是确定的,你最喜欢编号为一的队伍,设计一个方案让队伍一一定胜利。思路:这个题目有两个关键性的条件 条件1:1号队伍至少能打败一半的队伍。 条件2:对于不能直接打败的队伍t,存在能够打败的队伍t1,t1能够打败t。 这两个条件是至关重要的,设计三个阶段 阶段1:尽可能的消灭队伍1无法打原创 2017-08-19 18:32:16 · 599 阅读 · 0 评论 -
According to Bartjens UVA - 817
题目传送门题意:输入一个以等号结尾。前面只包含数字的表达式,插入一些加号、减号和乘号,使得运算结果等于2000.表达式里的整数不能有前导零(例如,0100和000都是非法的),运算符都是二元的(例如,2*-100*-10+0=是非法的),并且符合通常的运算优先级法则。输入数字个数不超过9。如果有多解任意顺序输出:如果无解,输出IMPOSSIBLE。例如,2100100=有3组解,按照字典序依次为2*原创 2017-08-12 18:35:52 · 671 阅读 · 0 评论