题意:

n个人说自己前面有多少人 后面有多少人

求出说真话人数最多的情况

每个样例有 一个 n 表示n个人

接下来 n 行有a b 表示他前面的人数和后面的人数

思路:

如果已经知道了其中一组的人数~

就往前找..找在这一组之前与这一组的话不矛盾的最多人数

Tips:

用dp[ i ][ j ] 表示从第 i+1 个人到第 j 个人为一组的时候前j个人中说真话最多的人

用tt[ i ][ j ] 表示从第 i 个人到第 j 个人之间站了多少人

用an[ i ]表示到第 i 个人前面说真话的人最多人数

tt[ a ][ b ]的人数不应该多于 n-(b-a+1)

Code:

View Code

 1 #include <stdio.h>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5
 6 int dp[510][510];
 7 int tt[510][510], an[510];
 8
 9 int main()
10 {
11     int i, j, k;
12     int n, a, b;
13     while(scanf("%d", &n) != EOF)
14     {
15         memset(dp, 0, sizeof(dp));
16         memset(an, 0, sizeof(an));
17         memset(tt, 0, sizeof(tt));
18
19         for(i = 0; i < n; ++i) {
20             scanf("%d %d", &a, &b);
21             if(a+b < n && tt[a][n-b] < (n-a-b))
22                 tt[a][n-b]++;
23         }
24
25         for(i = 1; i <= n; ++i)
26         for(j = 0; j < i; ++j) {
27             dp[j][i] = an[j]+tt[j][i];
28             an[i] = max(an[i], dp[j][i]);
29         }
30
31         printf("%d\n", an[n]);
32     }
33     return 0;
34 }

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

转载于:https://www.cnblogs.com/Griselda/archive/2012/09/18/2692393.html

Hdu 4293 DP相关推荐

  1. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  2. hdu 1171 dp(多重背包)

    View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...

  3. hdu 4293 Groups DP

    http://acm.hdu.edu.cn/showproblem.php?pid=4293 题意: 有n个人分成了若干组走在一条林荫道路上,导游为了能够确定人数,要求每个人喊出自己所在的队伍前边有多 ...

  4. HDU 4293 Groups (线性dp)

    OJ题目:click here~~ 题目分析:n个人分为若干组 , 每一个人描写叙述其所在的组前面的人数和后面的人数.求这n个描写叙述中,最多正确的个数. 设dp[ i ] 为前i个人的描写叙述中最多 ...

  5. HDU 4832(DP+计数问题)

    HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行.竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...

  6. hdu 5086(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和. 解题思路:这道题直接枚举肯定不行 ...

  7. hdu 2059(dp)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  8. HDU 3646 DP + 二分

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3646 题意:你有N把武器,每把武器可以对敌人造成一定的伤害(et:攻击力500,敌人血量为200,杀死敌人 ...

  9. hdu 3905(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3905 思路:dp[i][j]表示前i分钟,睡了j分钟收获的的最大价值,并记tmp_dp[i][j]为从 ...

最新文章

  1. PCB的EMC设计之PCB叠层结构
  2. 三门问题(蒙提霍尔悖论)的Python代码实现
  3. ArrayList Iterator remove java.lang.UnsupportedOperationException
  4. 技术性图文还原那些腿长得能改变地球引力场的TB奇女子
  5. JS获取页面元素并修改
  6. 在C++中反射调用.NET(二)
  7. 20210325:力扣递归,回溯类型题目合集
  8. android 扫描照片功能,巧把安卓手机打造成扫描仪:拍照识别文档、手写笔记转PDF(图)...
  9. 说说TCP,UDP和socket,Http之间联系和区别
  10. 微软 smtp 服务器,配置 SMTP 服务器
  11. 面试官:谈一下你对Vue组件化的理解
  12. python教程系列(三.6.2、XML)
  13. 折线统计html,canvas制作简单的HTML图表,折线或者矩形统计(原创)
  14. STL-Intelligent IME
  15. C语言实现反汇编【微机原理】
  16. 【Web前端】京东商城项目实战HTML+CSS+JavaScript
  17. Linux7 下Hadoop集群用户管理方案之五 安装Hadoop集群遇到的坑
  18. RS/CQI/SINR/RSRP/RSSI都是什么意思?
  19. Yii Framework 开发教程(32) Zii组件-GridView示例
  20. DPC_WATCHDOG_VIOLATION蓝屏分析

热门文章

  1. cuda版本查看_ubuntu安装CUDA
  2. oracle系统库名,Oracle 札记之 一:数据库名,数据库实例名,数据库域名,操作系统环境变量...
  3. java 连接ldap_ldap java 连接demo
  4. linux系统硬件配置查看方法
  5. 串传送指令MOVSB MOVSW
  6. 数据结构--链式线性表
  7. gp的分布、分区策略(概述)
  8. 《dp补卡——多重背包》
  9. LeetCode 572. 另一个树的子树 思考分析
  10. java treemap_Java TreeMap lastKey()方法与示例