zoukankan      html  css  js  c++  java
  • HDU1880

            题意就是根据咒语查功能,根据功能查看是否存在相应咒语,题意简单,不过是道不错的练习题。

            下面的都MLE了,听说C++用G++提交才可以AC,否则也MLE;方法很多,不想做了……

            方法一:我用Java的HashMap一直MLE,即便由value反查key减少映射数也一样MLE,听说C++的map可以AC。

            方法二:快排+二分

            方法三:Hash方法,用31求幂。

    import java.util.*;
    
    //写俩Map
    public class HDU1880 {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str =null;
            Map<String,String> map1 = new HashMap<String,String>();
            Map<String,String> map2 = new HashMap<String,String>();
            String[] s0;
            while(true) {
                str = sc.nextLine();
                if(str.equals("@END@")) {
                    break;
                }
                s0 = str.split(" ", 2);
                str = s0[0].substring(1,s0[0].length()-1);
                map1.put(str,s0[1]);
                map2.put(s0[1], str);
            }
            int n = sc.nextInt();
            for(int i=0; i<n; i++) {
                String s = sc.next();
                s += sc.nextLine();
                if(s.charAt(0)=='[') {
                    s = s.substring(1, s.length()-1);
                    boolean tag = map1.containsKey(s);
                    if(tag) {
                        System.out.println(map1.get(s));
                    }else {
                        System.out.println("what?");
                    }
                }else {
                    boolean tag = map2.containsKey(s);
                    if(tag) {
                        System.out.println(map2.get(s));
                    }else {
                        System.out.println("what?");
                    }
                }
            }
        }
    }
    import java.util.*;
    //一个Map存两次
    public class HDU1880 {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str =null;
            Map<String,String> map = new HashMap<String,String>();
            String[] s0;
            while(true) {
                str = sc.nextLine();
                if(str.equals("@END@")) {
                    break;
                }
                s0 = str.split(" ", 2);
                str = s0[0].substring(1,s0[0].length()-1);
                map.put(str,s0[1]);
                map.put(s0[1], str);
            }
            int n = sc.nextInt();
            for(int i=0; i<n; i++) {
                String s = sc.next();
                s += sc.nextLine();
                if(s.charAt(0)=='[') {
                    s = s.substring(1, s.length()-1);
                }
                boolean tag = map.containsKey(s);
                if(tag) {
                    System.out.println(map.get(s));
                }else {
                    System.out.println("what?");
                }
            }
        }
    }
    import java.util.*;
    //map里反查key
    public class HDU1880 {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str =null;
            Map<String,String> map = new HashMap<String,String>();
            String[] s0;
            while(true) {
                str = sc.nextLine();
                if(str.equals("@END@")) {
                    break;
                }
                s0 = str.split(" ", 2);
                str = s0[0].substring(1,s0[0].length()-1);
                map.put(str,s0[1]);
            }
            int n = sc.nextInt();
            for(int i=0; i<n; i++) {
                String s = sc.next();
                s += sc.nextLine();
                if(s.charAt(0)=='[') {
                    s = s.substring(1, s.length()-1);
                    boolean tag = map.containsKey(s);
                    if(tag) {
                        System.out.println(map.get(s));
                    }else {
                        System.out.println("what?");
                    }
                }else {
                    ArrayList<String> arr = valueGetKey(map,s);
                    if(arr.isEmpty()) {
                        System.out.println("what?");
                    }else {
                        System.out.println(arr.get(0));
                    }
                }
                
            }
        }
    
        private static ArrayList<String> valueGetKey(Map<String, String> map,String value) {
    
            Set set = map.entrySet();
            ArrayList<String> arr = new ArrayList<String>();
            Iterator<Map.Entry<String, String> > it = set.iterator();
            while(it.hasNext()) {
                Map.Entry<String, String> entry = (Map.Entry<String, String>)it.next();
                if(entry.getValue().equals(value)) {
                    String s = entry.getKey();
                    arr.add(s);
                }
            }
            return arr;
        }
    }
  • 相关阅读:
    程序优化
    obsidium 重定位
    Obsidium V1.3.0.4 脱壳
    SEH 栈溢出
    DWORD SHOOT
    两种堆表学习
    修改网页转向
    WireShark过滤语法
    获取系统信息学习
    怎么在 渗透无键盘 查询机
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3256079.html
Copyright © 2011-2022 走看看