CF576D Flights for Regular Customers

news/2025/11/8 13:20:46/文章来源:https://www.cnblogs.com/kkxacj/p/19202160

题目传送门

有趣的题。

首先容易想到 \(f_{i,j}\) 表示到 \(i\)\(j\) 步是否合法,转移也是容易的,只要 \(j \ge d_z\),那么便可以走第 \(z\) 条边。复杂度 \(Vn\)

套路的考虑矩阵快速幂,注意到转移矩阵的变化量是 \(O\left(m\right)\) 级别的,我们按边权排序,每次跑 \(d_i-d_{i-1}\) 次,然后就可以快速跑了。为了方便,我们可以连一条 \(\left(n,n\right)\) 边权为 \(0\) 的边,然后我们在第一次求出 \(f_n = 1\) 时在区间里二分就可求出答案,复杂度 \(m\times n^3\log+n^3\times \log\),还是不好通过。

考虑我们本质只需要知道 \(0/1\) 值,我们尝试用 bitset 优化这个东西。

初始的转移是 \(a_{i,j} \vee c_{i,z}\times c_{z,j}\),转化为如果 \(c_{i,z} = 1\),那么 \(a_{i,j} \vee c_{z,j}\),第二维一样直接或即可。

复杂度同除 \(\omega\),可以通过。

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define getchar() (p1 == p2 && (p2 = (p1 = buf1) + fread(buf1, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++)
char buf1[1 << 23], *p1 = buf1, *p2 = buf1, ubuf[1 << 23], *u = ubuf;
namespace IO
{template<typename T>void read(T &_x){_x=0;int _f=1;char ch=getchar();while(!isdigit(ch)) _f=(ch=='-'?-1:_f),ch=getchar();while(isdigit(ch)) _x=_x*10+(ch^48),ch=getchar();_x*=_f;}template<typename T,typename... Args>void read(T &_x,Args&...others){Read(_x);Read(others...);}const int BUF=20000000;char buf[BUF],to,stk[32];int plen;#define pc(x) buf[plen++]=x#define flush(); fwrite(buf,1,plen,stdout),plen=0;template<typename T>inline void print(T x){if(!x){pc(48);return;}if(x<0) x=-x,pc('-');for(;x;x/=10) stk[++to]=48+x%10;while(to) pc(stk[to--]);}
}
using namespace IO;
const int N = 160;
int n,m,x,l,r,mid,ans = 1e15;
bitset<N>v[N],v1[N],c[N],f,F,g;
struct w
{int x,y,z;
}a[N];
inline bool cmp(w x,w y){ return x.z < y.z; }
inline void Matrix_D()
{for(int i = 1;i <= n;i++) c[i] = v1[i],v1[i].reset();/*for(int i = 1;i <= n;i++)for(int j = 1;j <= n;j++)for(int z = 1;z <= n;z++)v[i][j] |= (c[i][z]&c[z][j]);*/for(int i = 1;i <= n;i++)for(int z = 1;z <= n;z++)if(c[i][z])//拉出来 v1[i] |= c[z];
}
inline void M_Q()
{g = f; f.reset();for(int i = 1;i <= n;i++)for(int j = 1;j <= n;j++)if(g[i] && v1[i][j])f[j] = 1;
}
signed main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);read(n),read(m);for(int i = 1;i <= m;i++) read(a[i].x),read(a[i].y),read(a[i].z); a[++m].x = n,a[m].y = n,a[m].z = 0;a[++m].x = n,a[m].y = n,a[m].z = 2e9;//随便给一条不影响的边 sort(a+1,a+1+m,cmp); F[1] = 1;for(int i = 1;i <= m;i++){x = a[i].z-a[i-1].z;for(int j = 1;j <= n;j++) v1[j] = v[j]; f = F;while(x){if((x&1)) M_Q();x >>= 1,Matrix_D();}// cout<<a[i].z-a[i-1].z<<" "<<f[n]<<" &&& "<<a[i].z<<'\n';if(f[n] == 1)//这里面刚好可以 {l = 1,r = a[i].z-a[i-1].z;while(l <= r){mid = ((l+r)>>1); x = mid;for(int j = 1;j <= n;j++) v1[j] = v[j]; f = F;//	for(int j = 1;j <= n;j++) cout<<f[j]<<" "; cout<<'\n';while(x){if((x&1)) M_Q();x >>= 1,Matrix_D();}if(f[n]) r = mid-1,ans = mid;else l = mid+1;} ans += a[i-1].z;break;}v[a[i].x][a[i].y] = 1; F = f;}if(ans == 1e15) cout<<"Impossible";else print(ans); flush();return 0;
}
/*
f_{i,j} 表示到i走j步是否可行,f_{i,0} = 1
f_{nxt_i,j+1} |= f_{i,j} (j >= d_{i,nxt_i})
j,1e9不好搞,考虑n,m<=150有无什么好处
矩阵乘法?猜的,尝试胡一下
考虑在d_{i,nxt_i}允许(i,nxt_i)这条边
考虑m条边排序,然后两两之间去跑矩阵快速幂
然后注意到这个只有可行性,我们连一条(n,n,0)的边
然后我们二分求解即可,复杂度m*n^3*log+n^3log^2,真是一对【】啊
考虑bitset优化,都/w,然后可以了 
*/

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

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

