zoukankan      html  css  js  c++  java
  • hdu 4293

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4293

    思路:这题dp的状态比较难想,dp[i]表示前i个人最多有多少人说真话,而num[i][j]表示当前人的前面有i个人,后面有j个人的个数,于是有dp[i]=max(dp[i],dp[j]+num[j][n-i])(0<=j<i);

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 #define MAXN 555
     6 int num[MAXN][MAXN];//num[i][j]表示当前人前面有i个人,后面有j个人的个数
     7 int dp[MAXN];//dp[i]表示的是前i个人最多有多少人说真话
     8 int n;
     9 
    10 int main() {
    11     int x,y;
    12     while(~scanf("%d",&n)) {
    13         memset(num,0,sizeof(num));
    14         memset(dp,0,sizeof(dp));
    15         for(int i=1; i<=n; i++) {
    16             scanf("%d%d",&x,&y);
    17             if(x+y<n) {
    18                 num[x][y]++;
    19                 if(num[x][y]>n-x-y)num[x][y]=n-x-y;//最多也就n-x-y个人在同一组
    20             }
    21         }
    22         for(int i=1; i<=n; i++) {
    23             for(int j=0; j<i; j++) {
    24                 dp[i]=max(dp[i],dp[j]+num[j][n-i]);
    25             }
    26         }
    27         int ans=0;
    28         for(int i=1; i<=n; i++) {
    29             ans=max(ans,dp[i]);
    30         }
    31         printf("%d\n",ans);
    32     }
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    everything is nothing
    基础算法
    OC 优化目录
    iOS 更改启动视图
    单例--iOS
    OC-Objection 学习笔记之一:简单的开始
    iOS 类库列表
    IOS 上线问题
    OC强弱引用的使用规则
    设置桌面图标
  • 原文地址:https://www.cnblogs.com/wally/p/3107163.html
Copyright © 2011-2022 走看看