Luogu P1280 Niko的任务【线性dp】By cellur925

Nikonikoni~~

题目传送门

这是当时学长讲dp的第一道例题,我还上去献了个丑,然鹅学长讲的方法我似董非董(???

我当时说的怎么设计这道题的状态,但是好像说的是二维,本题数据范围均在10000级别,n²肯定会空间炸掉的(然而我当时还不懂...)

所以本题的状态肯定是一维的。

今天再做这道题,状态很容易出来了,设f[i]为1~i时间(到第i刻)的最大闲暇时间。然后日常不会推转移方程Orz。题解真香。

但,这个状态看似是正确的而且很可做的样子,但是我们仔细一想就会发现在这个状态下转移的漏洞:

  如果当前时刻有很多可以开始的任务,但他们的结束时间可能各不相同,那么所能获得的闲暇时间就各有优劣了。正推看来是有弊病的。

那么我们就选择逆推:

设f[i]表示i~n所能获得的最大闲暇时间。我们还需要统计当前时刻有没有任务开始了。

  如果当前时刻没有任务,就继承i+1时刻的闲暇状态;f[i]=f[i+1]+1;

  如果当前时刻有任务,就扫一遍当前时刻开始的全部任务,看从他们中谁的结束时间转移而来所收获的闲暇最多;即     f[i]=max{f[i+task[++pos].endd]}。pos是我们记录当前到第几个任务的量,由于逆推,我们初始需要把任务按开始时间从大到小进行排序。

Code

 1 #include<cstdio>
 2 #include<algorithm>
 3 
 4 using namespace std;
 5 
 6 int n,m,pos;
 7 int f[20000],sum[20000];
 8 struct node{
 9     int beginn,endd;
10 }task[20000];
11 
12 bool cmp(node a,node b)
13 {
14     return a.beginn>b.beginn;
15 }
16 
17 int main()
18 {
19     scanf("%d%d",&n,&m);
20     for(int i=1;i<=m;i++)
21         scanf("%d%d",&task[i].beginn,&task[i].endd),sum[task[i].beginn]++;
22     sort(task+1,task+1+m,cmp);
23     for(int i=n;i>=1;i--)
24     {
25         if(!sum[i]) f[i]=f[i+1]+1;
26         else 
27             for(int j=1;j<=sum[i];j++)
28                 f[i]=max(f[i],f[i+task[++pos].endd]);
29     }
30     printf("%d",f[1]);
31     return 0;
32 }
View Code

 

转载于:https://www.cnblogs.com/nopartyfoucaodong/p/9530802.html

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

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

相关文章

这项技术竟然一个字也不放过!

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文由腾讯云AI中心发表于云社区专栏 摘要&#xff1a;在日常生活工作中&#xff0c;我们难免会遇到一些问题&#xff0c;比如自己辛辛苦苦写完的资料&#xff0c;好不容易打印出来却发现源文件丢了;收集了…

AltiumDesigner17快捷键

画线CtrlW转载于:https://www.cnblogs.com/scrazy/p/9533996.html

Capistrano deploy flow outline

Official flow reference: 点击打开链接 An example flow: Deploy: starting Rbenv ensures that the version we configured on config/deploy.rb is installed and that it can write on disc. Checks git repository Create needed folder tree /var/www App_name Shared Pu…

nginx应用geoip模块,实现不同地区访问不同页面的需求(实践版)

https://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html 搞了几天没有搞定&#xff0c;这篇文章一下子解决了问题&#xff0c;点赞 记得nginx编译时一定要加载geoip这个模块 https://blog.csdn.net/beyond__devil/article/details/52838422 …

GoCD notes

Every task in a job is run as an independent program.Changes made by a task to any of its environment variables will not affect subsequent tasks.Changes made by a task on the file system will be visible to subsequent tasks.

给网页标题添加icon小图标

so easy: 给网页标题添加icon小图标: 直接在html文件的head部分添加下面代码&#xff08;注意href的路径&#xff09;&#xff1a; <link rel"icon" type"image/x-icon" href"../static/images/brand.jpg" />转载于:https://www.cnblogs.c…

百练2815:城堡问题(DFS)

描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # | # # # # # #---#####---#####---#####---# 3 # | | # # # # # #---#########---#####---#---#…

C++实现二叉树的相应操作

1. 二叉树的遍历&#xff1a;先序&#xff08;递归、非递归&#xff09;&#xff0c;中序&#xff08;递归、非递归&#xff09;&#xff0c;后序&#xff08;递归、非递归&#xff09;。 #include <iostream> #include <string> #include <stack>using name…

MAC 修改文件夹以及子文件夹和子文件权限 以及 修改文件夹owner

1. 打开Finder&#xff0c;找到想要修改权限的文件夹&#xff0c;打开文件信息对话框。 两种打开方式&#xff1a; 右击文件夹&#xff0c;选择“get info”。 使用“ctrli”。 在弹出对话框底部的“Sharing&Permission” section可以查看文件夹权限信息&#xff1a;N…

windows中使用scrapyd遇到的问题

1.window下‘scrapyd_deploy’不是内部或外部命令&#xff0c;也不是可运行的程序 在windows上使用scrapyd-client 安装后&#xff0c;并不能使用相应的命令scrapyd-deploy 需要在"C:\Python27\Scripts" 目录下 增加scrapyd-deploy.bat文件 内容填充为&#xff1a; …

MAC 设置$PATH 关闭terminal后就失效 解决方案

1 目标 修改$PATH的值 2 问题 在terminal中修改了$PATH&#xff0c;关闭terminal或者换个terminal就不存在了。具体例子&#xff1a; 2.1 查看$PATH当前值 在terminal中输入 echo $PATH2.2 修改$PATH值 此例将/test/folder 加到$PATH的后面。 在terminal中输入 export …

MAC 更新 PHP 指南 以及 PHP常用命令示例

OS: Mac OS X EI Capitan 当前PHP版本&#xff1a;5.5.30 升级后PHP版本&#xff1a;7.0.11 升级步骤参考&#xff1a;https://coolestguidesontheplanet.com/upgrade-php-on-osx/ 1. 安装新版本PHP&#xff1a; 打开terminal&#xff0c;运行&#xff1a; curl -s http://…

mac 鼓捣php 多版本切换

php-v 和 phpinfo()不一样 1.切换httpd.conf 里面的.so文件 2.sudo vi ~/.zshrc 切换 export PATH"/usr/local/opt/php7.1/bin:$PATH"export PATH"/usr/local/opt/php7.1/sbin:$PATH"#export PATH"/usr/local/opt/php7.0/bin:$PATH"#export PATH…

【刷题】BZOJ 2194 快速傅立叶之二

Description 请计算C[k]sigma(a[i]*b[i-k]) 其中 k < i < n &#xff0c;并且有 n < 10 ^ 5。 a,b中的元素均为小于等于100的非负整数。 Input 第一行一个整数N,接下来N行&#xff0c;第i2..iN-1行&#xff0c;每行两个数&#xff0c;依次表示a[i],b[i] (0 < i …

MAC 安装 Magento2 community edition 详细步骤

花了好几天时间&#xff0c;终于在Mac OS X EI Capitan上成功安装magento2.1.1. 此处详细记录每个步骤&#xff0c;以备未来使用。 参考magento官方指南&#xff1a;(Easy) Install the Magento archive on your server 1. 确保系统满足prerequisite&#xff1a; 建议不要使用…

22_IO_第22天(File、递归)_讲义

今日内容介绍 1、File 2、递归 xmind&#xff1a;下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Eaj9yP5i0x4PiJsZA4StQg 密码&#xff1a;845a 01IO技术概述 * A:IO技术概述* a: Output* 把内存中的数据存储到持久化设备上这个动作称为输出&#xff08;写&a…

MAC PHP7 如何disable xdebug

1. 查看xdebug当前状态是否是enable 打开terminal&#xff0c;输入&#xff1a; php -m | grep xdebugterminal返回xdebug&#xff0c;说明现在xdebug是enable状态。 2.找到php配置文件夹 在terminal中输入&#xff1a; which php 进入php.d文件夹&#xff0c;可以看到exten…

django之上传图片

上传图片 当Django在处理文件上传的时候&#xff0c;文件数据被保存在request.FILESFILES中的每个键为<input type"file" name"" />中的name注意&#xff1a;FILES只有在请求的方法为POST 且提交的<form>带有enctype"multipart/form-data…

『 Luogu P3205 』 HNOI2010 合唱队

解题思路 设置两个二维数组 $f$ 和 $g$&#xff0c;含义如下。 $f[l][r]$ 表示在期望得到的队形中 $l\rightarrow r$ 这段区间初始队形排列的方案数&#xff0c;并且最后一个加入进去的是第 $l$ 个人。 $g[l][r]$ 表示在期望得到的队形中 $l\rightarrow r$ 这段区间初始队形排列…

福大软工1816 · 第一次作业 - 准备

福大软工1816 第一次作业 - 准备 期待→迷茫→恐惧→振作or放弃&#xff1f; 前言&#xff1a;个人情况概述 虽然长辈都说我是个聪明的孩子&#xff0c;但我觉得也许那只是客套话——还记得从小学时我的成绩仅处于中游偏下&#xff0c;初中稍有提升&#xff0c;但到高中又回到…