2018.12.1 万圣节的小L
我回来啦
试题描述
|
今天是万圣节,小L同学开始了一年一度的讨要糖果游戏,但是在刚刚过去的比赛中小有成就的他打算给自己增加一点难度:如果没有讨到每一家的糖果就算输。 已知小L共有n(n不大于10000)个邻居,他们都在同一条街上(可以近似看成一条直线),第i个邻居的坐标是xi。L同学的妈妈会在一开始把他送到任意邻居的门前。现在已知所有邻居会在di时间后休息(休息以后不能再去打扰),求访问完所有点的最短时间,如果无解输出“No solution”。 |
输入
|
输入第一行为一个正整数表示n,接下来n行,每行两个用空格隔开的数,分别表示第i个邻居的位置和休息时间。
|
输出
|
输出一个数,表示最短时间,无解输出“No solution”。
|
输入示例
|
5
1 3 3 1 5 8 8 19 10 15 |
输出示例
|
11
|
看起来是一个搜索或者dp
然鹅发现搜索会TLE
考虑dp:
为了转移我们存储的数据我们不能采用普通的区间dp
我们不难发现,为了遍历直线上的每一个点,其中一个端点一定是最后经过的点(自己可以推一下)
所以我们用dp[i][j][0]表示从i到j结束在左端点的最短时间
用dp[i][j][1]表示从i到j结束在右端点的最短时间
于是对于i到j+1的区间在合法范围内就有了两种选择:从i到j区间转移或者从i-1到j+1区间转移
但是发现空间开不下于是我们换一种存储方式
为了节省空间我们只存储区间起点(压缩一维存储区间长度奇数偶数)
于是我们又有了四种转移方式:
对于从i到j的区间,从i-1到j转移(两种)或者从i到j-1转移(两种)
关于转移:
对于区间dp来讲,无后效性体现在从一步到下一步的转移
所以转移的代价是从结束时间到下一个节点的距离
关于合法:主要就是时间不要超过
上代码
#include<iostream>
#define INF 0x3f3f3f3f
using namespace std;
int n,dp[][][],xx[],d[],nx;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d%d",&xx[i],&d[i]);
for(int i=;i<=n;i++)dp[][i][]=dp[][i][]=;
for(int i=;i<n;i++)
{
int x=nx;nx^=;
for(int j=;j<=n-i;j++)
{
dp[nx][j][]=min(dp[x][j+][]+xx[j+]-xx[j],dp[x][j+][]+xx[j+i]-xx[j]);
dp[nx][j][]=min(dp[x][j][]+xx[j+i]-xx[j],dp[x][j][]+xx[j+i]-xx[j+i-]);
if(dp[nx][j][]>d[j])dp[nx][j][]=INF;
if(dp[nx][j][]>d[i+j])dp[nx][j][]=INF;
}
}
int ans=min(dp[nx][][],dp[nx][][]);
if(ans>=INF)puts("No solution");
else printf("%d",ans);
return ;
}
2018.12.1 万圣节的小L的更多相关文章
- LRJ入门经典-0907万圣节的小L306
原题 LRJ入门经典-0907万圣节的小L306 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 今天是万圣节,小L同学开始了 ...
- 微信小程序 - 接口更新记录以及解决方案(2018/12/26)
2018/8/17 - 背景音频需要在app.json添加requireBackGroundModes 2018/9/12 - 微信更改获取用户信息接口/获取位置等接口 - button 2018/1 ...
- loli的测试-2018.12.9
模拟赛-2018.12.9 这是NOIP之后第一次模拟赛...但是考的比较悲惨. 非常喜欢写考试总结,不知道为什么... T1:https://www.luogu.org/problemnew/sho ...
- ACM D的小L
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给 ...
- nyoj-366-D的小L(求全排列)
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡 ...
- nyoj-----D的小L
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡 ...
- D的小L
D的小L 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡出了个题目想难倒匡匡(小L很D吧),有一个数n(0<n<10),写出1 ...
- nyoj 366 D的小L (全排列)
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给 ...
- nyoj 366-D的小L (next_permutation())
366-D的小L 内存限制:64MB 时间限制:4000ms 特判: No 通过数:5 提交数:7 难度:2 题目描述: 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡 ...
随机推荐
- 优雅实现INotifyPropertyChanged接口——利用Lambda表达式
原文:优雅实现INotifyPropertyChanged接口--利用Lambda表达式 参考文章 在14年的时候,曾经读过上面的参考文章,不过当时并没有怎么理解,慢慢地也就将这篇文章忘诸脑后了. 直 ...
- InitializeComponent无法识别的问题
学习Xamarin官方文档的时候,Xamarin.Forms的开始篇一直在用ContentPage讲解自己一直是创建Page,然后手动修改成继承于ContentPage,然后InitializeCom ...
- socket函数集-----网络编程必备值得拥有
accept(接受socket连线) 相关函数 socket,bind,listen,connect 表头文件 #include<sys/types.h> #include<sys/ ...
- WPF 启动唯一程序(项目,exe,实例)
原文:WPF 启动唯一程序(项目,exe,实例) 描述:用户多次快速开启WPF程序的时候 只运行起来 一个 程序(exe) 其他多开的 进程 自动关闭掉 App.xaml.cs文件 protecte ...
- 关于C#的可变长参数
可变参数 params===>> params int[] list,传入参数的类型必须是一种类型 static void Main(string[] args) { , , , ); C ...
- 【全面解禁!真正的Expression Blend实战开发技巧】序章
原文:[全面解禁!真正的Expression Blend实战开发技巧]序章 从silverlight2开始我也和大家一样一直在跟随微软的脚步,从sl2~sl4一步一步过来,总结了不少心得体会.由于各种 ...
- C# Newtonsoft.Json JObject移除属性,在序列化时忽略
原文 C# Newtonsoft.Json JObject移除属性,在序列化时忽略 一.针对 单个 对象移除属性,序列化时忽略处理 JObject实例的 Remove() 方法,可以在 指定序列化时移 ...
- 用TTcpClient和TTcpServer进行文件的传输
发送数据时有Sendln,SendBuf,SendStream.接收数据时有Receiveln,ReceiveBuf,当时我很奇怪为什么没有ReceiveStream.因为很自然的想到是对应关系的.但 ...
- 社会不是承认有学历的人, 而是承认努力过得人, 而且是真正努力过不是穷忙的人(没有学历就要多付出一倍的努力)good
送你一句 这就是你水平差的理由? 楼主你工资低是因为你技术不行, 不想努力然后怪罪学历, 为什么学历高的混得好, 因为学历高的人努力过, 你没学历技术还不行, 凭什么证明你努力过, 社会不是承认有学历 ...
- 网络包抓取开发包 Npcap
Npcap 是 Nmap 项目的网络包抓取库在 Windows 下的版本. Npcap 是致力于采用 Microsoft Light-Weight Filter (NDIS 6 LWF) 技术和 Wi ...