区间dp/线性dp,HDU 4293 Groups

news2024/12/26 4:34:19

一、题目

1、题目描述

  After the regional contest, all the ACMers are walking alone a very long avenue to the dining hall in groups. Groups can vary in size for kinds of reasons, which means, several players could walk together, forming a group.
  As the leader of the volunteers, you want to know where each player is. So you call every player on the road, and get the reply like “Well, there are Ai players in front of our group, as well as Bi players are following us.” from the ith player.
  You may assume that only N players walk in their way, and you get N information, one from each player.
  When you collected all the information, you found that you’re provided with wrong information. You would like to figure out, in the best situation, the number of people who provide correct information. By saying “the best situation” we mean as many people as possible are providing correct information.

2、接口描述

2.1​输入

  There’re several test cases.
  In each test case, the first line contains a single integer N (1 <= N <= 500) denoting the number of players along the avenue. The following N lines specify the players. Each of them contains two integers Ai and Bi (0 <= Ai,Bi < N) separated by single spaces.
  Please process until EOF (End Of File).

 
 

3 2 0 0 2 2 2 3 2 0 0 2 2 2

2.2输出

  For each test case your program should output a single integer M, the maximum number of players providing correct information.

Sample Output

2 2

3、原题链接

Problem - 4293 (hdu.edu.cn)


二、解题报告

1、思路分析

读了题目之后只觉倍感抽象,很怪异,几番思索后,才有思路。

我们将正在行进的这个队伍从前到后依次编号1~n

那么对于回答前面有a个人,后面有b个人的这个人,如果他说的是真话,那么这个人只能在区间[a + 1 , n - b]之间,这样一来我们可以把每个人根据回答放到不同的区间内

我们用数组f[a][b]记录说前面有a个人后面有b个人的人的人数,那么我们需要注意f[a][b]的上限为n - a - b,并且对于a + b >= n的回答显然是错误的,我们置之不理。

然后定义状态dp[i],代表编号[1 , i]说真话的人的最大人数,那么转移方程为

dp[i] = max(dp[i], dp[j] + f[j][n - i]),即第i个人可以跟[1 , i - 1]、[2 , i - 1]……的人为一组,那么当给i划分组后,dp[i]显然为组内人数加上dp[j]

代码很短,思路比较抽象

2、复杂度

时间复杂度:O(n^2) 空间复杂度:O(n^2)

3、代码详解

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <functional>
using namespace std;
#define IOTIE ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
const int N = 505;
int dp[N], f[N][N], n;
void solve()
{
    while (cin >> n)
    {
        memset(f, 0, sizeof(f)), memset(dp, 0, sizeof(dp));

        for (int i = 0, a, b; i < n; i++)
            cin >> a >> b, f[a][b] += (a + b < n && f[a][b] < n - a - b);
        for (int i = 1; i <= n; i++)
            for (int j = 0; j < i; j++)
                dp[i] = max(dp[i], dp[j] + f[j][n - i]);
        cout << dp[n] << '\n';
    }
}
int main()
{
    IOTIE
    freopen("in.txt", "r", stdin);
    int _ = 1;
    // cin >> _;
    while (_--)
    {
        solve();
    }
    return 0;
}

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

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

相关文章

RuoYi-Vue前后端分离后台开发框架运行详细教程

一、官网下载代码 RuoYi-Vue是一款基于SpringBootVue的前后端分离极速后台开发框架。 若依官网&#xff1a;http://ruoyi.vip演示地址&#xff1a;http://vue.ruoyi.vip代码下载&#xff1a;https://gitee.com/y_project/RuoYi-Vue 下载之后解压&#xff0c;ruoyi-ui是前端代…

【JavaWeb】过滤器 Filter

文章目录 过滤器是什么&#xff1f;一、过滤器概述二、过滤器工作位置图解三、Filter接口API四、过滤器使用4.1 定义一个过滤器类,编写功能代码&#xff1a;4.2 xml配置&#xff1a;4.3 定义 servletG 目标资源 模拟测试 :4.4 过滤图解 五、过滤器生命周期六、过滤器链的使用6.…

香港服务器IP段4c和8c的区别及SEO选择建议

随着互联网的快速发展&#xff0c;服务器IP段的选择对于网站SEO优化至关重要。香港服务器IP段4C和8C是两种常见的IP段&#xff0c;它们在SEO优化中具有不同的特点和优势。本文将详细介绍这两种IP段的区别&#xff0c;并给出相应的SEO选择建议。 一、香港服务器IP段4C和8C的区别…

每日coding 2846. 边权重均等查询 236. 二叉树的最近公共祖先 35. 搜索插入位置 215. 数组中的第K个最大元素 2. 两数相加

2846. 边权重均等查询 xs&#xff0c;已放弃&#xff0c;考到直接寄 236. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&…

向量表示在自然语言、知识图谱和图像视觉中的应用

目录 前言1 不同应用的向量表示1.1 自然语言中的向量表示1.2 知识图谱中的向量表示1.3 图像视觉中的向量表示 2 词的向量表示2.1 One-hot encoding的限制2.2 Bag-of-Words模型的不足2.3 Word Embedding的引入2.4. 词的分布式表示与语境关系 3 词向量模型3.1 CBoW&#xff08;Co…

swagger2 和 knife4j 整合

swagger整合knife4j 导入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version></dependency>引入配置 我们自己写一个配置类也好,我这里写…

乐观锁的底层实现以及如何解决ABA问题

