斗智斗勇系列,这个时间限制太变态了,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 (未完成)相关推荐

  1. PAT 1032挖掘机技术哪家强的代码实现及改进思考(C语言)

    题目 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10^5^的正整数N,即参赛人数.随后N行,每 ...

  2. PAT 1032 挖掘机技术哪家强

    题目链接:请点击 思路:用vector定义一个整型数组v,用数组下标表示学校编号,数组内存放其总成绩.在输入每一个记录同时,登记每一所学校当前所获得的总成绩,然后,用maxgrade与当前该学校的总成 ...

  3. 【PAT】1032 挖掘机技术哪家强

    一.题目描述 PAT 1032 挖掘机技术哪家强 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不 ...

  4. PAT Basic 1032

    1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 1 ...

  5. PAT甲级1032 Sharing :[C++题解]链表

    文章目录 题目分析 题目链接 题目分析 思路:建立链表,这里使用数组.e [ ] 表示当前的数值,ne[ ]表示next指针. 求单词的公共后缀,就是求两个链表从头结点开始第一个公共的结点. 先遍历第 ...

  6. PAT乙级 1032 挖掘机技术哪家强 (20 分)

    1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 原题链接 代码 #include < ...

  7. PAT 乙级真题 1032 挖掘机技术哪家强 (附测试点2)

    为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10^5的正整数N,即参赛人数.随后N行,每行给出一 ...

  8. [pat乙]1032 挖掘机技术哪家强

    1032 挖掘机技术哪家强(20)(20 分) 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过10 ...

  9. PAT 乙级1032 挖掘机技术哪家强(C语言,含判断点解析)

    1032 挖掘机技术哪家强 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 10^5的正整数 ...

最新文章

  1. [JS] 如何判断一个对象是否为空
  2. html锚点(mao dian)--特殊的超链接
  3. CSS3 Border-image
  4. 一个c++程序员的学习历程自述
  5. 真香!GitHub刚刚宣布:私有库免费啦!
  6. Linux使用lvresize扩展或缩减LV逻辑卷大小
  7. String字符串拼接小例
  8. js图片前端压缩多图上传(旋转其实已经好了只是手机端有问题要先压缩再旋转)...
  9. 百度贴吧 2017 前贴子无法访问;网易腾讯游戏获批;苹果反垄断案败诉 | 极客头条...
  10. SQL每日学习——insert into语句
  11. php 上传微信媒体,关于微信公众号API多媒体上传
  12. java连接Hbase操作数据库的全过程---搭建hbase数据库
  13. js从地址栏获取参数
  14. 生信初学者必知的镜像设置
  15. python屏幕录制与回放_使用Python来做一个屏幕录制工具的操作代码
  16. 年份计算器-python
  17. java贪心,java实现贪心算法
  18. 利用Python自制一个批量图片水印添加器
  19. 初次接触vue,我是怎么学习的
  20. bnuoj_4047 魔方系列——相同高度

热门文章

  1. matlab listbox选中输出,vba中ListBox控件的使用
  2. python dtype o_python – 为什么dtype = str的空数据框填充“n”?
  3. 彻底搞懂Bert模型
  4. scikit-learn和tensorflow的区别
  5. scenario和group执行的区别
  6. 字符串format函数使用
  7. 微服务:更愉快还是更嘈杂?
  8. OSC源创会【放码过来】环节精彩回顾
  9. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法...
  10. C# 关键字--using