zoukankan      html  css  js  c++  java
  • 拼多多2018

    1.有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。

    解析:大数相乘,模拟一下。

    package pdd.nt;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    /**
     * Created by cuijunyong on 2018/3/20.
     */
    public class Mul {
    
      public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        String a = cin.next();
        String b = cin.next();
        String c = mul(a, b);
        System.out.println(c);
      }
    
      private static String mul(String x, String y) {
        char[] a = x.toCharArray();
        char[] b = y.toCharArray();
        List<Long> c = new ArrayList();
        for(int i = a.length - 1; i >= 0; i--){
          long v = 0;
          for(int j = b.length - 1; j >= 0; j--){
            v += (a[i] - '0') * (b[j] - '0');
            int pos = b.length - 1 - j + (a.length - 1 - i);
            if(c.size() <= pos){
              c.add(v % 10);
            }else{
              v += c.get(pos);
              c.set(pos, v % 10);
            }
            v /= 10;
          }
    
          while (v > 0){
            c.add(v % 10);
            v /= 10;
          }
    
        }
        String str = "";
        for(int i = c.size() - 1; i >= 0; i-- ){
          str += c.get(i);
        }
        return str;
      }
    }

    2.六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。

    解析:一看就先想到了二分匹配,看了解析看到他们用的排序模拟也做出来了。

    package pdd.nt;
    
    import java.util.Scanner;
    
    /**
     * Created by cuijunyong on 2018/3/20.
     */
    public class day61 {
    
      private static Scanner cin = new Scanner(System.in);
      private static int n, m;
      private static int[] h,w;
      private static int[][] mp;
      private static int[] d;
      private static int[] v;
    
      public static void main(String[] args) {
        init();
        int ans = 0;
        for(int i = 0; i < n; i++){
          for(int j = 0; j < m; j++){
            v[j] = 0;
          }
          if(dfs(i)){
            ans ++;
          }
        }
        System.out.println(ans);
      }
    
      private static boolean dfs(int x){
        for(int i = 0; i < m; i++){
          if(v[i] == 0 && mp[x][i] == 1){
            v[i] = 1;
            if(d[i] == -1 || dfs(d[i])){
              d[i] = x;
              return true;
            }
          }
        }
        return false;
      }
    
      private static void init(){
        n = cin.nextInt();
        h = new int[n];
        for(int i = 0; i < n; i++){
          h[i] = cin.nextInt();
        }
        m = cin.nextInt();
        w = new int[m];
        for(int i = 0; i < m; i++){
          w[i] = cin.nextInt();
        }
    
        d = new int[m];
        for(int i = 0; i < m; i++){
          d[i] = -1;
        }
    
        v = new int[m];
        for(int i = 0; i < m; i++){
          v[i] = 0;
        }
        mp = new int[n][m];
        for(int i = 0; i < n; i++){
          for(int j = 0; j < m; j++){
            if(h[i] <= w[j]){
              mp[i][j] = 1;
            }
          }
        }
    
      }
    }

     3.将1+3+3+4变成1+3*2+4

    package pdd.cz;
    
    /**
     * Created by cuijunyong on 2018/3/20.
     */
    import java.util.*;
    
    public class A {
      private static Map<Long, Integer> map = new HashMap<Long, Integer>();
      private static Set<Long> set = new HashSet<Long>();
    
      public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        String str = cin.next();
        init(str);
      }
    
      private static void init(String str) {
        map.clear();
        set.clear();
        Long x = 0L;
        Long sum = 0L;
        str += "+";
        for(int i = 0; i < str.length(); i++){
          char c = str.charAt(i);
          if(c >= '0' && c <= '9'){
            x = x * 10 + c - '0';
          }else{
            Integer v = map.get(x);
            if(v == null){
              v = 0;
            }
            v++;
            map.put(x, v);
            set.add(x);
            sum += x;
            x = 0L;
          }
        }
        Object[] objects = set.toArray();
        long[] arr = new long[objects.length];
        for(int i = 0; i < objects.length; i++){
          arr[i] = (Long)objects[i];
        }
        Arrays.sort(arr);
        String ans = "";
        for(int i = 0; i < arr.length; i++){
          Long next = arr[i];
          if(i != 0){
            ans += "+";
          }
          ans += next + "*" + map.get(next);
        }
        System.out.println(ans);
        System.out.println(sum);
      }
    }

    4.坐出租车,每辆最多坐4个人,要求一队不能分开。

    package pdd.cz;
    
    /**
     * Created by cuijunyong on 2018/3/20.
     */
    /*
    
    6
    1 2 4 3 3 2
    
    */
    import java.util.*;
    
    public class B {
    
    
      public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int N;
        N = cin.nextInt();
        int[] p = new int[N];
        int[] num = new int[5];
        for(int i = 0; i < 5; i++){
          num[i] = 0;
        }
        for(int i = 0; i < N; i++){
          p[i] = cin.nextInt();
          num[p[i]]++;
        }
    
        int ans;
    
        ans = num[4] + (num[2] + 1)/2;
    
        if(num[3] > num[1]){
          ans += num[1] + num[3] - num[1];
        }else{
          ans += num[3] + (num[1] - num[3] + 3)/4;
        }
    
        if(num[2] % 2 == 1 && (num[1] - num[3])%4 <= 2 && (num[1] - num[3])%4 > 0){
          ans --;
        }
    
        System.out.println(ans);
      }
    
    
    }
  • 相关阅读:
    HTML元素 绑定href属性
    form提交不刷新,不跳转页面
    使用MVCPager做AJAX分页所需要注意的地方
    docker基础命令,常用操作
    docker基础
    redis持久化 RDB与AOF
    redis哨兵功能
    redis主从同步
    redis不重启,切换到RDB备份到AOF备份
    redis-cluster(集群)
  • 原文地址:https://www.cnblogs.com/handsomecui/p/8609743.html
Copyright © 2011-2022 走看看