什么是乐观锁&#xff1f;乐观锁底层是如何实现的&#xff1f; 乐观锁是一种并发控制的策略。在操作数据的时候&#xff0c;线程读取数据的时候不会进行加锁&#xff0c;先去查询原值&#xff0c;操作的时候比较原来的值&#xff0c;看一下是都被其他线程修改&#xff0c;如果…

OpenHarmony—TypeScript到ArkTS约束说明

对象的属性名必须是合法的标识符 规则&#xff1a;arkts-identifiers-as-prop-names 级别&#xff1a;错误 在ArkTS中&#xff0c;对象的属性名不能为数字或字符串。通过属性名访问类的属性&#xff0c;通过数值索引访问数组元素。 TypeScript var x { name: x, 2: 3 };c…

STM32标准库开发—W25Q64详细介绍

W25Q64简介 Flash编程原理都是只能将1写为0&#xff0c;而不能将0写成1.所以在Flash编程之前&#xff0c;必须将对应的块擦除&#xff0c;而擦除的过程就是将所有位都写为1的过程&#xff0c;块内的所有字节变为0xFF.因此可以说&#xff0c;编程是将相应位写0的过程&#xff0c…

Ubuntu 22.04 安装tomcat

tomcat是常用的Java服务容器,这篇文章我们就来讲讲如何安装它。 更新软件包 首先是更新软件包,这是最常规的操作 sudo apt update 然后是开始安装,不多一会就可以安装好了 sudo apt install tomcat9 然后看一下状态 sudo systemctl status tomcat9 发现虽然启动了,但…

IS-IS:03 ISIS链路状态数据库

一个 OSPF 链路状态数据库是若干条 LSA 的集合。与此相似&#xff0c;一个 IS-IS 链路状态数据库是若干条 LSP 的集合。与 OSPF 链路状态数据库不同&#xff0c; IS-IS 链路状态数据库有 level-1 和 level-2 之分。 在IS-IS 协议中&#xff0c;每一条 LSP 都有一个剩余生存时间…

自学Java的第48,49,50,51天

IO流 应用场景 IO流的分类 文件字节输入流 写法 读取一个字节 读取多个字节 优化&#xff1a; 注意&#xff1a; 读取全部字节 写法 注意&#xff1a; 文件字节输出流 写法 案例&#xff1a; 写法 释放资源的方法 try-catch-finally 写法 try-with-resource 写法 字符流 …

linux内网搭建NFS网络文件系统(rpm)

linux 内网搭建nfs网络文件系统&#xff08;rpm包&#xff09; 前言&#xff1a;一、上传安装包到服务器二、NFS服务端配置三、建立共享目录(服务器端和客户端)四、添加配置共享目录&#xff08;服务器端&#xff09;五、NFS客户端配置六、测试共享服务 前言&#xff1a; 用自…

Type-C平板接口协议芯片介绍,实现单C口充放电功能

在现代平板电脑中&#xff0c;Type-C接口已经成为了一个非常常见的接口类型。相比于传统的USB接口&#xff0c;Type-C接口具有更小的体积、更快的传输速度和更方便的插拔体验。但是&#xff0c;在使用Type-C接口的平板电脑上&#xff0c;如何实现单C口充电、放电和USB2.0数据传…

【iOS ARKit】同时开启前后摄像头BlendShapes

在上一节中已经了解了 iOS ARkit 进行BlendShapes的基本操作&#xff0c;这一小节继续实践同时开启前后摄像头进行人脸捕捉和世界追踪。 iOS设备配备了前后两个摄像头&#xff0c;在运行AR 应用时&#xff0c;需要选择使用哪个摄像头作为图像输人。最常见的AR 体验使用设备后置…

修复WordPress内部服务器错误的步骤及解决方案

WordPress是一款广泛使用的开源内容管理系统&#xff0c;但在使用过程中&#xff0c;可能会遇到各种内部服务器错误。这些错误可能由于多种原因引起&#xff0c;例如插件冲突、文件权限问题、服务器配置不当等。为了帮助您快速解决这些问题&#xff0c;本文将为您提供一套详细的…

行测-言语:2.语句表达

行测-言语&#xff1a;2.语句表达 1. 语句排序题 捆绑就是看两句话是不是讲的同一个内容&#xff0c;相同内容的句子应该相连。 1.1 确定首句 1.1.1 下定义&#xff08;……就是 / 是指&#xff09; A 1.1.2 背景引入&#xff08;随着、近年来、在……大背景 / 环境下&#…

五招搞定找不到vcruntime140.dll无法继续执行此代码问题

在计算机系统或应用程序运行过程中&#xff0c;如果出现“找不到vcruntime140.dll”这一错误提示&#xff0c;可能会引发一系列的问题和影响。vcruntime140.dll是Microsoft Visual C Redistributable的一部分&#xff0c;这是一个至关重要的运行库文件&#xff0c;对于许多基于…

one-stage/two-stage区别

One-stage和Two-stage是目标检测中的两种主要方法&#xff0c;它们在处理速度和准确性上存在显著差异。以下是两者的主要区别&#xff1a; 处理流程&#xff1a;One-stage方法通过卷积神经网络直接提取特征&#xff0c;并预测目标的分类与定位&#xff0c;一步到位&#xff0c…

他凌晨1:30给我开源的游戏加了UI|模拟龙生,挂机冒险

一、前言 新年就要到了&#xff0c;祝大家新的一年&#xff1a;&#x1f432; 龙行龘龘&#xff0c;&#x1f525; 前程朤朤&#xff01; 白泽花了点时间&#xff0c;用 800 行 Go 代码写了一个控制台的小游戏&#xff1a;《模拟龙生》&#xff0c;在游戏中你将模拟一条新生的…