相关文章

2025年口碑好的厨房拉篮厂家推荐及采购参考

2025年口碑好的厨房拉篮厂家推荐及采购参考 厨房拉篮作为现代家居收纳的核心组件,其设计合理性与耐用性直接影响厨房空间的利用效率。随着消费者对品质生活的追求,市场对拉篮的功能性、美观度及品牌服务提出了更高要…

2025年专业的同向锥双螺杆厂家最新推荐排行榜

2025年专业的同向锥双螺杆厂家最新推荐排行榜 同向锥双螺杆挤出机作为橡塑机械行业的核心设备,广泛应用于塑料改性、造粒、混炼等高精度加工领域。随着全球橡塑产业升级,具备高耐磨性、高扭矩承载能力及长寿命的锥双…

ADB命令详解

ADB命令详解 一、ADB基本概念 ADB(Android Debug Bridge)是Android SDK中的一个工具,用于在电脑和Android设备之间建立通信桥梁,进行调试和控制。 主要功能安装/卸载应用程序 在设备和计算机之间复制文件 在设备上…

2025年质量好的煤炭化验设备品牌厂家排行榜

2025年质量好的煤炭化验设备品牌厂家排行榜 煤炭化验设备在电力、冶金、石化、环保等行业中扮演着至关重要的角色,精准的煤质分析数据直接影响企业的生产效率和成本控制。随着技术的进步,市场对煤炭化验设备的精度、…

2025年优质的C型钢冷弯机品牌厂家排行榜

2025年优质的C型钢冷弯机品牌厂家排行榜 在建筑、汽车制造、钢结构工程等领域,C型钢冷弯机作为关键生产设备,其性能、精度和稳定性直接影响产品质量和生产效率。随着市场需求不断增长,众多冷弯机品牌厂家凭借技术创…

2025年专业的旋激式湿式除尘器厂家最新用户好评榜

2025年专业的旋激式湿式除尘器厂家最新用户好评榜 随着工业环保要求的日益严格,旋激式湿式除尘器凭借其高效除尘、低能耗和适应性强等优势,成为众多企业的首选。为帮助用户快速筛选优质供应商,本文基于真实用户反馈…

详细介绍:元宇宙如何重塑个人生活:从日常场景到自我实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年可靠的混凝土水沟滑模机最新TOP品牌厂家排行

2025年可靠的混凝土水沟滑模机最新TOP品牌厂家排行行业概述混凝土水沟滑模机作为现代水利工程和市政建设中的重要机械设备,在灌溉渠道、排水系统、公路边沟等基础设施建设中发挥着关键作用。随着2025年国家加大对水利…

2025年专业的电缆温升试验机厂家最新用户好评榜

