- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 JAVA对map按照值进行自定义排序
以POJ的一道题为例http://poj.org/problem?id=2945Find the ClonesTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 8291 Accepted: 3121DescriptionDoubleville
2017-03-14 23:21:32 2026 1
原创 uva 712 S-Tree (S树)模拟
简单模拟即可,注意xi输入的顺序,用一个数组记录从0~n依次是x多少。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int kcase = 1; while(true){
2017-03-14 10:57:27 371
原创 uva 1600 Patrol Robot (草地机器人)BFS
这道题一开始真的没思路,直接dfs,结果WA了;看了题解才知道用bfs,这道题使我加深了对BFS的理解。这道题就是在普通的BFS上加上了一个额外条件,障碍物,所以只需要记录经过每个点时所穿过的障碍物,比如,定义layer表示穿过障碍物的个数,u表示上一个位置,则如果当前位置是1,则layer = u.layer+1,否则layer为0。如果layerTLE代码:import
2017-03-13 23:58:39 663
原创 uva 439 Knight Moves(骑士的移动)BFS
BFSimport java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Main { static int[] dr = {-2,-2,-1,1,2,2,1,-1}; static int[] dc = {-1,1,2
2017-03-12 20:26:46 458
原创 uva 536 Tree Recovery(二叉树重建)
根据先序遍历和中序遍历求后序遍历import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(scan.hasNext()){ String pre = scan.next
2017-03-12 19:53:11 425
原创 uva 673 Parentheses Balance (平衡的括号)堆栈模拟
模拟堆栈,遇到()或者[]就出栈,如果最后堆栈为空则说明合法import java.util.Scanner;import java.util.Stack;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); Stack s =
2017-03-12 19:29:28 275
原创 uva 816 Ancient Messages (BFS)
其实就是BFS求最短路,先说明为什么BFS可以求最短路。因为BFS是广度搜索,是一层一层的,最先到达约定条件的那一层一定是最短的。本题复杂在方向判断上,首先需要用数组has_edge[r][c][dir][trun]来记录从方向dir到达r,c点,转向turn是否可行。然后用d[r][c][dir]来记录从方向dir到r,c的长度,p[r][c][dir]记录从方向dir到r,c的
2017-03-12 11:17:40 246
原创 uva 11853 Paintball
题意:有一个1000x1000的矩形,给若干个圆形障碍(原点,半径,x,y,r),判断能否从矩形的最左边到最右边
2017-03-11 23:34:07 367
原创 uva 10562 Undraw the trees(看图写树)
思路:先将图保存在二维数组,然后对图进行DFS。先找到根节点,然后找根节点的子节点,对子节点DFS。import java.util.Arrays;import java.util.Scanner;public class Main { static int maxn = 200; static char[][] G = new char[maxn+5][maxn+5]; sta
2017-03-11 19:18:16 320
原创 uva 10129 Play On Words(单词)求欧拉回路或欧拉通路
题目:输入n个单词,是否可以把这些所有单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母想同。有向图欧拉回路:1,图连通.2,所有定点入度等于出度有向图欧拉通路:1,图连通.2,仅有两个奇度定点,其中一个入度比出度大1,另一个定点出度比入度大1思路:可以把一个单词看作一条边,单词的首尾两个字母为定点,建立无向图(即G[u][v]=G[v][u]=1),因为欧拉
2017-03-11 10:49:19 374
原创 uva 10305 Ordering Tasks(拓扑排序)
拓扑排序。先理一下思路吧:根据输入建立一个有向图表,然后用一个一维数组vis来记录1~n中某个元素是否已经被访问过。然后从1~n进行循环,如果vis[i]没有被访问过,就对i做dfs搜索。因为是拓扑排序,所以从i一定可以到达排序的最后一个元素,将i到拓扑排序的最后一个元素在dfs的时候记为已经访问过,即vis[i~最后一个元素]=1。在dfs的过程中,一定会到达最后一个元素,所以建
2017-03-09 23:05:09 228
原创 uva 1103 Ancient Messages (古象形文字)
题意:以十六进制的形式给出图像,求所给图像中图像所表示的字母。思路:先建立十六进制对应二进制索引表,输入的时候建立二进制表。需要两次DFS,第一次DFS去掉图像周围的边界部分(既将图像外二进制为0的部分变成其他符号,便于第二次DFS的时候跳过这些边界。这里我用'-'代表被裁掉的边界),第二次DFS,查找图像的边界,一旦找到边界就开始DFS,并将边界所相邻的内0通过第一次的DFS方法变成'-',
2017-03-09 20:32:22 473
原创 uva 548 Tree (根据中序遍历和后序遍历求先序遍历)
import java.util.Scanner;public class Main { static Scanner scan = new Scanner(System.in); static int best_sum = 0; static int best = 0; public static void main(String[] args) { while(scan.has
2017-03-08 20:06:28 265
原创 uva 839 (Not so mobile)天平 ---递归输入
java的写法import java.util.Scanner;public class Main { static Scanner scan = new Scanner(System.in); public static void main(String[] args) { int T = scan.nextInt(); while(T--!=0){ if(solve(
2017-03-07 11:24:36 234
原创 uva 210 Concurrency Simulator (并行堆栈模拟)
模拟一下就好了,可以用Deque双端队列import java.util.Arrays;import java.util.Deque;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Main { static int[] time = new int[
2017-03-05 21:38:45 565
原创 uva 12504 Updating a Dictionary(更新字典)
题意 比较两个字典 按字典序输出所有添加 删除 修改的项 如果没有任何更新 输出 No changesmap的应用 对比两个字典 注意开始字符串的处理和字典可以为空import java.math.BigInteger;import java.util.Collections;import java.util.HashMap;import java
2017-03-05 14:44:17 322
原创 UVA 230 Borrowers(图书管理系统)
题意:模拟图书管理系统,首先输入若干图书的标题和作者(标题各不相同,以END结束),然后是若干指令:borrow指令表示借书,return指令表示还书,shelve指令表示把所以已归还但还没有上架的图书排序后插入书架并输入图书标题和插入位置(可能是第一本书或者某本书的后面),图书排序的方法是先按作者从小到大排序,再按标题从小到大排序。在处理第一条指令前,你应当先将所有图书按照这种方式排序。思路
2017-03-05 09:07:56 446
原创 uva 12100 Printer Queue(打印队列)模拟
思路:按照输入的顺序,将每个任务入队,同时用另一个数组保存这些优先级,然后按照从大到小或者从小到大的顺序对数组排序,表示每个执行的先后顺序。然后对队列进行操作,先从队列头取出一个元素,判断是不是和数组的下标指向的值相等,若相等,则打印的时间数+1,同时数组下标+1或者-1,若不相等,则直接扔到队尾,重新开始下一次循环。(开始理解错题意,认为是把队列中优先级最高的任务直接移除,而忽略了队列只能一
2017-03-04 22:51:10 413
原创 UVA 1595 Symmetry(对称轴)
题意:给定坐标,计算能否找到一条竖线,使左右两边的点对称思路:输入的过程中计算出最左和最右边界,然后计算出中点值,然后对每个点进行遍历,如果找不到一个点满足x1+x2=mid*2&&y1==y2,则说明不合题意,直接break,如果遍历完的话,说明都符合题意,说明可以找到竖线.import java.util.Scanner;public class Main { static in
2017-03-04 19:19:46 590
原创 PREV-31 小朋友排队(树状数组)
历届试题 小朋友排队 时间限制:1.0s 内存限制:256.0MB 问题描述 n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他
2017-03-01 21:24:31 380
原创 PREV-32 分糖果(模拟)
历届试题 分糖果 时间限制:1.0s 内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为
2017-03-01 13:49:34 415
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人