zoukankan      html  css  js  c++  java
  • ccf

     

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashSet;
    public class MST {
        public static void kruskal(int []V,Edge[] E) {
            Arrays.sort(E);
            ArrayList<HashSet> sets=new ArrayList<HashSet>();
            for(int i=0;i<V.length;i++) {
                HashSet set=new HashSet();
                set.add(V[i]);
                sets.add(set);
            }
            int sum_w=0;
            for(int i=0;i<E.length;i++) {
                int start=E[i].i;
                int end=E[i].j; 
                int w=E[i].w;
                int set_start=-1;int set_end=-2;
                for(int j=0;j<sets.size();j++) {
                    HashSet set=sets.get(j);
                    if(set.contains(start))
                        set_start=j;
                    if(set.contains(end))
                        set_end=j;    
                }
                if(set_start!=set_end) {
                    sum_w+=E[i].w;
                    HashSet set=sets.get(set_end);
                    sets.remove(set_end);
                    HashSet set1=sets.get(set_start);
                    sets.remove(set_start);
                    set1.addAll(set);
                    sets.add(set1);
                }
                
            }
            System.out.println(sum_w);
            
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int []V= {1,2,3,4,5,6};
            Edge[]E=new Edge[10];
            E[0]=new Edge(1,2,6);  
            E[1]=new Edge(1,3,1);  
            E[2]=new Edge(1,4,5);  
            E[3]=new Edge(2,3,5);  
            E[4]=new Edge(2,5,3);  
            E[5]=new Edge(3,4,5);  
            E[6]=new Edge(3,5,6);  
            E[7]=new Edge(3,6,4);  
            E[8]=new Edge(4,6,2);  
            E[9]=new Edge(5,6,6);
            kruskal(V,E);
        }
            
        
        
        
        
        
        
        public static class Edge implements Comparable{
            public int i,j,w;
            public Edge(int i,int j,int w) {
                this.i=i;
                this.j=j;
                this.w=w;
            }
            @Override
            public int compareTo(Object o) {
                Edge to=(Edge) o;
                if(this.w>to.w)return 1;
                else if(this.w==to.w)return 0;
                else return -1;
            }
            @Override
            public String toString() {
                return "start="+i+"||end="+j+"||weight="+w;
            }
            
        }
    }
    View Code

     

    public class ShortestPath {
        public static void shortestPath(int graph[][], int start, int n) {
            int[] d = new int[n];
            int pre[] = new int[n];
            boolean[] finish = new boolean[n];
            int noEdge = Integer.MAX_VALUE;
            int noPre = -1;
            int noLink = 0;
            // 初始化
            for (int i = 0; i < n; i++) {
                if (graph[start][i] == noLink) {
                    d[i] = noEdge;
                    pre[i] = noPre;
                } else {
                    d[i] = graph[start][i];
                    pre[i] = start;
                }
                finish[i] = false;
            }
    
            finish[start] = true;
            pre[start] = noPre;
            d[start] = noEdge;
            for (int i = 0; i < n; i++) {
                int minj = -1, minValue = Integer.MAX_VALUE;
                // 找最小的d值
                for (int j = 0; j < n; j++) {
                    if (!finish[j]) {
                        if (d[j] < minValue) {
                            minj = j;
                            minValue = d[j];
                        }
                    }
                }
                if (minj != -1) {
                    int count = minj;
                    // 输出最短路径
                    System.out.print(minj + 1);
                    while (pre[count] != noPre) {
                        System.out.print(" " + (pre[count] + 1));
                        count = pre[count];
                    }
                    System.out.println();
                } else {
                    // System.out.println("不再存在从v0可到达的最短路径");
                    break;
                }
                // 更新d pre finish
                finish[minj] = true;
                for (int j = 0; j < n; j++) {
                    if (!finish[j]) {
                        if (graph[minj][j] != noLink && (d[minj] + graph[minj][j] < d[j])) {
                            pre[j] = minj;
                            d[j] = d[minj] + graph[minj][j];
                        }
                    }
                }
            }
    
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[][] graph = { { 0, 2, 4, 3 }, { 2, 0, 2, 0 }, { 4, 2, 0, 1 }, { 3, 0, 1, 0 } };
    
            shortestPath(graph, 0, 4);
        }
    }
    View Code

     

     

    ccf201709

    0901打酱油(100分)

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner scan=new Scanner(System.in);
            
            int money=scan.nextInt();
            scan.close();
            int num_buy=0;
            if (money%50==0)
            {
                num_buy=money/50*7;
            }
            else {
                num_buy=money%50/30+money%50/10+money/50*7;
            }
            System.out.println(num_buy);
    
        }
    
    }
    View Code

    0902公共钥匙盒(100分)

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main_02 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            int k = scan.nextInt();
    
            int[] key = new int[n];
            for (int i = 0; i < n; i++) {
                key[i] = i + 1;
            }
    
            int[][] tea_use = new int[k][4];
            for (int i = 0; i < k; i++) {
                tea_use[i][0] = scan.nextInt();
                tea_use[i][1] = scan.nextInt();
                tea_use[i][2] = scan.nextInt();
                tea_use[i][3] = tea_use[i][1] + tea_use[i][2];
            }
    
            int time = 0;
            int max = 0;
            for (int i = 0; i < k; i++) {
                if (tea_use[i][3] > max) {
                    max = tea_use[i][3];
                }
            }
    
            int[] ret = new int[k];
            while (time <= max) {
                for (int i = 0; i < k; i++) {
                    ret[i] = 0;
                }
                int m = 0;
                for (int i = 0; i < k; i++) {
                    if (tea_use[i][3] == time) {
                        ret[m++] = tea_use[i][0];
                    }
                }
                Arrays.sort(ret);
                for (int i = 0; i < k; i++) {
                    if (ret[i] != 0) {
                        for (int j = 0; j < n; j++) {
                            if (key[j] == 0) {
                                key[j] = ret[i];
                                ret[i] = 0;
                                break;
                            }
                        }
                    }
                }
    
                for (int i = 0; i < k; i++) {
                    if (tea_use[i][1] == time) {
                        for (int j = 0; j < n; j++) {
                            if (key[j] == tea_use[i][0]) {
                                key[j] = 0;
                            }
                        }
                    }
                }
                time++;
            }
    
            for (int i = 0; i < n; i++) {
                System.out.print(key[i] + " ");
            }
    
        }
    
    }
    View Code

     0903Json查询()

    借鉴  CCF 201709-3 Json查询 Java

    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Main_03 {
        static Map<String,String> Json=new HashMap<String,String>();
        static String keyVal="";
        static boolean key=false;
        
        public static void handle(String line) {
            for(int i=0;i<line.length();i++) {
                char c=line.charAt(i);
                switch(c) {
                    case '{':
                    Json.put(keyVal, "OBJECT");
                    key=true;
                    break;
                    
                    case '}':
                        if(!keyVal.equals("")) {
                            int j;
                            for(j=keyVal.length()-1;j>=0;j--) {
                                if(keyVal.charAt(j)=='.') {
                                    break;
                                }
                            }
                            if(j<0)
                                keyVal="";
                            else
                                keyVal=keyVal.substring(0,j);
                        }
                        break;
                        
                    case '"':
                        String temp="";
                        for(i=i+1;i<line.length();i++) {
                            if(line.charAt(i)=='\') {
                                i++;
                                temp+=line.charAt(i);
                            }
                            else if(line.charAt(i)=='"')
                                break;
                            else
                                temp+=line.charAt(i);
                        }
                        if(key) {
                            if(!keyVal.equals(""))
                                keyVal+=".";
                            keyVal+=temp;
                        }
                        else {
                            Json.put(new String(keyVal), "STRING "+temp);
                            int j=keyVal.lastIndexOf(".");
                            if(j<0)
                                keyVal="";
                            else
                                keyVal=keyVal.substring(0,j);
                        }
                        break;
                        
                        
                    case ':':
                        key=false;
                        break;
                        
                    case ',':
                        key=true;
                        break;
                }
            }
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan=new Scanner(System.in);
            int n=scan.nextInt();
            int m=scan.nextInt();
            scan.nextLine();
            
            
            for(int i=0;i<n;i++) {
                handle(scan.nextLine().replace(" ", ""));
                }
            
            for(int i=0;i<m;i++) {
                String query=scan.nextLine();
                if(!Json.containsKey(query))
                    System.out.println("NOTEXIST");
                else
                    System.out.println(Json.get(query));
            }
            
            
        }
    }
    View Code

    0904通信网络(100分)

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Queue;
    import java.util.Scanner;
    
    public class Main_04 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            int m = scan.nextInt();
            List[] send = new ArrayList[n + 1];
            List[] receive = new ArrayList[n + 1];
            for (int i = 0; i < n + 1; i++) {
                send[i] = new ArrayList();
                receive[i] = new ArrayList();
            }
    
            for (int j = 0; j < m; j++) {
                int s = scan.nextInt();
                int t = scan.nextInt();
                send[s].add(t);
                receive[t].add(s);
            }
    
            boolean all[][] = new boolean[n + 1][n + 1];
            for (int i = 0; i < n + 1; i++) {
                all[i][i] = true;
            }
    
            Queue q = new LinkedList();
            boolean[] flags;
            for (int i = 1; i < n + 1; i++) {
                q.add(i);
                flags = new boolean[n + 1];
                while (!q.isEmpty()) {
                    int temp = (int) q.poll();
                    if (!flags[temp]) {
                        for (int j = 0; j < send[temp].size(); j++) {
                            int next = (int) send[temp].get(j);
                            q.add(next);
                        }
                        flags[temp] = true;
                        all[i][temp] = true;
                    }
                }
            }
    
            for (int i = 1; i < n + 1; i++) {
                q.add(i);
                flags = new boolean[n + 1];
                while (!q.isEmpty()) {
                    int temp = (int) q.poll();
                    if (!flags[temp]) {
                        for (int j = 0; j < receive[temp].size(); j++) {
                            int next = (int) receive[temp].get(j);
                            q.add(next);
                        }
                        flags[temp] = true;
                        all[i][temp] = true;
                    }
                }
            }
            int num = 0;
            for (int i = 1; i < n + 1; i++) {
                boolean knowAll = true;
                for (int j = 1; j < n + 1; j++) {
                    if (!all[i][j]) {
                        knowAll = false;
                        break;
                    }
                }
                if (knowAll) {
                    num++;
                }
            }
    
            System.out.println(num);
    
        }
    
    }
    View Code

    0905除法(30分)

    import java.util.Scanner;
    
    public class Main_05 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            int m = scan.nextInt();
    
            int input1[] = new int[n + 1];
            for (int i = 1; i < n + 1; i++) {
                input1[i] = scan.nextInt();
            }
            int result[] = new int[m];
            int k = 0;
            for (int i = 0; i < m; i++) {
                int opt = scan.nextInt();
                int l = scan.nextInt();
                int r = scan.nextInt();
                if (opt == 1) {
                    int v = scan.nextInt();
                    for (int j = l; j < r + 1; j++) {
                        if (input1[j] % v == 0) {
                            input1[j] /= v;
                        }
                    }
                }
                if (opt == 2) {
                    int sum = 0;
                    for (int j = l; j < r + 1; j++) {
                        sum += input1[j];
                    }
                    System.out.println(sum);
                }
    
            }
        }
    
    }
    View Code

     

    ccf201703

    0301分蛋糕(100分)

    package test_201703;
    
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan=new Scanner(System.in);
            int n=scan.nextInt();
            int k=scan.nextInt();
            int weights[]=new int[n];
            for(int i=0;i<n;i++) {
                weights[i]=scan.nextInt();
            }
            int people=0;
            int sum=0;
            for(int i=0;i<n;i++) {
                sum+=weights[i];
                if(sum>=k||i==n-1) {
                    people++;
                    sum=0;
                }
            }
            System.out.println(people);
        }
    }
    View Code

    0302学生排队(100分)

    package test_201703;
    
    import java.util.Scanner;
    
    public class Main_02 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Scanner scan = new Scanner(System.in);
            int n=scan.nextInt();
            int opt_num=scan.nextInt();
            
            int student[]=new int[n+1];
            int pos[]=new int[n+1];
            for(int i=1;i<n+1;i++) {
                student[i]=i;
                pos[i]=i;
            }
            
            for(int i=0;i<opt_num;i++) {
                int stu=scan.nextInt();
                int dis=scan.nextInt();
                //向后移
                if(dis>0) {
                    int temp=student[pos[stu]];
                    int j=0;
                    for(j=pos[stu];j<pos[stu]+dis;j++) {
                        student[j]=student[j+1];
                        pos[student[j+1]]-=1;
                    }
                    pos[stu]+=dis;
                    student[j]=temp;
                }
                //向前移
                else {
                    int temp=student[pos[stu]];
                    int j=0;
                    for(j=pos[stu];j>pos[stu]+dis;j--) {
                        student[j]=student[j-1];
                        pos[student[j-1]]+=1;
                    }
                    pos[stu]+=dis;
                    student[j]=temp;
                    
                }
            }    
            
            for(int i=1;i<n+1;i++) {
                System.out.print(student[i]+" ");
            }
            }
            
            
        }
    View Code

     0304地铁修建(80分)运行超时。借鉴http://blog.csdn.net/eternity666/article/details/68974954

    import java.util.ArrayList;
    import java.util.PriorityQueue;
    import java.util.Scanner;
    
    public class Main_04 {
        static int maxN = 100001;
        static int maxValue = Integer.MAX_VALUE;
        static int costo[] = new int[maxN];
        static ArrayList<Edge>[] G = new ArrayList[maxN];
        static boolean vis[] = new boolean[maxN];
    
        public static void shortestPath(int start, int n) {
            PriorityQueue<Node> pq = new PriorityQueue<Node>();
            for (int i = 0; i <= n; i++) {
                costo[i] = maxValue;
                vis[i] = false;
            }
            vis[0] = true;
            costo[start] = 0;
            pq.add(new Node(start, 0));
            Node temp;
            while (!pq.isEmpty()) {
                temp = pq.poll();
                int v = temp.v;
                if (vis[v])
                    continue;
                vis[v] = true;
                for (int i = 0; i < G[v].size(); i++) {
                    int target = G[v].get(i).target;
                    int cost = G[v].get(i).cost;
                    int maxCost = Math.max(cost, costo[v]);
                    if (!vis[target] && costo[target] > maxCost) {
                        costo[target] = maxCost;
                        pq.add(new Node(target, costo[target]));
                    }
                }
            }
            System.out.println(costo[n]);
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            for (int i = 0; i < maxN; i++) {
                G[i] = new ArrayList<Edge>();
            }
            Scanner s = new Scanner(System.in);
            int n = s.nextInt();
            int m = s.nextInt();
    
            for (int i = 0; i < m; i++) {
                int a = s.nextInt();
                int b = s.nextInt();
                int c = s.nextInt();
                G[a].add(new Edge(b, c));
                G[b].add(new Edge(a, c));
            }
    
            shortestPath(1, n);
    
        }
    
        public static class Node implements Comparable {
            public int v, dis;
    
            public Node(int v, int dis) {
                this.v = v;
                this.dis = dis;
            }
    
            @Override
            public int compareTo(Object o) {
                // TODO Auto-generated method stub
                Node n = (Node) o;
                if (this.dis > n.dis)
                    return 1;
                else if (this.dis == n.dis)
                    return 0;
                else
                    return -1;
            }
    
        }
    
        public static class Edge {
            public int target, cost;
    
            public Edge(int target, int cost) {
                this.target = target;
                this.cost = cost;
            }
    
        }
    }
    View Code

    也可借鉴https://www.cnblogs.com/freinds/p/6742618.html

     

    ccf201612

    1201中间数(100分)

    package ccf_201612;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner s=new Scanner(System.in);
            int n=s.nextInt();
            List l=new ArrayList();
            for(int i=0;i<n;i++) {
                l.add(s.nextInt());
            }
            Collections.sort(l);
            
            if(n==1) {
                System.out.println(l.get(0));
                return;
            }
            
            if(l.size()%2==0) {
                int mid=(int) l.size()/2-1;
                int mid_num=(int) l.get(mid);
                int num=0;
                for(int j=0;j<l.size();j++) {
                    if((int)l.get(j)==mid_num)
                        num++;
                }
                if(num%2==0) {
                    System.out.println(l.get(mid));
                }
                else
                    System.out.println(-1);
            }
            
            if(l.size()%2==1) {
                int mid=(int) (l.size()+1)/2-1;
                int mid_num=(int) l.get(mid);
                int num=0;
                for(int j=0;j<l.size();j++) {
                    if((int)l.get(j)==mid_num)
                        num++;
                }
                if(num%2==1) {
                    System.out.println(l.get(mid));
                }
                else
                    System.out.println(-1);
            }
            
        }
    
    }
    View Code

    1202工资计算(100分)

    package ccf_201612;
    
    import java.util.Scanner;
    
    public class Main_02 {
    
        public static int algoth(int all) {
            int after=0;
            if(all<=3500) {
                after=all;
                return after;
            }
            all-=3500;
            if(all<=1500) {
                after= (int) (all*0.97);
            }
            if(1500<all&&all<=4500) {
                after=(int) (all-(all-1500)*0.1-1500*0.03);
            }
            if(4500<all&&all<=9000) {
                after=(int) (all-(all-4500)*0.2-3000*0.1-1500*0.03);
            }
            if(9000<all&&all<=35000) {
                after=(int) (all-(all-9000)*0.25-4500*0.2-3000*0.1-1500*0.03);
            }
            if(35000<all&&all<=55000) {
                after=(int) (all-(all-35000)*0.3-26000*0.25-4500*0.2-3000*0.1-1500*0.03);
            }
            if(55000<all&&all<=80000) {
                after=(int) (all-(all-55000)*0.35-20000*0.3-26000*0.25-4500*0.2-3000*0.1-1500*0.03);
            }
            if(all>80000) {
                after=(int) (all-(all-80000)*0.45-25000*0.35-20000*0.3-26000*0.25-4500*0.2-3000*0.1-1500*0.03);
            }
            return after+3500;
            
        }
        
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner s=new Scanner(System.in);
            int money=s.nextInt();
            
            int after[]=new int[100001];
            for(int i=0;i<100001;i++) {
                after[i]=0;
            }
            
            for(int i=1;i<=100000;i++) {
                
                int aft=algoth(i);
                
                if(i%100==0) {
                    after[aft]=i;
                }
                
            }
            
            System.out.println(after[money]);
            
            
        }
    
    }
    View Code

     

    ccf201609

    0901最大波动(100分)

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner s=new Scanner(System.in);
            int n=s.nextInt();
            
            
            List l=new ArrayList();
            int input[]=new int[n];
            int first=s.nextInt();
            for(int i=0;i<n-1;i++) {
                int second=s.nextInt();
                int abs=Math.abs(first-second);
                l.add(abs);
                first=second;
            }
            Collections.sort(l);
            int max=(int) l.get(l.size()-1);
            System.out.println(max);
        }
    
    }
    View Code

    0902火车购票(90分)

    90分

    import java.util.Scanner;
    
    public class Main_02 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner s = new Scanner(System.in);
            int n = s.nextInt();
    
            int seat[][] = new int[20][5];
            int remain[] = new int[20];
            for (int i = 0; i < 20; i++) {
                seat[i][0] = i * 5 + 1;
                seat[i][1] = i * 5 + 2;
                seat[i][2] = i * 5 + 3;
                seat[i][3] = i * 5 + 4;
                seat[i][4] = i * 5 + 5;
            }
            for (int i = 0; i < 20; i++) {
                remain[i] = 5;
            }
    
            int ticket[] = new int[n];
            for (int i = 0; i < n; i++) {
                ticket[i] = s.nextInt();
            }
    
            for (int i = 0; i < n; i++) {
                int num = ticket[i];
                boolean flag = false;
    
                for (int j = 0; j < 20; j++) {
                    if (remain[j] >= num) {
                        for (int k = 0; k < num; k++) {
                            System.out.print(seat[j][5 - remain[j]] + " ");
                            remain[j] -= 1;
                        }
                        System.out.println();
                        flag = true;
                        break;
                    }
                }
    
                if (!flag) {
                    for (int j = 0; j < 20; j++) {
                        for (int k = 0; k < remain[j]; k++) {
                            System.out.print(seat[j][5 - remain[j]] + " ");
                            remain[j] -= 1;
                            num--;
                        }
                        if (num == 0) {
                            System.out.println();
                            break;
                        }
                    }
    
                }
    
            }
    
        }
    
    }
    View Code

     测试用例如下时出错:

    输入:
    
    21
    4 4 3 5 5
    5 5 5 5 5
    5 5 5 5 5
    5 5 5 5 5
    4
    
    输出:
    
    1 2 3 4 
    6 7 8 9 
    11 12 13 
    16 17 18 19 20 
    21 22 23 24 25 
    26 27 28 29 30 
    31 32 33 34 35 
    36 37 38 39 40 
    41 42 43 44 45 
    46 47 48 49 50 
    51 52 53 54 55 
    56 57 58 59 60 
    61 62 63 64 65 
    66 67 68 69 70 
    71 72 73 74 75 
    76 77 78 79 80 
    81 82 83 84 85 
    86 87 88 89 90 
    91 92 93 94 95 
    96 97 98 99 100 
    5 10 14
    
    最后一行应为5 10 14  15
    View Code

    出错代码:

    for (int k = 0; k < remain[j]; k++) {
                            System.out.print(seat[j][5 - remain[j]] + " ");
    //此处改变了remain[j]
                            remain[j] -= 1;
                            num--;
                            if (num == 0) {
                                System.out.println();
                                flag=true;
                                break;
                            }
                        }
    View Code

    java满分代码:

    import java.util.Scanner;
    
    public class Main_02 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner s = new Scanner(System.in);
            int n = s.nextInt();
    
            int seat[][] = new int[20][5];
            int remain[] = new int[20];
            for (int i = 0; i < 20; i++) {
                seat[i][0] = i * 5 + 1;
                seat[i][1] = i * 5 + 2;
                seat[i][2] = i * 5 + 3;
                seat[i][3] = i * 5 + 4;
                seat[i][4] = i * 5 + 5;
            }
            for (int i = 0; i < 20; i++) {
                remain[i] = 5;
            }
    
            int ticket[] = new int[n];
            for (int i = 0; i < n; i++) {
                ticket[i] = s.nextInt();
            }
    
            for (int i = 0; i < n; i++) {
                int num = ticket[i];
                boolean flag = false;
    
                for (int j = 0; j < 20; j++) {
                    if (remain[j] >= num) {
                        for (int k = 0; k < num; k++) {
                            System.out.print(seat[j][5 - remain[j]] + " ");
                            remain[j] -= 1;
                        }
                        System.out.println();
                        flag = true;
                        break;
                    }
                }
    
                if (!flag) {
                    for (int j = 0; j < 20; j++) {
                        int r=remain[j];
                        for (int k = 0; k < r; k++) {
                            System.out.print(seat[j][5 - remain[j]] + " ");
                            remain[j] -= 1;
                            num--;
                            if (num == 0) {
                                System.out.println();
                                flag=true;
                                break;
                            }
                        }
                    if(flag)
                        break;
                        
                    }
    
                }
    
    
            }
    
        }
    
    }
    View Code

    0904:交通规划 (100分)  借鉴 ccf交通规划 利用dijkstra和优先队列 c++

    (借鉴  java

    Dijkstra求解单源点最短路径

    http://blog.csdn.net/moilk_nepho/article/details/52950546

    import java.util.ArrayList;
    import java.util.PriorityQueue;
    import java.util.Scanner;
    
    public class Main_4 {
        static int maxN = 10001;
        static int maxValue = Integer.MAX_VALUE;
        static ArrayList<Edge> G[] = new ArrayList[maxN];
        static boolean marked[] = new boolean[maxN];
        static int disto[] = new int[maxN];
        static int costo[] = new int[maxN];
    
        public static void dijkstra(int start, int n) {
    
            for (int i = 0; i <= n; i++) {
                costo[i] = disto[i] = maxValue;
                marked[i] = false;
            }
    
            disto[start] = 0;
            costo[start] = 0;
            PriorityQueue<Node> pq = new PriorityQueue<Node>();
            pq.add(new Node(start, 0));
            marked[0] = true;
    
            Node temp;
            while (!pq.isEmpty()) {
                temp = pq.poll();
                int v = temp.v;
                if (!marked[v]) {
                    marked[v] = true;
                    int len = G[v].size();
                    for (int i = 0; i < len; i++) {
                        int target = G[v].get(i).target;
                        if (marked[target])
                            continue;
                        int cost = G[v].get(i).cost;
                        int newDist = disto[v] + cost;
                        if (disto[target] > newDist) {
                            disto[target] = newDist;
                            costo[target] = cost;
                            pq.add(new Node(target, disto[target]));
                        }
                        if (disto[target] == newDist) {
                            costo[target] = min(costo[target], cost);
                        }
    
                    }
                }
            }
    
            int sum = 0;
            for (int i = 2; i <= n; i++) {
                sum += costo[i];
            }
            System.out.println(sum);
    
        }
    
        private static int min(int i, int j) {
            // TODO Auto-generated method stub
            if (i < j)
                return i;
            else
                return j;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            for (int i = 0; i < maxN; i++) {
                G[i] = new ArrayList();
            }
    
            Scanner s = new Scanner(System.in);
            int numCity = s.nextInt();
            int numRoad = s.nextInt();
            for (int i = 0; i < numRoad; i++) {
                int source = s.nextInt();
                int target = s.nextInt();
                int w = s.nextInt();
                G[source].add(new Edge(target, w));
                G[target].add(new Edge(source, w));
            }
            dijkstra(1, numCity);
        }
    
        public static class Node implements Comparable {
            public int v;
            int dis;
    
            public Node(int v, int dis) {
                this.v = v;
                this.dis = dis;
            }
    
            public int compareTo(Object o) {
                Node n = (Node) o;
                if (this.dis > n.dis)
                    return 1;
                else if (this.dis == n.dis)
                    return 0;
                else
                    return -1;
            }
    
        }
    
        public static class Edge {
            public int target, cost;
    
            public Edge(int target, int cost) {
                this.target = target;
                this.cost = cost;
            }
        }
    }
    View Code

    ccf201604

    0401折点计数(100)

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner s=new Scanner(System.in);
            int n=s.nextInt();
            int n1=s.nextInt();
            //要注意边界值的处理!!!
            if(n==1) {
                System.out.println(0);
                return;
            }
            int n2=s.nextInt();
            int num=0;
            for(int i=0;i<n-2;i++) {
                int n3=s.nextInt();
                if((n2<n1&&n2<n3)||(n2>n1&&n2>n3)) {
                    num++;
                }
                n1=n2;
                n2=n3;
            }
            System.out.println(num);
            
        }
    
    }
    View Code

    0404游戏(100分)(借鉴 http://blog.csdn.net/zjj582984208/article/details/55223889)

    c++实现:

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Queue;
    import java.util.Scanner;
    
    public class Main_04 {
    
        public static class Node{
            int i=0,j=0,t=0;
            Node(int i1,int j1,int t1){
                i=i1;
                j=j1;
                t=t1;
                        
            }
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner s = new Scanner(System.in);
            int n = s.nextInt();
            int m = s.nextInt();
            int t = s.nextInt();
            
            
            int danger[][][]=new int[n][m][2];
            for(int i=0;i<t;i++) {
                int r=s.nextInt();
                int c=s.nextInt();
                int a=s.nextInt();
                int b=s.nextInt();
                danger[r-1][c-1][0]=a;
                danger[r-1][c-1][1]=b;
            }
            int dir[][]= {
                    {1,0},
                    {0,1},
                    {-1,0},
                    {0,-1}
            };
            
            Queue<Node> q=new LinkedList<>();
            int seen[][][]=new int[n][m][301];
            q.add(new Node(0,0,0));
            while(!q.isEmpty()) {
                Node node=q.poll();
                if(node.i==n-1&&node.j==m-1) {
                    System.out.println(node.t);
                    break;
                }
                for(int i=0;i<4;i++) {
                    int next_i=node.i+dir[i][0];
                    int next_j=node.j+dir[i][1];
                    if(next_i>=0&&next_i<n&&next_j>=0&&next_j<m&&node.t+1<300&&
                            (node.t+1<danger[next_i][next_j][0]||node.t+1>danger[next_i][next_j][1])
                            &&seen[next_i][next_j][node.t+1]==0) {
                        q.add(new Node(next_i,next_j,node.t+1));
                        seen[next_i][next_j][node.t+1]=1;
                        
                    }
                }
            }
    
        }
    }
    View Code

    陌上花开的博客ccf

    冷暖知不知ccf

    WitsMakeMen的专栏算法学习

    如有疑问请联系我,写的不对的地方请联系我进行更改,感谢~ QQ:1968380831
  • 相关阅读:
    Mysql模糊查询 select count(*) from sys_invitation where from_id like '%1006%';
    java 结束程序进程 代码
    [解决问题]selenium.remote.UnreachableBrowserException 异常分析并解决问题
    【解决问题】failed: java.lang.RuntimeException: org.openqa.selenium.WebDriverException: Unexpected error launching Internet Explorer.
    linux下nginx部署以及配置详解
    Linux系统下安装jdk及环境配置(两种方法)
    linux服务器同时运行两个或多个tomcat
    linux配置环境jdk
    mysql修改后启动my.cnf报错Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
    mysql执行出错:Table 'k_user' is read only
  • 原文地址:https://www.cnblogs.com/1zhangwenjing/p/7895206.html
Copyright © 2011-2022 走看看