2025年专业的电缆温升试验机厂家最新用户好评榜在电气设备安全检测领域,电缆温升试验机作为评估电线电缆在负载条件下温度变化的关键设备,其性能和质量直接关系到检测结果的准确性与可靠性。随着我国电力工业的快速发…

2025年知名的无锡液压缸厂家推荐及采购指南

2025年知名的无锡液压缸厂家推荐及采购指南 液压缸作为工业设备中的核心动力传输部件,广泛应用于工程机械、冶金设备、石油化工、自动化生产线等领域。无锡作为中国液压元件制造的重要基地,汇聚了一批技术领先、品质…

2025年靠谱的阳台壁挂太阳能热水器厂家最新实力排行

2025年靠谱的阳台壁挂太阳能热水器厂家最新实力排行随着绿色能源理念的普及和城市高层建筑的增多,阳台壁挂太阳能热水器已成为现代家庭热水解决方案的热门选择。这类产品不仅节省空间,还能有效利用太阳能资源,为用户…

2025年优秀的打磨除尘设备厂家推荐及选择指南

2025年优秀的打磨除尘设备厂家推荐及选择指南 在工业生产中,打磨、切割、焊接等工序会产生大量粉尘,不仅影响工人健康,还可能引发爆炸等安全隐患。因此,选择一款高效、可靠的打磨除尘设备至关重要。2025年,随着环…

Airtest 安装避坑指南

Airtest 安装避坑指南 本文档记录了在 Python 3.13 环境下安装 Airtest 的成功经验和避坑指南,适用于遇到安装问题的用户参考。 环境信息操作系统:Windows Python 版本:3.13(最新版本,可能与部分包存在兼容性问题…

2025年口碑好的口袋插入门厂家推荐及选购指南

2025年口碑好的口袋插入门厂家推荐及选购指南 随着家居五金行业的快速发展,口袋插入门因其节省空间、美观实用等特点,逐渐成为现代家居装修的热门选择。2025年,市场上涌现出众多优秀的五金制造企业,其中一些品牌凭…

2025年诚信的千级无尘车间高评价厂家推荐榜

2025年诚信的千级无尘车间高评价厂家推荐榜 在当今高科技产业快速发展的背景下,千级无尘车间的需求日益增长,尤其是在电子半导体、医药医械、食品生产等领域。千级无尘车间对空气洁净度、温湿度控制、气流组织等要求…

2025年热门的OPP束带机厂家最新热销排行

2025年热门的OPP束带机厂家最新热销排行 随着工业自动化需求的持续增长,OPP束带机作为高效包装设备的核心工具,在电子、食品、医药等领域广泛应用。2025年,市场对高精度、高稳定性的束带机需求显著提升,以下是当前…

2025年有实力鲍鱼饲料超微粉碎机品牌厂家排行榜

2025年有实力鲍鱼饲料超微粉碎机品牌厂家排行榜 行业背景与需求分析 随着水产养殖业的快速发展,鲍鱼饲料加工对超微粉碎技术的要求日益提高。超微粉碎机作为核心设备,其性能直接影响饲料的营养吸收率和养殖效益。2…

2025年口碑好的拌合筛土机厂家最新权威实力榜

2025年口碑好的拌合筛土机厂家最新权威实力榜 在建筑工程、道路施工、农田改造等领域,拌合筛土机作为重要的机械设备,其性能与质量直接影响工程效率与成果。随着技术的不断进步,市场上涌现出众多拌合筛土机生产厂家…

2025年优质的超大电流密集型母线槽厂家推荐及采购指南

2025年优质的超大电流密集型母线槽厂家推荐及采购指南 随着工业化和城市化的快速发展,电力传输系统的稳定性和高效性成为关键需求。超大电流密集型母线槽作为现代电力分配的核心组件,广泛应用于数据中心、商业建筑、…

2025年专业的旋涡磁力泵最新TOP品牌厂家排行

2025年专业的旋涡磁力泵最新TOP品牌厂家排行 旋涡磁力泵以其无泄漏、耐腐蚀、高效节能的特点,成为化工、新能源、半导体等领域的核心输送设备。随着技术迭代,2025年全球市场涌现出一批以创新技术、稳定性能和定制化…