【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业
题解:
比较容易想到二分答案+时间逆流
这样就变成了经典的路灯问题 f[a][b][0/1]
其实可以不用二分答案
根据倒着考虑我们会发现一定是先走旁边的再走中间的
计算到当前点+下课时间所需的最小时间
代码:
神奇的wa了一个点 对拍并不能拍出来
#include <bits/stdc++.h>
using namespace std;
#define rint int
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define me(x) memset(x,0,sizeof(x))
#define ll long long
const int N=;
const int INF=1e9;
int n,m,k;
int f[N],g[N][N][],maxa,p[N];
IL void minn(rint& x,rint y)
{
if (x>y) x=y;
}
struct re{
int a,b;
}a[N];
IL bool cmp(re x,re y)
{
return x.a<y.a;
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>m>>k;
int maxa=;
rep(i,,m)
{
cin>>a[i].a>>a[i].b;
}
sort(a+,a+m+,cmp);
a[].a=INF;
int cnt=;
rep(i,,m)
{
if (a[i].a!=a[i-].a) cnt++;
f[cnt]=max(f[cnt],a[i].b);
p[cnt]=a[i].a;
}
maxa=cnt+; p[maxa]=p[maxa-];
rep(i,,N-)
rep(j,,N-) g[i][j][]=g[i][j][]=INF;
g[][maxa][]=;
dep(i,maxa,)
rep(j,,maxa-i)
{
rint k=j+i;
if (g[j][k][]!=INF)
minn(g[j+][k][],max(g[j][k][]+p[j+]-p[j],f[j+])),
minn(g[j][k-][],max(g[j][k][]+p[k-]-p[j],f[k-]));
if (g[j][k][]!=INF )
minn(g[j][k-][],max(g[j][k][]+p[k]-p[k-],f[k-])),
minn(g[j+][k][],max(g[j][k][]+p[k]-p[j+],f[j+]));
}
int ans=INF;
rep(i,,maxa)
ans=min(ans,abs(p[i]-k)+min(g[i][i][],g[i][i][]));
cout<<ans<<endl;
return ;
}
【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业的更多相关文章
- 【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业 DP
[BZOJ3379][Usaco2004 Open]Turning in Homework 交作业 Description 贝茜有C(1≤C≤1000)门科目的作业要上交,之后她要去坐巴士和奶 ...
- BZOJ 3379: [Usaco2004 Open]Turning in Homework 交作业
Description 贝茜有C(1≤C≤1000)门科目的作业要上交,之后她要去坐巴士和奶牛同学回家. 每门科目的老师所在的教室排列在一条长为H(1≤H≤1000)的走廊上,他们只在课后接收 ...
- 【bzoj3379】[Usaco2004 Open]Turning in Homework 交作业 区间dp
题目描述 数轴上有C个点,每个点有一个坐标和一个访问时间,必须在这个时间后到达这个点才算访问完成.可以在某个位置停留.每在数轴上走一个单位长度消耗一个单位的时间,问:访问所有点并最终到B花费的最小时间 ...
- [BZOJ3379] Turning in Homework
中文题目:提交作业 原文题目:Turning in Homework 传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3379 哎,今天竟然没有 ...
- bzoj 3379 - [USACO2004] 交作业
Description 一个数轴上有 \(n \le 1000\) 个位置, 每个位置有一个时间 \(t_i\) 要求在 时刻 \(t_i\) 后, 至少经过该位置一次. (去交作业) 求从 \(0\ ...
- POJ 1991 Turning in Homework(区间DP)
题目链接 Turning in Homework 考虑区间DP $f[i][j][0]$为只考虑区间$[i, j]$且最后在$a[i]$位置交作业的答案. $f[i][j][1]$为只考虑区间$[i, ...
- python学习笔记(二)python基础知识(交作业)
交作业 #!/usr/bin/env python # coding: utf-8 # # 1. 每个用户购买了多少不同种类的产品 # filename = 'train.txt' import sy ...
- ThinkPHP5作业管理系统中处理学生未交作业与已交作业信息
在作业管理系统中,学生登陆到个人中心后可以通过左侧的菜单查看自己已经提交的作业和未提交作业.那么在系统中如何实现这些数据的查询的呢?首先我们需要弄清楚学生(Student).班级(class).作业提 ...
- 使用 python 查看谁没有交作业
话说实验报告每天都要查人数,何不用程序实现 使用 python 查看谁没有交作业 version 1.0 程序嘛,肯定是可以改进的.使用该程序的前提是实验报告文件名中包含学号信息.将以上程序放在实验报 ...
随机推荐
- python3+selenium框架设计04-封装测试基类
在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个framework文件夹,在文件夹下新建Base_Page.py文件,这是用来写测试基类的文件.在项目下 ...
- requests库入门11-重定向和请求历史
默认情况下,除了head请求,requests会自动处理重定向 重定向就是会把url重新指定到另一个.比如github,使用http会自动重定向到https.一些公司也会使用网关啥的做重定向. r = ...
- hibernate框架学习之一级缓存
l缓存是存储数据的临时空间,减少从数据库中查询数据的次数 lHibernate中提供有两种缓存机制 •一级缓存(Hibernate自身携带) •二级缓存(使用外部技术) lHibernate的一级缓存 ...
- hibernate框架学习第五天:数据查询、投影等
复习day1环境搭建CRUD操作DB6个核心的APIday2TO PO DO 及其状态切换OID 自然主键 代理主键(uuid)一级缓存 Session绑定 load/get关系1对1 1对多(重点) ...
- xshell访问内网虚拟机
1 关闭虚拟机防火墙 chkconfig iptables off 2 查看VMware Network Adapter VMnet8的ip地址 3 虚拟机nat中设置端口转发,抓发至虚拟机内Linu ...
- Alpha 事后诸葛亮
前言 事后诸葛亮?作业名真的不好听,下一届还要沿用吗? 队名:小白吃 通向hjj博客的任意门 思考总结 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? ...
- 本地项目提交到github和提交更新(转)
一:首先当然是去github注册账号了. 二:注册完毕登录后,在自己的首页上面点击右上角“+”号,然后选择New repository,或者直接点击下面的绿色按钮,创建一个新仓库.如图: 然后填入仓库 ...
- SwipeRefreshLayout详解和自定义上拉加载更多
个人主页 演示Demo下载 本文重点介绍了SwipeRefreshLayout的使用和自定View继承SwipeRefreshLayout添加上拉加载更多的功能. 介绍之前,先来看一下SwipeRef ...
- canvas 保存bitmap到本地
File f = new File("/sdcard/DCIM/Camera/0.png"); FileOutputStream fos = null; try { fos = n ...
- 四.awk、sde深度讲解
###sed### 查询 1创建测试文件 cat>person.txt<<EOF> 101,oldboy,CEO> 102,zhangyao,CTO> 103,Al ...