【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业
2024-10-15 22:58:10
题解:
比较容易想到二分答案+时间逆流
这样就变成了经典的路灯问题 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 ;
}
最新文章
- 未能加载文件或程序集“Antlr3.Runtime”或它的某一个依赖项
- JavaScript分离代码理解
- PDO多种方式取得查询结果
- hiho_100_八数码
- Matlab单一变量曲线拟合-cftool
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
- navicat 或者workbench 无法连接127.0.0.1(61)的解决方法
- java运用FFMPEG视频转码技术
- PPI_network&;calc_ppi
- APK签名原理
- Effective C++笔记(一)——条款26-29
- .net程序开发人员必看的变量的命名规则
- linux ln 命令(转载)
- Restful随笔
- iOS ";此证书由未知颁发机构签名";此问题的解决方法
- struts2框架学习笔记3:获取servletAPI
- DOS批量拷贝本地目录到远程主机(定时执行)
- Python seek和tell
- 数据库--oracle图形化管理工具和新增自定义用户
- scriptlet