BZOJ4681 [jsoi2010]旅行

1.jpg

时间限制:

3S

空间限制:

256M
具体思路:DP
f[i][j][k]表示1-i,前L条路上用了 j条,L后的路上换了k条的最小代价
枚举一下L就有了一个复杂度O(nlognk^3)的做法
AC代码
#include<bits/stdc++.h>
using namespace std;
#define INF 100000000
#define P pair<int,int>
const int M=200010;
int n,i,j,m,k,top=1,L,mogic;
int first[M],next[M],to[M],last[M],len[M],f[100][200][50],ord[M];
bool vis[M*3];
struct E{int x,y,w;}e[M]; queue<P>q; inline bool cmp(const E&a,const E&b){return a.w<b.w;} int ans=2100000000,base=0; void add(int x,int y,int z,int num) { top++,to[top]=y;len[top]=z;ord[top]=num; if(first[x]==0)first[x]=top;else next[last[x]]=top; last[x]=top; } void PUSH(int x,int y,int z,int w) { if(y>L||z>mogic)return; if(f[x][y][z]<=w)return; q.push(P(f[x][y][z]=w,(x<<13)|(y<<5)|(z))); } int main() { scanf("%d%d%d",&n,&m,&mogic); for(i=1;i<=m;i++)scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].w); sort(e+1,e+1+m,cmp); for(i=1;i<=m;i++)add(e[i].x,e[i].y,e[i].w,i),add(e[i].y,e[i].x,e[i].w,i); for(L=0;L<=m;L++) { base+=e[L].w; if(base>ans)break; for(i=1;i<=n;i++)for(j=0;j<=L;j++)for(k=0;k<=mogic;k++)f[i][j][k]=INF; memset(vis,0,sizeof(vis)); PUSH(1,0,0,base); while(!q.empty()) { P TOP=q.front();q.pop(); int z=TOP.second&31;TOP.second>>=5; int y=TOP.second&255;TOP.second>>=8; int x=TOP.second; if(f[x][y][z]<TOP.first)continue; for(i=first[x];i;i=next[i]) if(ord[i]<=L) { PUSH(to[i],y+1,z,TOP.first); }else PUSH(to[i],y,z,TOP.first+e[ord[i]].w),PUSH(to[i],y,z+1,TOP.first); } for(j=0;j<=L;j++)for(k=0;k<=mogic;k++)if(j+k<=L&&f[n][j][k]<ans)ans=f[n][j][k]; } printf("%d",ans); return 0; }

 

转载于:https://www.cnblogs.com/Orange-User/p/8507160.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IIC踩过的坑

读取IT8563WE时&#xff0c;读取第一次正确&#xff0c;第二次错误&#xff0c;第三次正确&#xff0c;第四次错误。。。。。。看到读取成功之后&#xff0c;SDA信号没有被正确拉高&#xff0c;电平大概只有一半。再次读取&#xff0c;主机设置读模式时&#xff0c;从机会发送N…

PostMessage()

PostMessage函数 PostMessage是Windows API(应用程序接口) 中的一个常用函数&#xff0c;用于将一条消息放入到消息队列中。消息队列里的消息通过调用GetMessage和PeekMessage取得。 函数功能 该函数将一个消息放入&#xff08;寄送&#xff09;到与指定窗口创建的线程相联系…

ATT汇编指令总结

AT&T汇编指令总结 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1.寄存器引用 引用寄存器要在寄存器号前加百分号%,如“movl %eax, %ebx”。 80386有如下寄存器&#xff1a; 8个32-bit寄存器 %eax&#xff0c;%ebx&#xff0c;%ecx&#xff0c;…

jpush 极光推送 java

https://www.jianshu.com/p/22a4d630c01a http://blog.csdn.net/qq_35860097/article/details/75117323转载于:https://www.cnblogs.com/volatileAndCrazy/p/8508061.html

1万字30张图说清TCP协议

本篇文章较长&#xff0c;大家先看下目录1、简介2、TCP协议头3、TCP 数据包的编号&#xff08;SEQ&#xff09;4、三次握手建立连接5、四次挥手断开连接6、TCP可靠性的保证7、滑动窗口技术9、窗口滑动的数据重发9、TCP 流控制10、网线“断”了怎么办01简介TCP(Transmission Con…

比tween更有效的tween包.

感谢经典feixing1的提示. TweenLite&#xff1a; http://blog.greensock.com/tweenliteas3/ Tweener: http://code.google.com/p/tweener/ Burrows 翻译的 TweenLite中文文档http://www.troikaer.cn/blog/

蓝牙模块测试

蓝牙测试 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神的无限的。 1、发送AT&#xff0c;回复OK&#xff0c;连接成功 2、先发送 ATBTPOWER1&#xff1b;打开蓝牙功能&#xff0c;回复OK 3、发送ATBTHOST?&#xff1b;查询模块蓝牙地址和名称 4、发送ATBTSC…

