hdu 4293 Groups DP

http://acm.hdu.edu.cn/showproblem.php?pid=4293

题意:

有n个人分成了若干组走在一条林荫道路上,导游为了能够确定人数,要求每个人喊出自己所在的队伍前边有多少人Ai表示,后边有多少人Bi表示,于是我们得到了n条信息。这里面有错误的信息也有正确的信息,要求我们尽量使正确信息最大求出正确信息的数量。

思路:

想了很久一直在捉摸它的最有子结构从何而来,怎样dp....今天下午虎哥给了点提示终于明白了如何做了。。。YM虎哥.....

首先我们根据每个人提供的前边Ai个人,后边Bi个人,可以确定这个人所在队伍的人数的范围。于是我们得到了N个区间,我只要求出不想交区间最多就好了。如果区间相交的话就不能确定该队伍了。还有就是要预处理区间相同也即在同一个队伍的人数不能超过区间的值。 

View Code
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>#define CL(a,num) memset((a),(num),sizeof(a))
#define iabs(x)  ((x) > 0 ? (x) : -(x))
#define Min(a,b) (a) > (b)? (b):(a)
#define Max(a,b) (a) > (b)? (a):(b)#define ll __int64
#define inf 0x7f7f7f7f
#define MOD 100000007
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0)
#define test puts("<------------------->")
#define maxn 10000007
#define M 100007
#define N 507
using namespace std;
//freopen("din.txt","r",stdin);struct node{int l,r;int len;int num;
}seg[N];
int dp[N];
int n,length;int cmp(node a,node b){return a.l < b.l;
}
void insert(int l,int r){int i;for (i = 0; i < length; ++i){if (seg[i].l == l && seg[i].r == r){//如果已经存在并且还没有达到区间值就可添加if (seg[i].num < seg[i].len) seg[i].num++;break;}}if (i >= length){seg[length].l = l;seg[length].r = r;seg[length].len = r - l + 1;seg[length].num = 1;length++;}
}
bool isok(int i,int j){//printf("****%d %d %d %d\n",i,j,seg[i].r,seg[j].l);if (seg[i].l <= seg[j].r) return false;//判断区间是否相交else return true;
}
void solve(){int i,j;CL(dp,0);dp[0] = seg[0].num;//dp求值for (i = 1; i < length; ++i){for (j = 0; j < i; ++j){if (isok(i,j)){//puts("DDD");dp[i] = max(dp[i],dp[j] + seg[i].num);}}if (dp[i] == 0){dp[i] = seg[i].num;}}
}
int main(){//freopen("din.txt","r",stdin);int i;int Ai,Bi;while (~scanf("%d",&n)){length = 0;for (i = 0; i < n; ++i){scanf("%d%d",&Ai,&Bi);int R = n - Ai;int L = Bi + 1;if (L > R) continue;//这样的肯定不满足insert(L,R);//查看区间
        }sort(seg,seg + length,cmp);//for (i = 0; i < length; ++i) printf(">>>%d %d %d %d\n",seg[i].l,seg[i].r,seg[i].len,seg[i].num);
        solve();int MAX = -inf;for (i = 0; i < length; ++i){// printf(">>%d\n",dp[i]);MAX = max(MAX,dp[i]);}printf("%d\n",MAX);}return 0;
}

 

转载于:https://www.cnblogs.com/E-star/archive/2012/09/18/2691026.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IAR切BANK--命令连接器文件xcl格式说明

IAREWARM中段后缀含义 后缀 段类型 含义 AC CONST 绝对地址定位常数 AN DATA 用关键字__no_init声明的绝对地址定位数据 C CONST 常数 I DATA 初始化值为非0的数据 ID CONST 上述数据的初始式 N DATA 未初始化的数据 Z DATA 初始化值为0的数据 ROM用于…

ARM系列处理器的分类

1.ARM ARM即以英国ARM&#xff08;Advanced RISC Machines&#xff09;公司的内核芯片作为CPU&#xff0c;同时附加其他外围功能的嵌入式开发板&#xff0c;用以评估内核芯片的功能和研发各科技类企业的产品. ARM 微处理器目前包括下面几个系列&#xff0c;以及其它厂商基于 AR…

DBA_Oracle Table Partition表分区概念汇总(概念)

2014-06-20 Created By BaoXinjian 一、摘要 有关表分区的一些维护性操作&#xff1a; 注&#xff1a;分区根据具体情况选择。 表分区有以下优点&#xff1a; 1、数据查询&#xff1a;数据被存储到多个文件上&#xff0c;减少了I/O负载&#xff0c;查询速度提高。 2、数据修剪&…

electron打包vue项目

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 创建项目 点击这里 添加electron-builder 1、在项目目录下运行命令&#xff1a;vue add electron-builder 2、electron-…

Hdu 4293 DP

题意&#xff1a; n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路&#xff1a; 如果已经知道了其中一组的人数~ 就往前找..找在这一组之前与这一组的话不矛盾的最多人数 Ti…

IAR切BANK--程序中的使用

一、在IAR的集成开发环境中实现数据变量定位方法如下三种 1、__no_init char alpha 0x0200; 2、#pragma location 0x0202 const int beta; 3、const int gamma 0x0204 3; 或&#xff1a; 1&#xff09;__no_init int alpha "MYSEGMENT"; //MYSEGMENT段可在…

你需要知道的vue2 jsx render函数

通常开发vue我们使用的是模板语法&#xff0c;其实还有和react相同的语法&#xff0c;那就是render函数&#xff0c;同样支持jsx语法。 Vue 的模板实际是编译成了 render 函数。 0 传统的createElement方法 createElement(anchored-heading, {props: {level: 1}}, [createEleme…

|与||的区别

在众多编程语言中&#xff0c;|与||代表了不同的运算。其中|是按位或运算&#xff0c;||是逻辑或运算。从字面意思来理解&#xff0c;|常可以用于具体数值的计算&#xff0c;结果为数值&#xff0c;而||是用来逻辑运算的没结果只有False或者True。例如int a 2; int b 3; int …

CSS/CSS3语法新特性笔记

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 CSS层叠样式表 三大特性 层叠性&#xff1a;相同的样式会覆盖 继承性&#xff1a;属性可向下继承 优先级&#xff1a;范…

vb 坐标点击

引用 &#xff1a;http://www.vbgood.com/thread-113934-1-1.html 第一步在窗体的通用栏写如下代码&#xff1a;Private Type pointapiX As LongY As LongEnd TypePrivate Declare Function GetCursorPos Lib "user32" (lpPoint As pointapi) As Long第二步在窗体上放…

开始写技术博客

2012年年底掏钱参加的java的培训&#xff0c;13年初找JAVA工作&#xff0c;发现很难找&#xff0c;公司需要的都是有工作经验的&#xff0c;刚刚从培训机构出来的学生不受欢迎&#xff0c;工作很难找&#xff0c;一个月之后打算退而求其次&#xff0c;找了份PHP的工作(那时对ph…

C# winform 自定义皮肤制作

最近要做个软件正在做技术准备&#xff0c;由于WINFORM生成的窗体很丑陋&#xff0c;一个好的软件除了功能性很重要外&#xff0c;UI的体验也是不容忽视的。习惯性的在网上搜素了下&#xff0c;换肤控件也有好几款&#xff0c;但是有些用起来不是很好用&#xff0c;好点的也要花…

Vue 源码解读(10)—— 编译器 之 生成渲染函数

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 前言 这篇文章是 Vue 编译器的最后一部分&#xff0c;前两部分分别是&#xff1a;Vue 源码解读&#xff08;8&#xff09;…

蓝牙PROFILE

Bluetooth的一个很重要特性&#xff0c;就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范。为了更容易的保持Bluetooth设备之间的兼容&#xff0c;Bluetooth规范中定义了Profile。Profile定义了设备如何实现一种连接或者应用&#xff0c;你可以把Profile理解为连接层或者…

Laravel Session 遇到的坑

这两天遇到了一个很奇怪的问题&#xff0c;更新session &#xff0c;session的值不变。经过一番追查&#xff0c;终于找到问题&#xff0c;并搞明白了原理。写这篇博客记录下。 框架版本 Laravel 5.4 问题 先来描述下问题&#xff0c;我在我们项目基础的Middleware中&#xff0…

bootstrap 中这段代码 使bundles 失败

bootstrap 中这段代码 使bundles 失败 _:-ms-fullscreen, :root input[type"date"], _:-ms-fullscreen, :root input[type"time"], _:-ms-fullscreen, :root input[type"datetime-local"], _:-ms-fullscreen, :root input[type"month"…

敏捷结果30天之第十二天:效率角色-你是启动者还是完成者

一.学习1.启动者&#xff1a;善于思考新想法&#xff0c;有太多想法还未开始&#xff0c;喜欢启动一些新事物&#xff0c;但是当事物成型之后就会离开去寻找下一个创新点。2.完成者&#xff1a;喜欢通过从头到尾的做完一件完整的事情来获得成就满足感。知道自己属于那种效率角色…

netty系列之:EventLoop,EventLoopGroup和netty的默认实现

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 简介 EventLoopGroup和EventLoopEventLoopGroup在netty中的默认实现EventLoop在netty中的默认实现总结 简介 在net…

BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]

1444: [Jsoi2009]有趣的游戏 题意&#xff1a;每种字母出现概率\(p_i\)&#xff0c;有一些长度len的字符串&#xff0c;求他们出现的概率 套路DP的话&#xff0c;\(f[i][j]\) i个字符走到节点j的概率&#xff0c;建出转移矩阵来矩乘几十次可以认为是无穷个字符&#xff0c;就得…

Oracle安装部署之RedHat安装Oracle11g_R2

硬件配置 内存 &#xff1a;≥1G 硬盘空间&#xff1a;≥10G 上传oracle11g安装包&#xff1a; putty上用wcw用户登录&#xff0c;通过ftp服务上传oracle安装文件到/home/wcw目录下解压 #unzip linux_11gR2_database_1of2.zip #unzip linux_11gR2_database_2of2.zip 检查和安装…