
UVa Online Judge
ramay7
Life is not short,but float.
展开
-
UVA 624 CD(01背包/记录路径)
题目链接: UVA 624 CD 题意: 给出n个物品和总价值P,每个物品有一个价值,输出由这些物品组成价值和最接近P的价值(不能超过P)和和这些物品编号。 如果有多种方案任意输出一种。 分析: ①:先用类似01背包的思路对小于等于P的价值和进行可行性分析,然后找到最大能组成的合法价值和。根据这个价值和对原来的物品 dfs搜索。 ②:在找最大价值的过程中记录组成价值和的最后一件商品编原创 2016-03-30 14:51:58 · 531 阅读 · 0 评论 -
UVA 11255 Necklace(每种颜色珠子个数限制、Polya原理、组合数)
题目链接: UVA 11255 Necklace 题意: 各有a,b,c(a,b,c≥0,a+b+c≤40)a,b,c(a,b,c \geq 0, a+b+c \leq 40)颗三种颜色,问这些珠子能串成的项链有多少种?考虑翻转和旋转。 分析: 令∑3i=1color[i]=n\sum_{i=1}^{3}color[i]=n,即珠子总数。考虑旋转置换。我们考虑旋转ii颗珠子的间距,则原创 2016-06-10 22:38:57 · 1725 阅读 · 1 评论 -
UVA 10601 Cubes(正方体旋转、Polya计数)
题目链接: UVA 10601 Cubes 题意: 给出12根等长的火柴棒,每根火柴棒的颜色属于1−61-6中的一种,问能拼成多少种不同的正方体?(考虑旋转变换) 分析: 首先正方体的旋转置换有2424。下面将每个循环内元素的个数称为循环的长度。注意是棱边的置换循环,而不是面的置换循环静止。只有一种置换。有1212个循环,每个循环的长度为11。以相对面的中心为轴旋转。可以旋转的角度是9原创 2016-07-10 14:52:06 · 1229 阅读 · 0 评论 -
UVA 111 History Grading(题意杀,最长公共子序列)
题目链接: UVA 111 History Grading 题意: 【题意杀!】 先给出nn个事件的正确发生时间顺序,在给出一些学生排出来的时间发生时间顺序,有两种得分方式; 在相应的时间点发生事件相同则得1分 可以得到的分数等于发生事件的相对时间顺序正确的最长长度求按照第二种方式可以获得的得分? nn范围:2≤n≤202\leq n \leq 20denotes the rank原创 2016-07-23 15:59:02 · 557 阅读 · 0 评论 -
UVA 10635 Prince and Princess(最长公共子序列转为最长上升子序列)
题目链接: UVA 10635 Prince and Princess 题意: 给n,p,qn,p,q表示接下来两行会给p+1p+1和q+1q+1个数。每个数都不超过n∗nn*n,且每行的数字各不相同,所以p和qp和q也满足:1≤p,q<n1\leq p,q < n。求两个序列最长的上升的数字相同的公共子序列的长度。 数据范围:2≤n≤2502\leq n \leq 250 分析: 最长原创 2016-07-21 00:27:35 · 537 阅读 · 0 评论 -
UVA 10766 Organising the Organisation(生成树计数)
题目链接: UVA 10766 Organising the Organisation 题意: 给出n,m,kn,m,k,代表一家公司有nn个人,编号从1−n1-n,且指定编号为kk的人为总经理,然后有mm组关系,表示a[i]a[i]不想和b[i]b[i]有领属关系,求领属关系图的种类数? 数据范围: 1≤n≤50,1≤m≤n,0≤k≤15001 \leq n \leq 50, 1 \le原创 2016-07-13 12:10:25 · 451 阅读 · 0 评论 -
UVALive 6434 Number Assignment(dp)
题目链接: UVALive 6434 Number Assignment 题意: 将n个数分成m堆使得每堆的最大值和最小值之差的和最小,输出最小差和。n,m<=100. 分析: 先将整个数组排序。dp[i][j]表示将前i个数分成j堆的最小差和。 初始化:dp为INF,但是dp[0][j]为0。 状态转移方程: 考虑第i个数所在堆的最小值。那么剩下的数分成j-1堆,又因为数据是从小到原创 2016-04-13 17:53:24 · 684 阅读 · 0 评论 -
UVALive 6835 - Space Golf(简单解析几何)
题目链接: UVALive 6835 - Space Golf 题意: 一颗子弹最多可以跳跃b次击中d,有n个木板,在跳跃过程中如果有木板挡住了,就不能往后跳跃了。 求最小初速度。 分析; 因为d已知,可以枚举跳跃次数,那么每次跳跃的长度就知道了。也就是抛物线的开口长度。然后枚举每个木板,得到要跳跃这个木板的最低抛物线高度,然后就知道了需要跳过所有木板的最低高度。 通过物理学公式和数学原创 2016-04-17 23:50:01 · 525 阅读 · 0 评论 -
UVALive 7004 Inside, Outside or On(判断点在多边形边上/内部/外部)
题目链接: UVALive 7704 Inside, Outside or On 题意: 顺时针给出多边形的顶点,另给出一点,判断额外点是在多边形边上还是多边形内部,还是多边形外部?/**/#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <climits>#inc原创 2016-05-01 19:14:57 · 665 阅读 · 0 评论 -
UVALive 4617 Simple Polygon(顺/逆时针输出所有点/极角排序)
题目链接: UVALive 4617 Simple Polygon 题意: 将平面所有点都用上,构成一个多边形,顺时针(或逆时针)输出点的顺序。 分析: 多边形有可能是凸的也有可能是凹的。 先找到最左下角的点(x值优先),然后对其余点以最左下角为基点极角排序。除去最左侧的一系列和point[0]共线的点,其余的点的顺序即是逆时针的点的顺序。#include <cstdio>#inclu原创 2016-04-23 01:06:33 · 645 阅读 · 0 评论 -
UVALive 6092 - Catching Shade in Flatland(线段和圆交线段最大长度)
题目链接: UVALive 6092 - Catching Shade in Flatland 题意: 给nn个都在(±400,±400)(\pm 400,\pm 400)的圆,有一条线段(0,0)−(0,500)(0,0)-(0,500)绕原点24小时旋转一圈,记录每一分钟和这些圆交线段的长度,求最大长度。#include <iostream>#include <cstdio>#incl原创 2016-07-02 09:23:06 · 695 阅读 · 0 评论 -
UVALive 6693 - Flow Game(点在线段上判断)
题目链接: UVALive 6693 - Flow Game 题意: 给一个n∗nn*n的方格和方格边界上的四个点,分别标号是1,1,2,2代表两条折线段的起点和终点,问将折线段连接且不相交的最短距离是多少?相交时输出−1-1。 分析: 主要是点在同一条边时的特判比较麻烦。#include <iostream>#include <string>#include <cstring>#i原创 2016-07-02 09:34:41 · 408 阅读 · 0 评论 -
UVALive 6697 - Homework Evaluation(dp,字符串匹配得分)
题目链接: UVALive 6697 - Homework Evaluation 题意: 给出两个字符串,用第二个去匹配第一个字符串,第二个字符串中的字母可以看成:新插入的,有丢失的,正确匹配的,不正确的。正确的+8分错误的-5分插入或删除一个字母-3分连续插入或删除额外扣除-4分例如: Whatagreatisl/andtovisit gr//tisllam原创 2016-07-03 22:45:39 · 780 阅读 · 0 评论 -
UVALive 6694 - Toy Boxes(思维+二分)
题目链接: UVALive 6694 - Toy Boxes 题意: 有nn个物品,需要分在三个箱子里,每个箱子的花费是(箱子中物品个数∗箱子中物品的总重量(箱子中物品个数*箱子中物品的总重量(箱子重量忽略不计),求总花费最少是多少?(n≤20000,每个物品的重量≤1000)(n \leq 20000,每个物品的重量\leq 1000) 分析: 先考虑将其分为两堆的情况。我们需要证明一个原创 2016-07-02 10:13:59 · 909 阅读 · 0 评论 -
UVA 11916 Emoogle Grid(离散对数、BSGS算法)
题目链接: UVA 11916 Emoogle Grid 分析: 处理得到最后会得到需要求解式子:ax=b(modp)a ^ x = b (mod p),其中a,b,pa, b, p已知,求xx的最下解。保证有解。 离散对数。用到了BSGS(大步小步算法)。#include <iostream>#include <cstdio>#include <cstring>#include <s原创 2016-07-15 19:16:35 · 540 阅读 · 0 评论 -
UVALive 4986 Dome of Circus(三分、凸包、凸性函数)
题目链接; UVALive 4986 Dome of Circus 题意: 在空间中给nn个点的坐标,并且每个点都是在zz轴的正半平面内,以原点(0,0,0)(0,0,0)为底面圆圆心,画一个圆锥,要求圆锥要包含所有的点,点可以在圆锥面上,求最小的圆锥体积的底面圆半径和高。 数据范围:1≤n≤10000,并且所有点的坐标的绝对值都不超过100001 ≤ n ≤ 10000,并且所有点的坐原创 2016-07-22 00:11:53 · 2102 阅读 · 0 评论 -
UVALive 7003 A Balance Game on Trees(树形dp)
题目链接: UVLive 7003 A Balance Game on Trees 题意: 给一个nn个节点和每个节点的儿子的有根树,根为1,初始时树上每个节点的颜色都为白色,现在要将树上的一些节点的颜色染为黑色使得每个白色节点的周围(直接相连的边的另一端)恰好有KK个黑色节点,求最多可以保留多少个白色节点? 数据范围:n≤100,K≤10n\leq 100,K\leq 10 分析:原创 2016-08-17 16:29:40 · 604 阅读 · 0 评论 -
UVALive 3675 Sorted bit sequence(数位dp+二分)
题目链接UVALive 3675 Sorted bit sequence题意将区间[L,R][L,R]内的所有整数按照其二进制表示中1 的数量从小到大排序。如果 1 的数量 相同,则按照数的大小排序。求这个序列中的第KK个数。其中,负数使用补码来表示:一个负数的二进制表示与其相反数的二进制之和恰好等于2322^{32}。 数据规模:L×R≥0,−231≤L≤R≤231−1,1≤K≤min(R−L+原创 2016-09-02 23:50:57 · 718 阅读 · 0 评论 -
UVA 11865 Stream My Contest(最小树形图+二分)
题目链接: UVA 11865 Stream My Contest 题意: 有n个点编号为0–n-1,0为根节点,m条有向边,u,v,w,val表示从u到v的花费是w,可以传输数据的带宽是val, 每个点只可以从指向它的边中选择一个带宽(带宽不可以叠加),一张连通图的带宽是所有连通边中的最小带宽。 问在总花费不超过C的条件下,将n个点连通的最大带宽?如果无法连通输出”streaming n原创 2016-05-21 21:41:30 · 545 阅读 · 0 评论 -
UVA 11183 Teen Girl Squad(最小树形图裸题)
题目链接: UVA 11183 Teen Girl Squad最小生成树裸题。好好敲模板?。。。。。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cmath>#include <ctime>#原创 2016-05-21 00:11:15 · 1160 阅读 · 0 评论 -
UVA 562 Dividing coins(01背包)
题目链接: UVA 562 Dividing coins 题意: 给出n个数,将这n个数分成两堆,使这两堆和尽可能接近,输出两堆和之差的绝对值。 分析: 记n个数的和为sum,则其中一对和一定是<=sum/2,而另一堆和>=sum/2。 那么就可以转化成这个问题:由这n个数组成不大于sum/2的最大数是多少?//0K 13MS#include <cstdio>#include <cs原创 2016-03-30 14:58:34 · 563 阅读 · 0 评论 -
UVA 11551 Experienced Endeavour(矩阵快速幂)
题目链接: UVA 11551 Experienced Endeavour 题意: 给出n个数的数列,每次会由上一次数列的某些数相加生成新的新的数列(每一个数都是如此),然后给出每个数据由上一个数据的那些树得到,问重复r次得到的新数列是什么? 分析: 相当于给出了中间变化矩阵的具体方式,读入每个数的生成方式,r相当于幂,矩阵快速幂很裸的。//0K 26MS#include <cstdio原创 2016-03-21 16:26:35 · 525 阅读 · 0 评论 -
UVA 147 Dollars(完全背包)
题目链接: UVA 147 Dollars 题意: 美元基础面额分为100美元,50美元,20美元,10美元,5美元,2美元,1美元以及50美分,20美分,10美分,5美分。1美元等于100美分。输入一个金额(保证是5美分的倍数),问由基础面额组成这个金额有多少种方法? 如:20美分:5美分*4;5美分*2+10美分;10美分*2;20美分。共4种。 分析: 完全背包。每种基础面额只要合原创 2016-04-03 21:52:07 · 458 阅读 · 0 评论 -
UVALive 6555 Playing Fair with Cryptography(细节处理)
题目链接: UVALive 6555 Playing Fair with Cryptography 题意: 先给出一行字符,可能有空格,标点符号,数字,大小写英文字母等,按照英文字母出现的顺序建立一个5行5列的大写英文字母表格, (I和J占同一格子,且输入保证不会有J或j)然后第二行也是同样的输出,对于每相邻两个英文字母按照题目中的要求在表中找到相应的英文字母输出。 分析: 一定要仔细读原创 2016-03-24 17:11:58 · 551 阅读 · 0 评论 -
UVALive 6838 Flipping Parentheses(线段树、单点更新、区间查询)
题目链接: UVALive 6838 Flipping Parentheses 题意: 给出一个长度为n个串,每个字符只能是’(‘或’)’,而且左括号和右括号个数相等,在操作的过程中,要保证这个串的任意前缀串的左括号个数都要大于等于右括号的个数。 有Q个操作。每次操作输入一个坐标t将(坐标从1~n)这个坐标下的括号取反,即左括号变右括号,右括号变左括号。 对每次输入输出最靠前的一个坐标,使原创 2016-04-17 23:32:47 · 551 阅读 · 0 评论 -
UVALive 7009 Secret Binary Tree(二分查找、dfs)
题目链接: UVALive 7009 Secret Binary Tree 分析: 先用dfs把所有可能的构造方案都处理出来,然后用二分查找处理出s[i],排序。 要想使的secret number最小,一定是将比较大的数放在完全二叉树的最下层,将小的数放在完全二叉树的倒数第二层。#include <iostream>#include <cstdio>#include <cstring>原创 2016-05-01 17:16:34 · 540 阅读 · 0 评论 -
UVA 11827 Maximum GCD(gcd, getline)
题目链接: UVA 11827 Maximum GCD 题意: 给出T,代表测试样例,每行是一个样例,会有M个数,求出M个数两两gcd的最大值。M<100. 分析: 唯一麻烦的就是M是未知的,也就是不知道这一行究竟有多少个数.用getline + string读入,然后在转化成数字即可。#include <iostream>#include <cstdio>#include <cstr原创 2016-05-27 02:11:53 · 466 阅读 · 0 评论 -
UVA 10200 Prime Time(素数判定)
题目链接: UVA 10200 Prime Time 题意: 根据公式n * n + n + 41 求出在区间a<= n <= b的n算出的结果是素数的概率。0<= a <= b <= 10000. 分析: 预处理一下,要不然会TLE。前缀和的路子。输出需要注意精度,要不然会WA,我也不知道这里怎么会有坑。。。。#include <iostream>#include <cstdio>#原创 2016-05-27 02:13:03 · 1229 阅读 · 0 评论 -
UVALive 11419 SAM I AM (最小点覆盖输出)
题目链接: UVALive 11419 SAM I AM 题意: 在一个R*C的网格上放了一些目标.可以在网格外发射子弹,子弹会沿着垂直或者水平方向飞行,并打掉飞行路径上的所有目标. 计算最少需要多少子弹,各从哪些位置发射,才能把所有目标全部打掉. 输入第一行为R,C,N(R,C<=1000,N <= 100000)表示网格的大小和目标个数.接下来N行每行包含两个正数r[i]和c[i]原创 2016-05-14 03:30:04 · 460 阅读 · 0 评论 -
UVALive 3415 Guardian of Decency(最大独立集)
题目链接: UVALive 3415 Guardian of Decency 题意: 刘汝佳的大白书P356页上的题目. 最大独立集.#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cma原创 2016-05-14 03:31:17 · 456 阅读 · 0 评论 -
UVALive 4043 Ants(最大权匹配)
题目链接: UVALive 4043 Ants 题意: 给出平面上n个白点和n个黑点的点坐标,将这n个白点和n个黑点用n条不相交的线段连接,输出每个白点连接的黑点的编号. n<=100. 分析: 假设有两个白点a1,a2和两个黑点b1,b2,且当前匹配为a1-b1,a2-b2.如果线段a1-b1和线段a2-b2相交, 可以得到距离关系dis(a1, b1) + dis(a2, b2)原创 2016-05-14 03:32:47 · 455 阅读 · 0 评论 -
UVALive 3989 - Ladies' Choice(稳定婚姻匹配)
题目链接: UVALive 3989 - Ladies’ Choice 题意: 有n对男女,先给出每个女生对n位男生的选择意向,排在前面的优先选择,然后给出n位男生的选择意向,排在前面的优先选择. 输出每位女生的匹配,使得每位女生都是稳定的最佳选择./*下面算法中存储女生的选择意向时有两种选择:队列和数组.把注释部分去掉//即是队列写法.*/#include <iostream>#i原创 2016-05-14 03:34:50 · 473 阅读 · 0 评论 -
UVALive 11383 - Golden Tiger Claw(最小权匹配)
题目链接: UVALive 11383 - Golden Tiger Claw 题意: 给出一个n*n的矩阵,需要对每行和每列定义行值row[i]和列值col[j],使得对于矩阵中任意一个数值w[i][j]满足row[i] + col[j] >= w[i][j],求满足条件的行值和列值满足sigma(row[i] + col[i]) (1<=i<=n)最小. 先在一行输出所有的行值row[原创 2016-05-14 03:28:44 · 364 阅读 · 0 评论 -
UVA 11752 The Super Powers(至少是两个正整数的幂的幂数)
题目链接: UVA 11752 The Super Powers 题意: 求出1~2^64 - 1范围内的所有幂数,并且每个幂数至少是两个正整数的幂。 分析: 要用unsigned long long。 对于任意正整数x它的指数k只要k不是素数,那么x^k必然可以表示成两个不同的正整数的幂。例如512 = 2^9 = (2^3)^3 = 8 ^3 需要知道底数和指数的范围,然后判断指数原创 2016-05-29 11:28:05 · 541 阅读 · 0 评论 -
UVA 11428 GCD - Extreme (II)(G=∑ ∑GCD(i, j)(1<=i<N,i+1<=j<=N,欧拉函数)
题目链接: UVA 11428 GCD - Extreme (II) 题意: i<N j≤N给定n求:G = ∑ ∑ GCD(i, j) (n <= 4000000) i=1 j=i+1分析: 令sum[n]为题式中答案。考虑递推 sum[n] = sum [n - 1] + gcd(1, n) + gcd(2, n) + gcd(原创 2016-05-29 11:35:31 · 1610 阅读 · 0 评论 -
UVA 10820 Send a Table(欧拉函数)
题目链接: UVA 10820 Send a Table欧拉函数。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#include <cmath>#include <ctime>#include <cassert>原创 2016-05-31 01:19:17 · 619 阅读 · 0 评论 -
UVALive 6442 Coins on a Ring(二分查找答案)
题目链接: UVALive 6442 Coins on a Ring 题意: 一个圆环上有n个位置,编号为0–n-1,已知存在m个点,需要移动这些点使得这些点两两间隔距离为n/m,输入保证m是n的因数,问最移动每个点的最大步数的最小值是多少?即在所有可行方案中,第i个方案有一个单点移动最大值move_max[i],需要知道min(move_max[i])。 分析: 因为数据范围是n<=1原创 2016-04-24 17:38:36 · 463 阅读 · 0 评论 -
UVA 1386 Cellular Automaton(循环矩阵)
题目链接: UVA 1386 Cellular Automaton 题意: 给一个n个数组成的数环,每次取每个数左右范围d的所有数(包括本身和距离是d的数)相加和mod m生成新的数, 问操作k次后的数环是怎样的? 分析: 主要是n太大了,n<=500,拿样例 5 3 1 1 1 2 2 1 2 来说。可以构造矩阵,其中d=1.| 1 1 0 0 1 || 1 1 1原创 2016-03-21 20:46:38 · 503 阅读 · 0 评论