zoukankan      html  css  js  c++  java
  • HDU 4293 Groups (dp)

      比赛的时候真心没想出来什么好的dp方法。。。蛋疼!整个比赛脑子发懵。。。!

    dp[i][j]表示到第j个人,i到j是一个group时说真话的最大人数。num[a][b]统计出说前面有a个,后面有b个的人的个数,当然,不超过n - a - b;

    dp[i][j] = max{dp[k][i]} + num[i][n-j];

    ans = max{dp[k][n]};

    ps:蛋疼的java.util.Arrays.fill(),妹的!内部函数就是一个for循环,只能初始化一维数组。。。表示以后再也不用了。。。

    import java.util.*;
    
    public class Main {
    
        /**
         * @param args
         */
        static final int N = 550;
        static int[][] num = new int[N][N];
        static int[][] dp = new int[N][N];
        static int[] pre = new int[N];
        
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            int n, a, b, i, j, ans;
            while(cin.hasNext()) {
                n = cin.nextInt();
                for(i = 0; i <= n; ++i) {
                    pre[i] = 0;
                    for(j = 0; j <= n; ++j) {
                        dp[i][j] = num[i][j] = 0;
                    }                
                }
                for(i = 0; i < n; ++i) {
                    a = cin.nextInt();
                    b = cin.nextInt();
                    num[a][b] ++;
                    if(num[a][b] > n - a - b)     num[a][b] = n - a - b;
                }
                for(j = 0; j <= n; ++j) {
                    for(i = 0; i < j; ++i) {
                        dp[i][j] = pre[i];
                        dp[i][j] += num[i][n-j];
                        pre[j] = Math.max(pre[j], dp[i][j]);
                    }
                }
                ans = 0;
                for(i = 0; i < n; ++i) {
                    ans = Math.max(ans, dp[i][n]); 
                }
                System.out.println(ans);
            }
        }
    }
  • 相关阅读:
    bootstrap模版
    spark
    断点
    如何让数据动起来?Python动态图表制作一览。
    证据就在代码里
    windows下oracle的ora-27100错误
    SQL优化 | MySQL问题处理案例分享三则
    MySQL安装好之后本地可以连接,远程连接卡死
    MySQL千万级大表在线变更表结构
    ORA-39006错误原因及解决办法
  • 原文地址:https://www.cnblogs.com/vongang/p/2689302.html
Copyright © 2011-2022 走看看