- 博客(18)
- 资源 (2)
- 收藏
- 关注
原创 UVa 11074 - Draw Grid
题目:绘制方形格子,边界用'*',空白百'.',已知边界宽度,空白的宽度和空白的个数,绘图。分析:模拟。直接按照题目绘图即可,关键是计算坐标。 总的大小:S*N + T*(N+1); 空白起点:S*i + T*(i+1),S*j + T*(j+1);说明:(⊙v⊙)。#include #include #include cha
2017-07-31 09:50:52 429
原创 UVa 448 - OOPS!
题目:做一个反汇编器,将16进制码转化成汇编指令。分析:模拟。输入都是合法的按顺序解析即可。 这里用两个问题: 1.指令的格式为:命令+参数(不同指令参数不同,但不变); 2.指令可能分布在相邻的两行,如果发现余下长度不够,则劈接到下一次开头;说明:(⊙v⊙),发现排名提升了(新的排名算法?)#include
2017-07-28 11:25:51 1066
原创 UVa 10284 - Chessboard in FEN
题目:已知一个国际象棋棋牌的压缩状态,问棋盘上不被攻击的未被占据的方格个数。分析:模拟。首先解压棋牌,然后按照每种旗子判断标记,最后统计即可。说明:(⊙v⊙)。#include #include char buf[65];char map[8][9];void move_step(int r, int c, int dy, int dx){ int y = r + dy
2017-07-27 10:46:36 445
原创 UVa 11489 - Integer Game
题目:S和T两个人轮流从一个数字中取出一位扔掉(S先取),谁无法取就结束(包括被对方取完), 已知一个1000位以内的数字,判断谁获胜。分析:数论。分类讨论。 将数字分成三组:mod3=0,mod3=1,mod3=2; 结论1:如果最后只有一个数字不是3的倍数,可以把它当做3的倍数; 结论2
2017-07-26 17:34:42 564
原创 UVa 11588 - Image Coding
题目:图像压缩,图形为二维矩阵,像素用'A'-'Z'表示,找到图像中出现最多的的像素(有多个都算最多), 给予M个字节编码,其他像素给予N个字节编码,问图像编码后的大小。分析:模拟。直接模拟计数即可。说明:一觉醒来,发现排名从461变成了千里之外,这CSDN还能不能用了。#include #include char image[22][22];char
2017-07-26 09:57:18 267
原创 UVa 12247 - Jollo
题目:一个双人卡片游戏,每张卡片上有一个1-52中的不同的某个值,开始每人分发3张牌, 游戏分三轮,每轮每人出异常牌比大小,大的获胜(顺序大,值小的),三局两胜制, 小王子不会玩游戏(认为是随机出牌),现在小王子发了3张牌,而小公主发了2张牌, 问小公主的第三张牌的最大(值最小)为多少时,小王子一定能赢,否则为-1。
2017-07-25 10:38:15 366
原创 UVa 11683 - Laser Sculpture
题目:利用激光切割机切削一个矩形的材料,每次只能从上向下切掉1mm后的矩形, 问切削成如下给出的形状需要切削多少次。分析:线段树,数据结构。将图形看成是二叉树,从上往下按最高的点分段即可。 整个切削过程遇到极大值点就会分成两段,就是一个构造二叉树的过程; 这里不用构造树,利用递归分别计算分段的两个子树即可;
2017-07-24 16:38:44 414
原创 UVa 10702 - Travelling Salesman
题目:有个旅行的商人,在城市间贩卖商品,从某城市A到某城市B有固定利润(B到A的利润可能不同), 城市可以重复到达,有E个城市可以作为终点,从S城市除法,经过T个城市结束,问最大利润。分析:动态规划(DP)。按找经过城市数量为阶段DP即可。 状态定义:f(i,j)为走过i个城市,在j结束时的最大利润; 转移方程:f(
2017-07-23 13:16:37 500
原创 UVa 11313 - Gourmet Games
题目:初始选拔比赛,有n个厨师,每场比赛出席m人,胜利者和余下的人进行下一场比赛; 问最后决赛时的人数是否正好是m个人,一共办多少组比赛。分析:数论。推公式即可。 设共有k+1场比赛,则每场比赛后剩下的人数为f(i): f(1)= n - m + 1; f(2)= n - 2m + 2;
2017-07-21 12:32:11 674
原创 UVa 10382 - Watering Grass
题目:有一块矩形草坪,在中线上有n个喷淋头,可以浇灌圆形的区域,选择最少的喷淋头覆盖整个矩形区域。分析:贪心、会议时间安排。将每个喷淋头转化成对应的区间(计算左右交点),按左交点排序贪心即可。 过程同会议时间安排,这里取区间相交(时间安排取不想交); 按左交点排序,每次找到能够覆盖上次结束位置(右交点)的最远点(右交点最大的)即可。说明:
2017-07-20 16:31:11 609
原创 UVa 12895 - Armstrong Number
题目:判断一个数是否是Armstrong Number,设数字N有n位,则每个数位上的数字的n次方的和为N。分析:数论。直接按照题意模拟即可。说明:不需要考虑溢出。#include #include int armstrong_number(int N){ int S1 = N, order = 0; while (S1) { order ++; S1 /= 10
2017-07-20 11:59:35 390
原创 UVa 11157 - Dynamic Frog
题目:有一只青蛙要去对岸找东西然后返回,因为河水被污染了,所以只能踩着石头过河, 石头有两种:B石头可以无限次使用,S石头使用一次就沉下去了,计算一个路径, 使得最长的跳跃距离最小。分析:贪心,二分。二分最大长度,利用贪心判定是否可以跳过去再回来。 设计贪心策略(最大跳跃距离为L时): 1
2017-07-19 16:34:12 1128
原创 UVa 11804 - Argentina
题目:有10个足球队员,每人有攻击力和防守力,分成两组分别为进攻和防守组,每组5人, 要求:攻击组5人攻击总和最大,相同时防守组防守总和最大,又相同按名字顺序。分析:排序。多级排序,依次为:攻击递减、防御递增、名字递增。说明:输出时要按名字顺序,需要组内再次排序。#include #include #include typedef struct _pl
2017-07-16 09:47:35 257
原创 UVa 10881 - Piotr's Ants
题目:有一些蚂蚁在一根棍子上爬行,每个蚂蚁有一个初始位置和方向,如果蚂蚁相撞则掉头, 蚂蚁的速度为1,问时间T后,各个蚂蚁的位置和方向。分析:模拟。如果蚂蚁没有区别,那么相撞可以忽略,认为各自继续前行。 因为有上面的结论,在考虑编号的时候,只要在运动后,按照初始的顺序给予编号即可; 首先,计算初始时每个蚂蚁的位置顺序
2017-07-14 16:36:39 508
原创 UVa 12461 - Airplane
题目:坐飞机,一号乘客的票丢了,所以随机选择了一个座位。之后的乘客按顺序乘坐, 如果他的座位未被别人占据,则他坐在对应的编号,否则随机选取剩下的座位, 问最后一个客人坐在编号n的位置上的概率。分析:数学题。证明概率恒定为1/2,利用置换群构造证明。 首先,写出n = 2,3,4的情况,发现概率均为1/2:
2017-07-13 18:00:35 471
原创 UVa 11710 - Expensive subway
题目:上班坐高铁,需要购买月票,选择能够到达所有城市的最小花费的月票。分析:图论,最小生成树。利用prim算法求解即可。说明:(⊙v⊙)。#include #include #include using namespace std;const int INF = 100000000; int path[404][404];int used[404], dist[404
2017-07-12 18:18:51 419
原创 UVa 10670 - Work Reduction
题目:今天有N个任务需要处理,下班前需要剩下M个任务未完成,有很多代理公司可以帮忙, 他们分别有两种业务,完成1个任务需要花费A,完成剩余工作的一般需要花费B, 如果全都让代理公司处理,求每个代理公司的最小花费。分析:贪心。每次将余下的一半当做一个整体,判断那种花费小即可。 如果剩余奇数个任务,代理公司会处理掉整除
2017-07-10 17:18:53 335
原创 UVa 11581 - Grid Successors
题目:有一个3x3的矩阵g,定义函数f(g)为每个元素相邻四个方向的1的个数%2 (奇数为1、偶数为2),定义递归函数f_k(g) = f(f_k-1(g)),计算循环节。分析:数论,循环节。计算上界为2^9一定有重复的状态,存储中间结果判断即可。说明:(⊙v⊙)。#include #include #include #define MAX_SIZE
2017-07-04 22:29:09 417
SOFA: A Multi-Model Framework for Interactive Physical Simulation
2018-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人