PAT 1032 (未完成)
斗智斗勇系列,这个时间限制太变态了,10^5的数据读进去100ms就完蛋,buffer又不能太多开,但是8M buffer开出来其实也没啥用,还是超时
除去超时数据点,还有一个数据点没有过,不知道是什么边界条件,不管了
判断两条链表是否相交,首先两条链表都走到最后一个节点,如果节点相同,则说明这两条链表是相交的。算出两条链表的长度,len1,len2,max(len1, len2) - min(len1, len2),长的链表先走diff step,再和短的链表一起走,相遇的节点即为共同节点的起始节点。
另外学到了,PAT中的JAVA如果是返回非零,则说明存在着异常。前面有数据点返回非零是因为没有判断null。
1 import java.util.*; 2 import java.io.*; 3 4 class FastReader{ 5 BufferedReader reader; 6 StringTokenizer tokenizer; 7 8 public FastReader(InputStream stream){ 9 reader = new BufferedReader(new InputStreamReader(stream), 1 << 22); 10 tokenizer = null; 11 } 12 13 public String next(){ 14 while (tokenizer == null || !tokenizer.hasMoreTokens()){ 15 try { 16 tokenizer = new StringTokenizer(reader.readLine()); 17 } catch (Exception e){ 18 //System.out.println(-1); 19 throw new RuntimeException(e); 20 } 21 } 22 23 return tokenizer.nextToken(); 24 } 25 26 public int next_int(){ 27 return Integer.parseInt(next()); 28 } 29 } 30 31 class Node{ 32 int address; 33 int next_address; 34 Node next; 35 36 public Node(){ 37 next = null; 38 } 39 } 40 41 public class Main { 42 public static void main(String[] args){ 43 FastReader reader = new FastReader(System.in); 44 int first_start, second_start; 45 int N; 46 47 first_start = reader.next_int(); 48 second_start = reader.next_int(); 49 N = reader.next_int(); 50 51 Node[] nodes = new Node[N]; 52 53 for (int i = 0; i < N; i++){ 54 int cur_address = reader.next_int(); 55 reader.next(); 56 int next_address = reader.next_int(); 57 58 Node node = new Node(); 59 node.address = cur_address; 60 node.next_address = next_address; 61 nodes[i] = node; 62 } 63 64 Node first_word = null, second_word = null; 65 for (int i = 0; i < N; i++){ 66 Node cur_node = nodes[i]; 67 if (cur_node.address == first_start) 68 first_word = cur_node; 69 else if (cur_node.address == second_start) 70 second_word = cur_node; 71 for (int j = 0; j < N; j++){ 72 Node candidate_node = nodes[j]; 73 74 if (cur_node.next_address == candidate_node.address){ 75 cur_node.next = candidate_node; 76 break; 77 } 78 } 79 } 80 81 int len1 = 0, len2 = 0; 82 Node first_ptr = first_word, second_ptr = second_word; 83 84 if (first_ptr == null || second_ptr == null){ 85 System.out.println(-1); 86 return; 87 } 88 89 while (first_ptr.next != null){ 90 first_ptr = first_ptr.next; 91 len1++; 92 } 93 while (second_ptr.next != null){ 94 second_ptr = second_ptr.next; 95 len2++; 96 } 97 98 if (first_ptr != second_ptr){ 99 System.out.println(-1); 100 return; 101 } 102 103 int diff_step = Math.max(len1, len2) - Math.min(len1, len2); 104 if (len1 < len2){ 105 first_ptr = second_word; 106 second_ptr = first_word; 107 } else { 108 first_ptr = first_word; 109 second_ptr = second_word; 110 } 111 112 for (int i = 0; i < diff_step; i++) 113 first_ptr = first_ptr.next; 114 while (first_ptr != second_ptr){ 115 first_ptr = first_ptr.next; 116 second_ptr = second_ptr.next; 117 } 118 119 System.out.println(first_ptr.address); 120 } 121 }
转载于:https://www.cnblogs.com/EpisodeXI/p/4068684.html
PAT 1032 (未完成)相关推荐
- PAT 1032挖掘机技术哪家强的代码实现及改进思考(C语言)
题目 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10^5^的正整数N,即参赛人数.随后N行,每 ...
- PAT 1032 挖掘机技术哪家强
题目链接:请点击 思路:用vector定义一个整型数组v,用数组下标表示学校编号,数组内存放其总成绩.在输入每一个记录同时,登记每一所学校当前所获得的总成绩,然后,用maxgrade与当前该学校的总成 ...
- 【PAT】1032 挖掘机技术哪家强
一.题目描述 PAT 1032 挖掘机技术哪家强 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不 ...
- PAT Basic 1032
1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 1 ...
- PAT甲级1032 Sharing :[C++题解]链表
文章目录 题目分析 题目链接 题目分析 思路:建立链表,这里使用数组.e [ ] 表示当前的数值,ne[ ]表示next指针. 求单词的公共后缀,就是求两个链表从头结点开始第一个公共的结点. 先遍历第 ...
- PAT乙级 1032 挖掘机技术哪家强 (20 分)
1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 原题链接 代码 #include < ...
- PAT 乙级真题 1032 挖掘机技术哪家强 (附测试点2)
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10^5的正整数N,即参赛人数.随后N行,每行给出一 ...
- [pat乙]1032 挖掘机技术哪家强
1032 挖掘机技术哪家强(20)(20 分) 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10 ...
- PAT 乙级1032 挖掘机技术哪家强(C语言,含判断点解析)
1032 挖掘机技术哪家强 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 10^5的正整数 ...
最新文章
- [JS] 如何判断一个对象是否为空
- html锚点(mao dian)--特殊的超链接
- CSS3 Border-image
- 一个c++程序员的学习历程自述
- 真香!GitHub刚刚宣布:私有库免费啦!
- Linux使用lvresize扩展或缩减LV逻辑卷大小
- String字符串拼接小例
- js图片前端压缩多图上传(旋转其实已经好了只是手机端有问题要先压缩再旋转)...
- 百度贴吧 2017 前贴子无法访问;网易腾讯游戏获批;苹果反垄断案败诉 | 极客头条...
- SQL每日学习——insert into语句
- php 上传微信媒体,关于微信公众号API多媒体上传
- java连接Hbase操作数据库的全过程---搭建hbase数据库
- js从地址栏获取参数
- 生信初学者必知的镜像设置
- python屏幕录制与回放_使用Python来做一个屏幕录制工具的操作代码
- 年份计算器-python
- java贪心,java实现贪心算法
- 利用Python自制一个批量图片水印添加器
- 初次接触vue,我是怎么学习的
- bnuoj_4047 魔方系列——相同高度
热门文章
- matlab listbox选中输出,vba中ListBox控件的使用
- python dtype o_python – 为什么dtype = str的空数据框填充“n”?
- 彻底搞懂Bert模型
- scikit-learn和tensorflow的区别
- scenario和group执行的区别
- 字符串format函数使用
- 微服务:更愉快还是更嘈杂?
- OSC源创会【放码过来】环节精彩回顾
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法...
- C# 关键字--using