[CSP-S模拟测试]:公园(BFS+剪枝)
题目传送门(内部题31)
输入格式
第一行,五个整数$V,M,N,E,L$。
接下来$M$行,每行两个正整数$s_i,a_i$。保证$s_i$互不相等。
接下来$N$行,每行两个正整数$t_j,b_j$。保证$t_j$互不相等。
接下来$E$行,每行三个正整数$u_k,v_k,w_k$。保证$u_k\neq v_k$,也保证不存在从某一点出发能再次回到该点的路径。
输出格式
一个整数表示$L$时间内最多能访问的景点数,若不存在时间不超过$L$的方案则输出$0$。
样例
样例输入1:
4 1 1 3 17
1 2
4 2
1 2 5
2 3 7
2 4 8
样例输出1:
3
样例输入2:
2 2 2 1 3
1 1
2 2
1 1
2 2
1 2 3
样例输出2:
1
数据范围与提示
样例$1$解释:
方案为$1\rightarrow 2\rightarrow 4$,花费时间为$2+5+8+2=17\leqslant 17$。
样例$2$解释:
只能进入景点$1$后立即出来,花费时间为$1+1=2\leqslant 3$。
数据范围:
对于所有数据,$1\leqslant V\leqslant 2,000,1\leqslant E\leqslant 5,000,1\leqslant M,N\leqslant V,1\leqslant s_i,t_j,u_k,v_k\leqslant V,0\leqslant L,a_i,b_j,w_k\leqslant {10}^9$。
题解
当你选择打最基础的暴力的时候你就离$AC$不远了。
当然正解是$DP$,但是我不会……
于是想剪枝,用$dis[i][j]$表示点到$i$,走了$j$个点的最小花费,如果已经不能更新答案,就剪枝。
这就完了……
为方便,将所有的入口连在一个点上,所有的出口连在一个点上。
时间复杂度:$\Theta($玄学$)$。
期望得分:$20$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
struct node{int id,v,w;}q[5000000];
struct rec{int nxt,to,w;}e[100010];
int head[5010],cnt;
int V,M,N,E,L;
int ans;
int dis[5010][5010],xb[5010][5010];
void add(int x,int y,int w)
{
e[++cnt].nxt=head[x];
e[cnt].to=y;
e[cnt].w=w;
head[x]=cnt;
}
int main()
{
scanf("%d%d%d%d%d",&V,&M,&N,&E,&L);
for(int i=1;i<=M;i++)
{
int s,a;
scanf("%d%d",&s,&a);
add(0,s,a);
}
for(int i=1;i<=N;i++)
{
int t,b;
scanf("%d%d",&t,&b);
add(t,V+1,b);
}
for(int i=1;i<=E;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
int u=0,v;
q[v=1]=(node){0,0,0};
while(u^v)
{
node flag=q[++u];
int x=flag.id,s=flag.v+1,d=flag.w;
for(int i=head[x],y;i;i=e[i].nxt)
{
int qj=dis[y=e[i].to][s];
if(e[i].w+d>L)continue;
if(!qj)
{
dis[y][s]=e[i].w+d;
if(y==V+1){ans=max(ans,s);continue;}
q[xb[y][s]=++v]=(node){y,s,e[i].w+d};
continue;
}
if(e[i].w+d>=qj)continue;
dis[y][s]=e[i].w+d;
if(y==V+1){ans=max(ans,s);continue;}
q[xb[y][s]]=(node){y,s,e[i].w+d};
}
}
printf("%d",ans?ans-1:0);
return 0;
}
rp++
[CSP-S模拟测试]:公园(BFS+剪枝)的更多相关文章
- [CSP-S模拟测试]:Star Way To Heaven(最小生成树Prim)
题目描述 小$w$伤心的走上了$Star\ way\ to\ heaven$. 到天堂的道路是一个笛卡尔坐标系上一个$n\times m$的长方形通道(顶点在$(0,0)$和$(n,m)$),小$w$ ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- NOIP模拟测试19「count·dinner·chess」
反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
- 安装nginx python uwsgi环境 以及模拟测试
uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...
- hdu_1253_胜利大逃亡(bfs+剪枝)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题意:三维BFS,不解释 题解:DFS+剪枝会超时,裸BFS会超时,BFS+剪枝才能AC,有点伤 ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- 转 C#实现PID控制的模拟测试和曲线绘图
C#实现PID控制的模拟测试和曲线绘图 本文分两部分,一部分是讲PID算法的实现,另一部分是讲如何用动态的曲线绘制出PID运算的结果. 首先,PID算法的理论模型请参考自动控制理论,最早出现的是模 ...
随机推荐
- 阅读笔记02-读懂HTTPS及其背后的加密原理
1 为什么需要https 使用https的原因其实很简单,就是因为http的不安全. 当我们往服务器发送比较隐私的数据(比如说你的银行卡,身份证)时,如果使用http进行通信.那么安全性将得不到保障. ...
- 03 - Jmeter用户自定义变量CSV参数化以及断言的设置
设置断言 咱们还是先看一个图吧,由下图可以看出接口是请求成功了,但是请求数量比较少,还是比较方便看的,但是jmeter既然是压测工具,那么肯定不会发这么点儿请求的,如果请求数量比较庞大的话,我们仅仅凭 ...
- MySQL安装教程并使用springboot2和Mybatis测试
目录 MySQL是什么 MySQL安装 开始使用一下MySQL 用spring boot2+Mybatis试试MySQL 创建数据库和表 拉通spring boot2+mybatis MySQL是什么 ...
- Pandas matplotlib 无法显示中文
Pandas 无法显示中文问题 解决方案 Pandas在绘图时,会显示中文为方块,主要原因有二: matplotlib 字体问题seaborn 字体问题 (实际上,matplotlib是支持uni ...
- 【洛谷p1036】选数
(一定要声明我太蒟了,这个题扣了一上午……) 算法标签: …… dfs真的不是我所擅长的qwq,这道题的思路其实很简单,就是先dfs搜索所有可能的和,然后判断是不是质数.说着好说,然鹅并不好写: 第一 ...
- dp(最长升序列)
http://poj.org/problem?id=2533 题意:给你n(1-1000)个数,求这n个数的最长升序列. 题解:dp[i]表示以第i个数结尾的最长升序列. #include & ...
- NGUI的Lebal需注意问题
1,为什么调节字体大小时,字体大小没变化,我们需要调节两个地方,如下图框柱显示 调节font size和size才可以同时控制字体的大小 2,label有时是不支持输入中文,但是支持复制进去,则这时我 ...
- HttpGet请求传递数组(集合)
在HttpGet请求是传递数组(集合)的方法: 1.使用Ajax方法传递 eg: ajax.({ url:/test, data:["], type:"get" }); ...
- 20180306-time&datetime模块
在开始介绍时间模块之前先说明几点: 一. Python中常用以下几种形式表示时间 1.时间戳 2.格式化的时间字符串 3.元组(struct_time)(共九个元素),由于Python的time模块实 ...
- zabbix基础之环境搭建
zabbix入门 环境部署 安装mysql #安装MySQL,官方的MySQL的repo源地址:http://repo.mysql.com/ #选择指定的MySQL版本,我这里选mysql5.7的版本 ...