uva 和 LA真题
文章平均质量分 54
apsara-jueying
阿里云菜鸟攻城狮
展开
-
11995 - I Can Guess the Data Structure!(给出操作和结果确定是哪种数据结构)
//这题就没什么好说的了 给出操作 push 和 pop 看看这种结构是哪种数据结构分别是栈 队列 优先队列 直接三种各种试一遍就可以了如果一共有超过一种 就是not sure一种没有是impossible其余输出结构名称 #include#include#include#includeusing namespace std;struct Node原创 2013-01-22 14:17:11 · 448 阅读 · 0 评论 -
la3905 Meteor 流星 事件触发
这个题目也是以前看过的 当时没有敲的勇气。今天看懂了。题目实在是太巧妙了啊。。acm的真题果然不一般。在一个平面内有一个矩形然后给出n个流动的流星的初始位置和速度向量求出最多同时多少个流星在这个矩形内还有 这个矩形边界上的流星不算矩形左下角是0.0 右上角是 w h每个流星 四个int 初始位置 x y 和移动向量 a b数据范围是 w h原创 2013-04-21 14:48:48 · 1014 阅读 · 0 评论 -
LA3029最大子矩阵,city Games(求矩阵中最大空格子矩阵,扫描法)
题意就是给出矩阵,nm的 F代表空地 R代表障碍要找出面积最大的子矩阵,都是空地输出面积乘以三后的结果。很多次遇到矩阵 最大子矩阵的问题了,,市赛就有都不怎么会。。这个题思想还是很好的。。就是维护三个数组,对于位置i,j up[i][j],表示以i,j为下边界,最长的的长条的长度left[i][j],表示 上面提到的那个条,往左边扫描,能走到的最远的列,当然一旦原创 2013-04-22 23:04:07 · 495 阅读 · 0 评论 -
uva 10795A Different Task(递归求解另一种汉诺塔)
#includeusing namespace std;typedef long long LL;const int maxn=65;int n,start[maxn],finish[maxn];LL f(int arr[],int i,int final){ if(i==0) return 0; if(arr[i]==final) return f(arr,i-1,原创 2013-03-27 21:45:47 · 604 阅读 · 0 评论 -
11078 Open Credit System(找出序列中的最大的差 a-b a在b左边)
/* 很简答的一道题 优化到 O(n)的复杂度 每一次输入一个值后记录当前最大的arr[i] 然后如果减去新的值 比ans大了 就更新ans 如果新的值比arr[i] 大了 就更新maxi*/ #include#includeusing namespace std;const int maxn=100005;int arr[maxn];int main(){原创 2013-01-22 14:21:10 · 610 阅读 · 0 评论 -
uva 11462 Age Sort(桶式排序)
这个题目很明确的说了内存不够用 编程珠玑的第一讲就谈过这种排序问题适用的就是 数据范围很小 而且数据很大的情况 #include#includeusing namespace std;const int maxn=101;int arr[maxn];int main(){ int n,i,j,a; while(scanf("%d"原创 2013-01-22 14:22:16 · 617 阅读 · 0 评论 -
LA 3971 Assemble(组装电脑 最小值最大 二分答案)
二分答案这个思想用过了。非常好的思想,题意是你有b元钱 需要组装一台电脑 先给出n和b 分别代码有n个配件可供选择 一共有b元钱接下来n行 每行描述一个配件 种类名 名称 价格 品质因子 品质因子越大越好 种类和名称是字符串要求每个种类选一个 输出最小品质因子的最大值。 这个值肯定在品质因子的最小值和最大之间 二分这个答案每次二分到的mid 查看是否ok ok就表示原创 2013-02-01 21:21:54 · 584 阅读 · 0 评论 -
LA 3708 Graveyard (墓地雕塑,给一个环 加入m个点后求原来的点最小
/*这个题目就是说 给出n个点围城一个圈。现在又要加入m个点 圈的长度不变 所有点之间距离要相等就是说这些点要均匀现在要加入m个点后还均匀 所以原来的n个点就要移动求出移动的最小距离其实只要移动n-1个点 因为一定有一个点是可以不移动的。以这个点为起点 对于剩下的n-1个点我们首先算出这个点在新的环中的距离 这个距离就是说 i/n *(m+n) 这里我们假设两个点之间距离为1算出这原创 2013-01-24 16:39:48 · 898 阅读 · 0 评论 -
UVa - 11997 - K Smallest Sums
这个题目的意思就是给出一个 k*k 的二维数组 从每一行取一个数相加 然后一共可以得到k^k种结果 现在要求这些结果中最小的k个 按升序打印出来。一开始的想法太简单了 wa掉了 想了一下知道为什么wa了之前的思路是 找出k个数组中每个数组的最小值 这样得到的肯定是最小的那么再找其余k-1个最小值 我保存了 每个数组中的值减去那个最小值得到的结果这样原创 2013-01-24 16:36:39 · 362 阅读 · 0 评论 -
uva 10881 Piotr's Ants (蚂蚁在一条线上行走 相遇转向的问题) (
/*相遇转向问题,题意为 长度为L的木棍上 有n只蚂蚁,每只蚂蚁有一个初始运动方向,两只蚂蚁相遇后立刻掉头。每秒走一个单位 求T秒后每只蚂蚁的顺序 要求按照输入时的顺序输出我们这样想 当两只蚂蚁相遇后。如果忽略细节 其实可以认为是连个招呼都没打就对穿而过了假如一只蚂蚁想右运动 如果和一只向左边走的蚂蚁相遇了,那么蚂蚁还是一左一右所以说 对于每只蚂蚁 我们现在假设他就按照原来的情况走 那原创 2013-01-24 16:40:52 · 721 阅读 · 0 评论 -
uva 11549 Calculator Conundrum(Floyd 判圈法 和 stringstream的应用)
/*题意就是给出整数n和k n表示这个计算器能显示的位数k表示要计算的数字 要算k的平方 结果取高n位 再平方 再取高n位求这个过程最大的值是多少 那么这个过程必然是循环的stringstream虽然慢 但是一种不错的方法还有floyd判圈法 就是两个小孩 一个速度是另一个的两倍当第一个小孩跑了n步 也就是一个循环节的时候第二个已经跑了2n 两个循环节 这时候他俩相等了 都等于初始的那原创 2013-01-24 16:39:05 · 556 阅读 · 0 评论 -
uva 11991 Easy Problem from Rujia Liu?
题意就是 给出数字n 和m 现在给n个数 然后给m个询问每次询问两个数字a b 问的是在这个数列中第a个b的序号是多少。。。这个肯定要log n 的复杂度以内但是数据量很大也没发开二维数组所以用map 第一次用map里面的东西是vector的容器套容器啊这题就这个一个亮点了 #include#include#includ原创 2013-01-24 16:38:15 · 343 阅读 · 0 评论 -
LA 3135 Argus (2004北京 模拟系统调度 优先队列实现)
题目还是蛮简单的 应该是当年北京站的水题吧就是说给出一堆任务 每个任务有 qnum 和 timeqnum表示优先级 越小优先级越大time表示循环时间 就是每隔time时间 这个任务就得再进队列一次优先级首先是时间 其次是qnum 这样重要的就是struct里 重载的 小于号了最大的先出队列这里就是时间最小的先出队列如果时间相等的话原创 2013-01-24 16:37:26 · 728 阅读 · 1 评论 -
LA2678 - Subsequence(求序列中长度最短的和>=S的子序列长度)
自己看完题目敲了。。给出n s然后n个数的序列要从序列中找子序列 使得和大于s 要序列长度最小 求这个长度这题目 看了就想到双指针了 敲后过了 在注释里写思想吧#include#include#include#includeusing namespace std;const int maxn=100000+10;int arr[maxn];int main(原创 2013-04-21 16:05:13 · 836 阅读 · 0 评论