Spring源码解析(二)BeanDefinition的Resource定位

IOC容器的初始化过程主要包括BeanDefinition的Resource定位、载入和注册。在实际项目中我们基本上操作的都是ApplicationContex的实现&#xff0c;我们比较熟悉的ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、XmlWebapplicationContext等。ApplicationCo…

JSON.parse()

JSON.parse() 方法用于将一个 JSON 字符串转换为对象。 语法 JSON.parse(text[, reviver]) 参数说明&#xff1a; text:必需&#xff0c; 一个有效的 JSON 字符串。 reviver: 可选&#xff0c;一个转换结果的函数&#xff0c; 将为对象的每个成员调用此函数。 返回值&#xf…

apache+php+mysql+phpadmin 服务环境搭建

前些日子&#xff0c;有朋友问如何用apache/php/mysql/phpadmin搭建PHP网站服务环境.现在就这个问题&#xff0c;我把我的一些经验与大家分享。各位同行有何建议&#xff0c;敬请在评论区指出&#xff0c;谢谢&#xff01; 1.下载apache软件&#xff0c;以apache2.2为例。安装…

单片机(MCU)如何才能不死机之对齐访问(Aligned Access)

从一个结构体说起。如下&#xff0c;在 STM32F0 的程序中&#xff0c;我们定义了一个结构体My_Struct &#xff0c;那么这个结构体占用多少内存呢&#xff1f;struct Struct_Def { uint8_t Var_B; uint16_t Var_W0; uint16_t Var_W1; uint32_t Var_DW; }; struct Struct_Def My…

c_str()的用法

c_str()的用法ing&#xff0c;所以函数c_str()就是将C的string转化为C的字符串数组&#xff0c;c_str()生成一个const char *指针&#xff0c;指向字符串的首地址。 char *ps[10]; string a“welcome”; strcpy(p,a.c_str()); cout<<p; 结果为"welcome".

常见的蓝牙4.0模块

常见的蓝牙4.0模块 1、TI公司的cc2540/cc2640&#xff1b;2、nordic的蓝牙4.0&#xff08;BLE&#xff09;芯片nRF51822&#xff1b;3、汇承公司的HC-05蓝牙转串口模块&#xff1a;主芯片CSR BlueCore5 MM。

Sub-process /usr/bin/dpkg returned an error code (1)解决办法

在ubuntu 16.04更新了一些东西之后用apt装ros bringup包会出现如下错误&#xff1a; Sub-process /usr/bin/dpkg returned an error code (1) 解决办法&#xff1a; cd /var/lib/dpkg sudo mv info info.bak #即备份一个info sudo mkdir info #新建一个新的info目录 sudo apt i…

小米的隔空充电,看起来好酷

昨天是1月29号&#xff0c;昨天小米发布了一个隔空充电技术&#xff0c;很火爆&#xff0c;大胆想&#xff0c;如果有一条无线充电的高速公路&#xff0c;那电动汽车还担心没有电吗&#xff1f;—— 雷总的微博原文隔空充电技术&#xff1a;如科幻电影一般&#xff0c;拿着手机…

网络基础知识 快速计算子网掩码的2种方法

网络基础知识快速计算子网掩码的2种方法<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />IP地址(IP Address)的概念及其子网掩码(Subnet Mask)的计算对于首次学习网络知识的初学者来说是一件比较困难的事情。下文所述的是我个人的…

C++ 解析Json

C 解析Json——jsoncpp JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff0c;和xml类似&#xff0c;本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录。 Jsoncpp是个跨平台的开源库&#xff0c;下载地址&#xff1a;http://sourceforge.net/projec…

Linux下获取文件编译的时间

#include <stdio.h>#define MONTH_PER_YEAR 12 // 一年12月 #define YEAR_MONTH_DAY 20 // 年月日缓存大小 #define HOUR_MINUTES_SEC 20 // 时分秒缓存大小void GetCompileTime(void) {const char year_month[MONTH_PER_YEAR][4] { "Jan", "Fe…

同事用void把我给秀翻了!

1、聊一聊今天跟大家推荐的这首歌最近应该挺火的&#xff0c;不过没办法插入AGA的原版歌曲&#xff0c;大家觉得不错可以去找找原版歌曲收录一下。昨天建立了"最后一个bug"技术交流群,由于群成员超过200就无法直接通过群二维码加入&#xff0c;如果大家想加入扫描下面…

Spring Boot之自定义属性

选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能&#xff0c;还能实现快速开发的便捷。我想大多数人也是出于这个原因选择了Spring Boot,如果不是特殊应用场景&#xff0c;就只需要在application.properties中完成一些属性配置就能开启各模块的应用。而不像传统的XML配…