LibreOJ #539. 「LibreOJ NOIP Round #1」旅游路线(倍增+二分)
哎一开始看错题了啊T T...最近状态一直不对...最近很多傻逼题都不会写了T T
考虑距离较大肯定不能塞进状态...钱数<=n^2能够承受, 油量再塞就不行了...显然可以预处理出点i到j走ci步的最长距离(一开始以为一条路耗油为路的长度T T), 这个是经典题, 倍增求就好了...然后就可以转移了呀T T
最后二分就好了呀T T...
我怎么这么菜啊, 还写了好久T T...
一开始还写成n^4logn TLE了半天没查到错
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=, inf=1e9;
int n, m, C, T, l, r, up, x, y, z;
int f[maxn][maxn][maxn], g[maxn][maxn*maxn], mi[maxn], p[maxn], c[maxn], dis[maxn][maxn], tmp[maxn], dist[maxn];
inline void read(int &k)
{
int f=; k=; char c=getchar();
while(c<'' || c>'') c=='-'&&(f=-), c=getchar();
while(c<='' && c>='') k=k*+c-'', c=getchar();
k*=f;
}
inline int max(int a, int b){return a>b?a:b;}
inline void solve(int x, int step)
{
for(int i=;i<=n;i++) tmp[i]=dist[i]=(i==x)?:-inf;
for(int now=;now<=up;now++)
if(step&(<<now))
{
for(int i=;i<=n;i++)tmp[i]=dist[i];
for(int k=;k<=n;k++)
for(int j=;j<=n;j++)
dist[j]=max(dist[j], tmp[k]+f[k][j][now]);
}
for(int i=;i<=n;i++) dis[x][i]=dist[i];
}
int main()
{
read(n); read(m); read(C); read(T);
for(int i=;i<=n;i++) read(p[i]), read(c[i]);
up=floor(log2(C));
for(int i=;i<=n;i++) for(int j=;j<=n;j++) for(int k=;k<=up;k++) f[i][j][k]=(i==j)?:-inf;
for(int i=;i<=m;i++) read(x), read(y), read(z), f[x][y][]=z;
for(int l=;l<=up;l++)
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
f[i][j][l]=max(f[i][j][l], f[i][k][l-]+f[k][j][l-]);
for(int i=;i<=n;i++) for(int j=;j<=n;j++) for(int k=;k<=up;k++) f[i][j][k]=max(f[i][j][k], f[i][j][k-]);
for(int i=;i<=n;i++) solve(i, c[i]);
for(int i=;i<=n*n;i++)
for(int j=;j<=n;j++)
{
if(i) g[j][i]=g[j][i-];
if(i>=p[j]) for(int k=;k<=n;k++) g[j][i]=max(g[j][i], g[k][i-p[j]]+dis[j][k]);
}
while(T--)
{
read(x); read(y); read(z);
if(g[x][y]<z){puts("-1"); continue;}
int l=, r=y;
while(l<r)
{
int mid=(l+r)>>;
if(g[x][mid]>=z) r=mid;
else l=mid+;
}
printf("%d\n", y-l);
}
}
LibreOJ #539. 「LibreOJ NOIP Round #1」旅游路线(倍增+二分)的更多相关文章
- LOJ #539. 「LibreOJ NOIP Round #1」旅游路线 倍增floyd + 思维
考试的时候是这么想的: 求出每一个点花掉 $i$ 的花费向其他点尽可能走的最长距离,然后二分这个花费,找到第一个大于 $d$ 的就输出$.$然而,我这个记忆化搜索 $TLE$ 的很惨$.$这里讲一下正 ...
- 【LibreOJ】#539. 「LibreOJ NOIP Round #1」旅游路线
[题意]给定正边权有向图,车油量上限C,每个点可以花费pi加油至min(C,ci),走一条边油-1,T次询问s点出发带钱q,旅行路程至少为d的最多剩余钱数. n<=100,m<=1000, ...
- LOJ#539. 「LibreOJ NOIP Round #1」旅游路线
n<=100,m<=1000的图,在此图上用油箱容量C<=1e5的车来旅行,旅行时,走一条边会耗一单伟油,在点i时,若油量<ci,则可以把油以pi的价格补到ci,pi<= ...
- 「LOJ 539」「LibreOJ NOIP Round #1」旅游路线
description 题面较长,这里给出题目链接 solution 考虑预处理出\(f[i][j]\)表示在第\(i\)个点加满油后,从第\(i\)个点出发,至多消耗\(j\)元钱走过的最大路程,那 ...
- LibreOj #539. 「LibreOJ NOIP Round #1」旅游路线
题目链接 做完这道题,我深知当一个问题复杂度过高的时候,把一些可以分离的操作都分散开,可以大幅度降低复杂度..... 发现无论有多少钱,每到一个点后扩展到的距离被限制在 \(min(C, c[i])\ ...
- 「LibreOJ NOIP Round #1」旅游路线
Description T 城是一个旅游城市,具有 nnn 个景点和 mmm 条道路,所有景点编号为 1,2,...,n1,2,...,n1,2,...,n.每条道路连接这 nnn 个景区中的某两个景 ...
- LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力
二次联通门 : LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 /* LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 叫做计算几 ...
- LibreOJ #528. 「LibreOJ β Round #4」求和
二次联通门 : LibreOJ #528. 「LibreOJ β Round #4」求和 /* LibreOJ #528. 「LibreOJ β Round #4」求和 题目要求的是有多少对数满足他们 ...
- LibreOJ #527. 「LibreOJ β Round #4」框架
二次联通门 : LibreOJ #527. 「LibreOJ β Round #4」框架 /* LibreOJ #527. 「LibreOJ β Round #4」框架 %% xxy dalao 对于 ...
随机推荐
- Java的安装与配置
安装JAVA 下载JAVA JDK安装包,JDK是Java Development Kit的缩写,即开发工具包,里面包含了平时用户用到的JRE,也就是Java Runtime Enviroment运行 ...
- Scala基础知识笔记1
上一篇文章介绍了如何下载scala, 因为在官网上点击下载按钮无法下载, 下面介绍scala的基础语法: 1 scala和java的关系 Scala是基于jvm的一门编程语言,Scala的代码最终会经 ...
- python数据可视化——matplotlib 用户手册入门:pyplot 画图
参考matplotlib官方指南: https://matplotlib.org/tutorials/introductory/pyplot.html#sphx-glr-tutorials-intro ...
- Visual Assist 试用期过期怎么办?
Visual Assist 试用期过期怎么办 VS这个强大的编译器常常会配置番茄小助手 Visual Assist,但是有时候试用期会过期,又想免费试用,怎么办呢? 有一个方法可以充值番茄助手的试用期 ...
- Python基础灬高阶函数(lambda,filter,map,reduce,zip)
高阶函数 lambda函数 关键字lambda表示匿名函数,当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. lambda函数省略函数名,冒号前为参数,冒号后函数体. # ...
- 微软职位内部推荐-Senior Software Engineer II-Search
微软近期Open的职位: Do you want to work on a fast-cycle, high visibility, hardcore search team with ambitio ...
- 阿里巴巴将在美国推出电子商务网站11 Main
新浪科技讯 北京时间2月11日晚间消息,阿里巴巴集团周二向路透社证实,阿里巴巴将通过旗下子公司Vendio和Auctiva在美国推出一个电子商务网站. 该网站的名称为“11 Main”(11main. ...
- Python爬虫入门(5):URLError异常处理
大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...
- ES6的新特性(21)——Proxy
Proxy 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对 ...
- hdu1242 Rescue DFS(路径探索题)
这里我定义的路径探索题指 找某路能够到达目的地,每次走都有方向,由于是探索性的走 之后要后退 那些走过的状态都还原掉 地址:http://acm.hdu.edu.cn/showproblem.php? ...