紫书
yhwqeioyqewqiweq
这个作者很懒,什么都没留下…
展开
-
UVA - 10820 Send a Table
题目链接给出一个数字n 找出有多少对两个数都不大于n的互质数对。当x>y时 与x互质的数即为x的欧拉函数值,反之亦然,再加上相等的1,1这一对即可求出答案。这题总的来说就是板子题,但是第一次敲欧拉函数板子还敲错了……有点丢人。AC代码:#include <iostream>#include <cstdio>#include <cstri...原创 2019-01-16 15:58:18 · 130 阅读 · 0 评论 -
UVA - 11584 Partitioning by Palindromes
题目链接给你一个字符串,问最少能划分成几个字符串。首先要明确,最短的一个回文串是单个的字符。这样写一个二重循环,状态转移方程为d[i]=min(d[i],d[j]+1){当字符串从s[j+1]--s[i+j]为回文串时}。在做题时,可以先对字符串进行预处理,找到从哪里到哪里是回文串。AC代码:#include <iostream>#include <cst...原创 2018-08-18 09:47:49 · 121 阅读 · 0 评论 -
UVA - 12563 Jin Ge Jin Qu hao
题目地址你有n首喜欢唱的歌,你要争取在t时间内唱最多的歌,数量相同时时间最长,最后唱一首劲歌金曲。因为歌的总长度大于t,所以t比给出的范围小很多。用数组d[i][j]表示唱i首歌,剩余时间还有j秒时还能唱的歌数量,len[i][j]表示此时的时长,然后用01背包的方式解答。注意数量相同时要保证时长最长。写的时候手滑把一个i和j写混了,改了一个小时……AC代码:#include...原创 2018-08-07 17:47:20 · 119 阅读 · 0 评论 -
UVA - 12265 Selling Land
卖地。看https://blog.csdn.net/sdfzyhx/article/details/51615684吧 这题超出我能力范围了原创 2018-08-02 19:39:18 · 147 阅读 · 0 评论 -
UVA11400 Lighting System Design
感冒惹 做题也是迷迷糊糊地做 就不写题解误人子弟了。推荐https://blog.csdn.net/maxichu/article/details/44757599原创 2018-08-11 19:56:08 · 130 阅读 · 0 评论 -
UVA - 116 Unidirectional TSP
题目地址给一个m*n的矩阵 每个格子有一个值 输出一种走到最后一列的走法,使得路过的格子的值的和最小且字典序最小。设d[i][j]为从(i,j)到最后一列的最小开销,那么最后一列的格子的d值就是格子本身的值。每一次有三种决策:右上、直右和右下,一步步推就行。为了保存最小字典序,排序是必要的。AC代码:#include <iostream>#include <...原创 2018-08-06 19:41:37 · 173 阅读 · 0 评论 -
UVA - 1442 Cav
题目地址有一个洞穴,往里面灌水,问最多能储存多少水。这道题紫书上面讲的很透彻,大致就是从左右分别扫描得出每一块的水位值。AC代码:#include <iostream>#include <cstdio>using namespace std;int p[1000010],s[1000010],a[1000010],b[1000010];int m...原创 2018-08-01 18:59:56 · 116 阅读 · 0 评论 -
UVA 1609 Foul Play
题目链接给你一群队伍,1号对至少能击败一半的队伍,每只一号队不能击败的队伍都有另一只队伍能击败他。给一个比赛安排让一号队夺冠(黑幕!)n=2时,一号队必能击败对手夺冠。所以我们的目标就是在满足题目条件的情况下不断减少队伍,最后n=2一号队夺冠。四个阶段:尽量配对打不过的,给1号队挑一个能打败的,把剩下黑色队伍任意配对,剩下所有队伍任意配对,然后递归。因为过程是一个log2 n 所以...原创 2018-08-01 11:14:14 · 184 阅读 · 0 评论 -
UVA - 1347 Tour
题目链接给若干个点坐标,设计一个路线走一个环(左到右在不同路走回来),求最短路。把问题分解成两个人从不同的路从左到右,然后就可以开始规定了。规定d(i,j)是1到max(i,j)都走过,两个人的位置分别是i和j时,再规定i>j,再规定只有一个人能走到i+1,这样状态转移方程就是d(i,j)=min(d(i+1,j)+dist(i,i+1),d(i+1,i)+dist(j,i+1));...原创 2018-08-05 16:48:40 · 129 阅读 · 0 评论 -
UVA - 1451 Average
题目链接给你一个01串,找一个长度至少为L的连续子串,使平均值最大(1最多)。这道题是数形结合,要结合着图看,推荐看紫书或是一些有图的代码,大致思想是把平均值和直线斜率对应起来然后清除上凸点。AC代码:#include <iostream>#include <cstdio>#include <string>using namespace ...原创 2018-07-28 10:22:20 · 187 阅读 · 0 评论 -
UVA - 1625 Color Length
题目链接你有两个序列,每个序列都由颜色的缩写组成(如RRRGGGBBBBBBB),现在通过每次挑一个序列,把序列中首位的颜色提出来放到新序列的尾部,把两个序列合成一个序列。设L(c)是颜色c最右位置和最左位置的差,求所有L和的最小值。当一个颜色c被放入新序列而没有结束(原序列中还有该颜色)时,每次放入一个颜色Lc就要加一。所以只要知道有多少个颜色还没有结束,然后加就行了。AC代码:...原创 2018-08-28 18:59:14 · 154 阅读 · 0 评论 -
UVA - 1626 Brackets sequence
题目链接给你一个括号序列,输出一个前后括号都匹配的补全序列,且补的字符尽量少。对一个串s来说,只会有两种情况:1、(t)或【t】转移到t 2、有两个字符,分段转移。为了保证是最小值,一定要考虑情况二。实际处理时,dp要开成二维,一个表示开头一个表示结尾。吐槽一下UVA的输入输出,太恶心了成心卡你。AC代码:(非常抱歉不会用刘汝佳的输入)#include <ios...原创 2018-08-31 19:16:17 · 218 阅读 · 0 评论 -
UVA - 12716 GCD XOR
题目链接进行一个类似素数打表的对数打表 统计出有多少符合的对数。重要的是证明c=a-b,建议百度一下我也讲不好。AC代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=3e7+10;typedef long...原创 2019-01-13 17:52:33 · 142 阅读 · 0 评论 -
UVA - 10791 Minimum Sum LCM
给你一个数N,让你求出若干个数使得这若干个数的最小公倍数为N,并且这若干个数的和最小。利用唯一分解定理,将n分解成n = p1 ^ k1 * p2 ^ k2 * ... * pm ^ km,然后求解sum = ∑(1≤i≤m)pi ^ ki就是我们要的答案,虽然我是只知道这样能保证最小公倍数是n但是不知道为什么这样是最小……(看大佬的题解 大概是保证各个因子是互素,否则可以让他们各除以最大公约...原创 2019-01-13 17:09:50 · 126 阅读 · 0 评论 -
UVA - 12169 Disgruntled Judge
题目链接随机选取x1,a,b,根据公式xi=(a*xi-1+b)%10001得到一个长度为2*n的序列,奇数项作为输入,求偶数项,若有多种,随机输出一组答案。按照x2和x3的公式联立,可以获得一个关于x1和x3的同余方程。然后利用拓展欧几里得枚举a解出一个b0,然后找出可行的b。虽然说会说但是我完全是懵逼的哈哈哈哈哈哈哈。AC代码:#include <iostream&...原创 2019-01-13 16:14:28 · 159 阅读 · 0 评论 -
UVA - 11582 Colossal Fibonacci Numbers!
设f(x)是菲波那切数列中第x个数,求f(a^b)mod n的值。首先我们要知道一个结论:斐波那契数列对n取余,它的余数列是有周期性的。这样对于一个很大的数,我们只需找出它在周期中处于第几个位置,然后找出相应的余数就行了。这样就把问题化为找斐波那契数列的余数列,和找出余数列的周期。根据加法取余定理,我们只要在算出f[i]后直接f[i]=f[i] mod n即为对应的余数。周期只要判断第几个...原创 2019-01-12 17:49:25 · 149 阅读 · 0 评论 -
CodeForces - 988C Equal Sums
You are given kk sequences of integers. The length of the ii-th sequence equals to nini.You have to choose exactly two sequences ii and jj (i≠ji≠j) such that you can remove exactly one element in ea...原创 2018-09-18 19:31:43 · 218 阅读 · 0 评论 -
UVA - 1220 Party at Hali-Bula
题目链接加了判断唯一性的最大独立集。d(u,0)表示u为根不选u的最大,(u,1)表示选u的最大。f( ,)表示相应的唯一性。对d(u,1)来说,选了u,则u的子节点都不能选。那么d(u,1)就是所有子结点不选时的d值的和。要所有子结点不选时的方案唯一才能唯一。对d(u,0)来说,每个子阶段可选可不选,所以要挑两种情况中的最大值,这时候当然也要判断唯一性。当某个结点选和不选d值相等...原创 2018-09-06 20:16:09 · 130 阅读 · 0 评论 -
UVA - 1331 Minimax Triangulation
题目链接给一个多边形(可凸可凹),三角剖分它,使得剖分出的最大的三角形面积最小。基本的考虑思路和最优三角剖分一样,但是要用到一些数学姿势(如图)图片来源这样计算三角形面积就很轻松了。然后要判断凹多边形有没有划线划到外面,方法是判断有没有顶点在剖分的三角形里面,也就是顶点和剖分出的三角形顶点分别围成的三个三角形面积是否等于原三角形。AC代码:#include <...原创 2018-09-02 14:16:11 · 242 阅读 · 0 评论 -
UVA - 12186 Another Crisis
公司一个老板和n个员工组成树状结构,老板为根。工人(叶子节点)只能把情愿书提交给直属上司,上次收到的不小于T%时会往上提交,然后层层上报。问最少要多少工人情愿才能成功。设d(u)表示让u给上级发信最少需要多少个工人。假设u有k个子节点,则至少需要c=(k*T-1)/100+1个直接下属发信才行。把所有子节点的d值从小到大排序,前c个加起来即可。最终答案是d(0)。(我直接扒紫书了,因为这道...原创 2018-09-04 21:09:31 · 142 阅读 · 0 评论 -
UVA - 10003 Cutting Sticks
题目地址给你一根长L的木棍和n个切割点的位置,把它切成n+1根木棍(切割点全部切开)。规定费用为切开的木棍的长度,求最小总费用。首先,一根木棍,第一刀切下去费用肯定是L。然后会切出来两根木棍,假设其中一根木棍是i~j,那么切割它的费用就是a[j]-a[i];所以对于每一个木棍,枚举所有中间的切割点,找出切这根小木棍最小的费用。一层层嵌套,到最后就能求出总木棍的最佳费用。学了半天,实...原创 2018-08-29 21:27:43 · 183 阅读 · 0 评论 -
Gym 101064 D Black Hills golden jewels
In Rapid City are located the main producers of the Black Hills gold jewelry, a very popular product among tourists. The main characteristics of these jewels are the designs of leaves and grape cluste...原创 2018-08-09 15:28:17 · 189 阅读 · 0 评论 -
UVa 1608 Non-boring swquences
题目地址给你一个序列 判断里面有没有只出现过一次的元素我们之前做过一道《唯一的雪花》(地址),那一次是利用滑动窗口找没有重复出现元素的子序列,这次我们用相同的思想找每个元素左边和右边最近的相同元素。因为当一个字符只出现过一次时,包含它的子串都是只出现一次的,然后就可以分治。为了保护时间复杂度,要中途相遇,从两头向中间。AC代码:#include <iostream>...原创 2018-07-31 11:29:07 · 132 阅读 · 0 评论 -
UVA - 1603 Square Destroyer
题目链接先考虑小正方形,再考虑大正方形。当前深度加去掉目前正方形的消耗超过最大深度就可以剪枝。利用了二进制储存,非常巧妙。AC代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long LL;int n,...原创 2018-07-19 14:33:12 · 264 阅读 · 0 评论 -
UVA - 1152 4 Values whose Sum is 0
题目链接给四个有n个元素的集合ABCD,各挑一个数abcd使得abcd等于0,问有几种挑法。先枚举c+d存到数组里 然后枚举a+b,看有多少c+d=-(a+b)。统计的时候利用了upper_bound和lower_bound的区别:当存在时,两个的差值就是a+b+c+d=0的个数;当不存在时,两个值相等(没有等于只有大于的数),差值就为0。有推荐使用哈希表的,很遗憾我不会。再吐...原创 2018-07-24 19:21:59 · 98 阅读 · 0 评论 -
UVA - 1605 Building for UN
题目地址给你n个国家,你要造一幢楼,让每个国家都相邻。注意到整幢大楼都是我们自定义的,而且一个国家可以有多个办公室,这就很好办了。直接建一个两层的n*n的大楼,第一层一列都是同一个国家,第二层一行都是同一个国家,这样第一层一行就有所有的国家,而上面接的都是同样的一个国家t,t国家就与所有国家相邻,以此类推。写代码的时候一开始用的是char a='A'然后a++,但是小写和大写字母中间还...原创 2018-07-24 15:19:42 · 129 阅读 · 0 评论 -
UVA - 1374 Power Calculus
题目地址给你一个x和一个n,问你通过多少次乘除操作可以把x变成x^n。根据幂运算原则,实际上就是问1通过最少多少次加减操作能变成n还是IDA*,深度是操作次数,剪枝是t*2^maxd-d<n,即每次操作都是选最大的数自增还达不到n说明走不下去了。AC代码:#include <iostream>#include <cstring>#includ...原创 2018-07-18 13:51:22 · 131 阅读 · 0 评论 -
UVA - 1343 The Rotation Game
链接地址大致就是给你一个井字棋的棋盘,每个格子都有1,2或3三种情况,可以往A-H方向移动,问需要最少多少步能让中心的五个变成同一个数。感觉网上包括刘大佬对这个操作的介绍都很含混,实际上往a移动就是把a方向第一格拿出来放到某位,剩下的往上顶就行。IDA*。深度就是移动步数。因为每次移动中心位置只会变化一格,所以剪枝为d+h>maxd,d为当前深度,h为中心最少有几个数不同,即最少...原创 2018-07-18 11:11:04 · 136 阅读 · 0 评论 -
UVA - 120 Stacks of Flapjacks
题目地址给你一叠煎饼,每个煎饼都有自己的编号,问翻转多少次能让煎饼从小到大排序。贪心,从大到小进行翻转。首先要有一个概念:把一个煎饼翻到它应该在的位置最多需要两步:翻到最上面,翻到应该在的位置。如果已经在最上面只需要一步。从大到小判断时,大煎饼位置到了以后不会影响剩下的煎饼判断(已经在最下面可以直接无视 有点像分治)一直在想怎么写翻转函数,后来才发现stl里已经有了2333 代码在输入...原创 2018-07-23 20:11:22 · 105 阅读 · 0 评论 -
UVA - 12325 Zombie's Treasure Chest
题目地址给你一个体积n的箱子和两种宝物 宝物体积分别为s1 s2,价值分别为v1 v2 问怎么塞能让价值最大。很容易想到枚举宝物1然后求宝物2,或者倒过来。但是当两个的体积都很小时枚举量就会很大。所以分成三种情况:1、s1较大 2、s2较大 3、s1 s2都较小1,2两种情况可以通过前行判断交换位置转换为一种情况,即直接枚举就行。对于三,就利用贪心的思想:拿s2件1和s1件2的...原创 2018-07-17 16:40:07 · 124 阅读 · 0 评论 -
UVA - 11212 Editing a Book
题目链接大致就是给一个1到n的数字组成的乱序数组,问最少剪贴黏贴几次能把它变成一个1到n升序的数组。用IDA* 不正确的数字个数为h 则每个深度h最多减少3(后接数字变化的三个数都对上,减少三) 则3d+h>3maxd就剪枝(当前操作方法减少的不正确数超过最多不正确数)这道题枚举剪切黏贴的方法很值得学习AC代码:/*#include <iostream>#...原创 2018-07-17 14:47:51 · 96 阅读 · 0 评论 -
UVA - 1060 Fill
题目地址大概意思就是给你三个杯子容量为a,b,c 一开始只有c杯子装满水,问多少步倒水操作能让某个杯子里有d升水,不能恰好就接近d升,杯子没刻度。把三个杯子的水量(a,b,c)看做是一个状态,状态和状态之间可以通过倒水实现状态转移。把一个状态作为一个结点,能转移的状态连接起来,就成了有向有环图。通过bfs不断拓展结点(倒水),把获得a升水最少的水量存在ans[a]里,就能求出答案AC代码:#in...原创 2018-07-16 11:17:23 · 97 阅读 · 0 评论 -
UVA - 11134 Fabled Rooks
题目地址类似八皇后,但是把皇后改成车,同时每个车都框定范围放置。把行和列分开,看成两个问题。同时贪心,优先放置在包含它的右界最小的区间。AC代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace ...原创 2018-07-25 14:54:28 · 152 阅读 · 0 评论 -
UVA - 11054 Wine trading in Gergovia
题目地址有若干个村庄,有的村庄买酒有的村庄卖酒,运k单位的酒去邻近村庄要k单位的劳动力,问最少需要多少劳动力。考虑第一个村庄,他的需求肯定是右边的村庄解决的(买进or卖出)需要的劳动力就是abs(a1)。然后把问题变成村庄2-n运酒。村庄2的需求变为a1+a2,然后重复加劳动力的过程。AC代码:#include <iostream>#include <cstd...原创 2018-07-25 15:58:22 · 121 阅读 · 0 评论 -
UVA - 1025 A Spy in the Metro
题目链接你要在T时间到n车站见间谍,同时保证在车站上等待的时间最少。用dp[i][j]表示在时刻i在车站j还要等待的时间。那么dp[T][n]=0(已经到了目的地不需要等待)。然后从后往前推,每个时刻有三种决策:等一分钟、坐向右的车、坐向左的车。因为只要求时间最短,把几种可能里面的最小值记录下来就好。注意输入数据的处理。AC代码:#include <iostream&g...原创 2018-08-04 16:16:00 · 124 阅读 · 0 评论 -
UVA 12174 Shuffle
题目地址你有一个播放器可以随机播放歌曲。你现在有一部分的播放记录,问下一次随机播放有多少种可能性。利用滑动窗口,出现重复的歌曲说明不是一个序列。推荐博文https://blog.csdn.net/hyqsblog/article/details/47000833,把lls的注释都翻译成了中文,通俗易懂AC代码:#include <iostream>using ...原创 2018-07-30 16:27:20 · 150 阅读 · 0 评论 -
UVA1607 Gates
题目链接给你若干个与非门,全部输入是x的时候是一种情况。然后把其中一些输入改成常数,保留最少的x让输出情况和全部输入是x时一样。因为x=0或1,所以输出一共只有四种情况:总为0,总为1,x和非x。所以,x最多只需要一个就行,如果为常数都不用x。因此二分查找x放在哪里就行。注意的是这个输入 看得我很头疼……如果是负数,表示从第x个输入口输入数据,正数表示从第x个门输入数据。AC代码:...原创 2018-07-30 10:22:08 · 201 阅读 · 0 评论 -
UVA - 11572 Unique Snowflakes
题目链接给一个序列,找没有相同元素的最长子序列的长度。从l=0,r=0开始找,目前子序列没有重复就r++,有重复就l++,利用set进行储存。#include <iostream>#include <cstdio>#include <set>using namespace std;int a[1000010];int main(){ ...原创 2018-07-26 15:48:36 · 125 阅读 · 0 评论 -
UVA - 11093 Just Finish it up
https://cn.vjudge.net/problem/36467/origin环形的一个跑道 有若干加油站 问能不能从一个加油站开始跑完一圈如果从a跑到b,则油箱内剩余的油必定大于等于0 所以如果p跑不到p+1,就直接从p+1为起点枚举AC代码:#include <iostream>#include <cstdio>using namespace...原创 2018-07-29 11:21:46 · 131 阅读 · 0 评论 -
Uva 12627 Erratic Expansion
文章又被吞了 傻逼csdnhttps://blog.csdn.net/zyq522376829/article/details/46591661直接看这个吧 注意g的公式是c(k-1)不是c(k),紫书上面写错了带跑一群人原创 2018-07-29 10:15:37 · 153 阅读 · 0 评论