
OJ_UVA
「已注销」
zhangzhang
展开
-
UVA 11093 Just Finish it up(模拟|想法)
题目链接题意环形跑道上有n个加油站,第i个加油站可以加Pi汽油,从i加油站开到下一个加油站需要Qi汽油。任务是选择一个加油站作为起点,可以走完一圈后回到起点。解决从1开始枚举,以每一个点作为起点,如果可以就输出答案;如果当前节点不可以作为出发点,说明到了某一个点tmp不能再继续向下走了,那么从起点到tmp的这些点也肯定不能作为起点。#include<bits/stdc++.h>using name原创 2017-09-09 11:27:08 · 349 阅读 · 0 评论 -
UVA 540 Team Queue(团体队列)
题目链接题意t个团队的人正在排队。 每次新来一个人,如果他有队友在排队,那么这个人会插入到最后一个队友的后面; 如果没有队友在排队,那么他会插入到长队的队尾解决团体队列问题用一个队列all来表示t个队伍组成的队列,元素是队伍编号建立t个队伍内部的队列team[maxn],用来表示团队内部的队列注意当这个人入队时如果他的队伍不在all队列中,要把这个队伍入队(all队列中)注意当一个人离原创 2017-09-09 09:40:42 · 591 阅读 · 0 评论 -
UVA 1595 Symmetry (set)
题目链接题意给出平面上n个点,问是否存在这样的一条竖线,使得所有点左右对称解决根据所有点的横坐标之和求出平均值,即为竖线的水平位置输入的时候把点存在自定义结构体的set中遍历每一个点,看是否能在set中查找到关于竖线对称的点,找不到的话就不存在struct point{ int x,y; point(){} point(int xx,int yy) {原创 2017-09-09 09:05:32 · 312 阅读 · 0 评论 -
UVA 10305 Ordering Tasks(拓扑排序)
[题目链接(https://vjudge.net/problem/UVA-10305)题意n个变量,(u,v)表示u要在v前面,给出所有的(u,v)关系,询问一个合适的排序方案解决典型的拓扑排序具体可以看下代码注释#include<iostream>#include<queue>#include<cstdio>#include<cstring>using namespace std;原创 2017-09-08 22:27:33 · 278 阅读 · 0 评论 -
UVA 572 Oil Deposits(DFS)
题目链接题意给出一个m行n列的矩阵,@字符表示油田,油田可以八连通,询问一共有几个八连块解决我想说对于两个月前(2017.07)的我,我也是连这种简单的DFS都不会的人(⊙o⊙)…经过暑期集训会的东西多了好多好多,如果让我一个人学…怕是要完^_^解决就是DFS深搜一下遍历每一个是’@’的点,让ans+1具体可以看下注释^_^#include<bits/stdc++.h>using na原创 2017-09-08 22:14:47 · 279 阅读 · 0 评论 -
UVA 699 The Falling Leaves(二叉树|DFS)
题目链接题意给出一棵二叉树的先序遍历。 每一个节点都有一个水平位置,它的左儿子在它左边一个单位的位置,右儿子在它右边一个单位的位置。 从左到右输出每个位置的节点权值和解决递归建树即可#include<bits/stdc++.h>using namespace std;const int maxn = 1001;int sum[maxn];void build(int val , int原创 2017-09-08 21:23:20 · 306 阅读 · 0 评论 -
UVA 839 Not so Mobile(二叉树|DFS)
题目链接题意输入一个树状天平,每一个天平输入“左质量”、“左力臂”、“右质量”、“右力臂” 当力臂为0的时候说明这边是一个子天平,询问是否能够平衡解决递归建树#include<bits/stdc++.h>using namespace std;bool ok;int tree(){ int Wl,Dl,Wr,Dr; scanf("%d%d%d%d",&Wl,&Dl,&Wr原创 2017-09-08 20:49:55 · 371 阅读 · 1 评论 -
UVA 201 Squares(枚举)
题目链接题意给出一个平面,询问可以构成多少个正方形解决注意V的i,j是反的题意要求长度从小到大输出,我们就枚举长度枚举长度之后枚举左上角判断正方形是否存在注意输出格式#include<bits/stdc++.h>using namespace std;int H[10][10],V[10][10];bool judge(int i, int j, int len) //判断以i,原创 2017-09-08 17:03:47 · 303 阅读 · 0 评论 -
UVA 1149 Bin Packing(贪心)
题目链接题意给出n个长度l1 l2 … ln,一个m。 每一个容器长度为m,可以放一个或者两个元素(两者长度之和<=m),询问为了装下这n个元素需要多少个容器(最少)解决思路是排序后从小到大开始选,那一个大的之后看能不能再拿一个最小的,如果能拿最小的就等价于这两个能放在同一个容器中,如果不能拿就说明最大的这个只能单独占据一个容器。 1. 从小到大排序 2. 从大的开始选,每次让ans+1,能选原创 2017-09-08 16:30:58 · 344 阅读 · 0 评论 -
UVA 1339 Ancient Cipher(映射 | 想法)
UVA 1339 Ancient Cipher题意给出两个字符串,可以重新排列可以自由映射,把其中的一个字符映射到另一个字符。询问是否存在一种一一映射方式,使得原来的字符串可以映射到目标字符串解决由于可以重新排列,所以字符的位置不重要(这点以后会游泳,记住) 由于本题中的映射只能一对一,所以要求如果我们记录下26个字符每个字符出现的次数,并对字符出现的次数进行排序,str1(原串)里一个字符出现原创 2017-09-05 17:09:18 · 239 阅读 · 0 评论 -
UVA 514 Rails(模拟|栈)
题目链接题意n个火车进站,给出一个给定的n个火车的出站顺序,问是否可行解决栈模拟,主要分三种情况 1. 一进栈就直接出栈 2. 目标编号和栈顶元素相同,栈顶元素出栈#include<bits/stdc++.h>using namespace std;int main(){ int num[1005]; while(1) { int n;原创 2017-08-30 11:22:38 · 301 阅读 · 0 评论 -
UVA 10285 Longest Run on a Snowboard(记忆化搜索|动态规划入门)
题目链接题意给出一个m x n的地图,要求寻找地图上严格下降的最长路径解决入门动态规划我们使用dp[i][j]保存“从当前节点出发,能走的最长路径的长度”对每一个点进行一次dfs,dfs的同时保存dp[i][j]注意记忆化搜索,一个节点计算过,就不必再次计算了,使用vis[i][j]保存当前节点是否访问过#include<bits/stdc++.h>using namespace std;原创 2017-08-28 19:41:46 · 347 阅读 · 0 评论 -
UVA 11572 Unique Snowflakes(滑窗|双指针)
UVA 11572 Unique Snowflakes(https://vjudge.net/problem/UVA-11572)题意一个长度为n的序列A,找到一个尽量长的连续子序列,并且该序列中没有相同元素解决以区间来思考这个问题,让右指针不断增加,增加到一个不能增加(冲突)的位置当无法延伸右指针,也就是说A[right]在A[left,right-1]这段出现过,此时增大左指针我们增加左指原创 2017-08-23 09:27:20 · 481 阅读 · 0 评论 -
HDU_1016 Prime Ring Problem(素数环|经典回朔|DFS)
HDU_1016 Prime Ring Problem题意题意就是经典的素数环….解决经典的回朔问题可以写出一个判断当前数字是否是素数的函数DFS的过程是一个不断试图对当前位置填方数字的过程回朔的时候记得取消vis数组的标记#include<bits/stdc++.h>using namespace std;int n,num[25],vis[25];int prime[12]={2原创 2017-08-20 23:40:53 · 283 阅读 · 0 评论 -
UVA 12563 Jin Ge Jin Qu hao(01背包|经典动态规划)
题目链接题意可以参见紫书P274 1. n首歌,在t-1秒内唱完 2. 唱完之后唱678s的金曲,这样就能使唱的时间最长 3. 我们要先保证唱的总曲目最多,当曲目相同的时候保证总时长最长解决 经典的01背包问题考虑到状态比较复杂,有曲目,有时长.我们把状态用一个结构体来表示这里参考了下博客,用了滚动数组要注意一下,如果前n首的总时长<=t-1,那么这n首歌都可以唱注意一下我们最原创 2017-08-20 00:10:19 · 278 阅读 · 0 评论 -
UVA 1152 4 Values whose Sum is 0 (二分)
UVA_11524题意给出A B C D四个集合,要求从每个集合中选择a b c d使得a+b+c+d=0。 问有多少种选择方法?解决意识到O(n^4)的算法会超时通过枚举a+b的所有可能,查找-c-d的个数,累加即可注意数组比较大,开在全局里面#include<iostream>#include<cstdio>#include<algorithm>using namespace s原创 2017-08-19 19:30:16 · 231 阅读 · 0 评论 -
UVA 725 Division(暴力枚举 简单)
UVA 725 Division题意输入n,输出满足abcde/fghij=n的表达式(从小到大),其中a~j是0~9的一个排列解决枚举fghij,算出abcde,然后判断一下0~9的数字有没有被无重复的用完就是注意一下,0~9的每一个数字都要用到int used[10];bool judge(int a,int b){ if(b>98765) return false;原创 2017-08-19 18:19:08 · 375 阅读 · 0 评论 -
(二叉树建树 先序遍历)UVA_122 Trees on the level
UVA_122 Trees on the level题意让我们构建一棵树,给出每一个节点是从根节点怎么走才能走到. 比如(11,LL)就是根节点的左子树的左子节点的位置权值为11.然后让给出这棵树的先序遍历结果. 如果出现下列情况,输出”not complete” 重复赋值 没有根节点 有节点没有被赋值 给出超过一个节点 解决这个题的输入比较坑啊,刚上来感觉解决不了…原创 2017-08-16 23:19:35 · 351 阅读 · 0 评论 -
UVA_1600 Patrol Robot
题目UVA_1600 Patrol Robot 题意机器人从地图左上角走到地图右下角. 地图上有障碍物,机器人最多可以连续跨越k个障碍物(注意没有要求必须是直线),询问最短路径解决在正常的BFS上面增加一些条件增加vis数组的第三个维度.第三个维度表示在当前位置,已经穿越的障碍物数量为level的情况是否已经被处理注意同一地点,不同level不冲突,比如vis[1][2][2]==1,当访问原创 2017-08-16 07:19:43 · 354 阅读 · 0 评论