PKU ACM Teams Excursion

news/2025/2/26 14:05:52/文章来源:https://www.cnblogs.com/watersail/p/18738348
  • 有向无环图的必经点与必经边:路径条数取模法
  • memset的时候int/long long要一一对应
  • 分两种情况讨论:一种是两条路线连在一起,视为一条路线处理即可;另一种是两条路线相互分隔,可以枚举分界点
  • 要多测的题目提交之前可以先复制样例测试几次
#include <bits/stdc++.h>
using namespace std;
vector<int>a[100005],c[100005];
const int mod=1000000007;
int u[200005],v[200005],w[200005];
int d[100005],pre1[100005],pre2[100005],dis[100005],g[2][100005][2],n;
long long f[2][100005];
typedef pair<int,int> pii;
map<pii,bool>h;
bool e[100005];
void topsort(int s,int opt)
{queue<int>q;for(int i=0;i<n;i++){if(d[i]==0){q.push(i);}}memset(f[opt],0,sizeof(long long)*n);f[opt][s]=1;if(!opt){memset(dis,0x3f,sizeof(int)*n);dis[s]=0;}while(q.size()){int n1=q.front();q.pop();for(int i=0;i<a[n1].size();i++){(f[opt][a[n1][i]]+=f[opt][n1])%=mod;d[a[n1][i]]--;if(d[a[n1][i]]==0){q.push(a[n1][i]);}if(!opt){if(dis[n1]+c[n1][i]<dis[a[n1][i]]){dis[a[n1][i]]=dis[n1]+c[n1][i];pre1[a[n1][i]]=n1;pre2[a[n1][i]]=c[n1][i];}}}}
}
int b[100005],sum[100005],len,q;
void dp(int opt)
{for(int i=1;i<=len;i++){sum[i]=sum[i-1]+b[i];g[opt][i][0]=g[opt][i-1][0]+e[i]*b[i];auto check=[i](int x){return sum[i]-x>=q;};int p=partition_point(sum,sum+i+1,check)-sum;if(p==0){g[opt][i][1]=0;}else{g[opt][i][1]=min(g[opt][i-1][1]+e[i]*b[i],g[opt][p-1][0]+e[p]*(sum[i]-sum[p-1]-q));}}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);int T;cin>>T;while(T--){int m,s,t;cin>>n>>m>>s>>t>>q;for(int i=1;i<=m;i++){cin>>u[i]>>v[i]>>w[i];}for(int i=0;i<n;i++){a[i].clear();c[i].clear();d[i]=0;}for(int i=1;i<=m;i++){a[u[i]].push_back(v[i]);c[u[i]].push_back(w[i]);d[v[i]]++;}topsort(s,0);for(int i=0;i<n;i++){a[i].clear();d[i]=0;}for(int i=1;i<=m;i++){a[v[i]].push_back(u[i]);d[u[i]]++;}topsort(t,1);if(dis[t]>1000000000){cout<<-1<<endl;continue;}h.clear();for(int i=1;i<=m;i++){if(f[0][t]==f[0][u[i]]*f[1][v[i]]%mod){h[pii(u[i],v[i])]=true;}}len=0;int p=t;while(p!=s){len++;b[len]=pre2[p];if(h.find(pii(pre1[p],p))!=h.end()){e[len]=true;}else{e[len]=false;}p=pre1[p];}dp(0);reverse(b+1,b+len+1);reverse(e+1,e+len+1);dp(1);int ans=INT_MAX;for(int i=1;i<len;i++){ans=min(ans,g[0][i][1]+g[1][len-i][1]);}q*=2;dp(1);cout<<min(ans,g[1][len][1])<<endl;}return 0;
}

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

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

相关文章

drawio使用阿里云最新图标

简介 draw.io是一款免费的在线绘图工具,可用于创建各种类型的图表、流程图、组织结构图、网络拓扑图等。它具有易于使用的直观界面和丰富的图形库,支持与Google Drive、OneDrive、Dropbox等云存储服务集成。用户可以直接在浏览器中使用draw.io,也可以将其安装为Chrome应用程…

VulnHub-DC-6靶机-wpscan爆破+命令注入反弹shell+nmap提权

一、环境搭建 选择扫描虚拟机选择靶机路径这里如果出现报错,无法导入,如VMware出现配置文件 .vmx 是由VMware产品创建,但该产品与此版 VMware workstation 不兼容,因此无法使用(VMware版本不兼容问题),可以修改.vmx文件版本和虚拟机一致二、信息收集 扫描ip nmap -sn 19…

浅析Golang的内存管理(中篇): go runtime的内存管理模型与内存分配器

文章目录go runtime的基本内存模型 三级存储体系(MCache,MCentral,Mheap) 对象分配流程 一、go runtime的基本内存模型go runtime 借鉴了C++的内存模型和TCMalloc(Thread-Caching Malloc)内存分配机制,再开始之前,先了解一些go runtime对内存对象抽象的名词概念,它们分…

浅析Golang的内存管理(上篇):操作系统内存管理

文章目录计算机存储体系介绍 虚拟存储器 内存管理单元与页式存储管理 CPU发起一次访存的全过程 一、计算机存储体系介绍从计算机的组成角度来看,计算机的存储分为,寄存器-高速缓存-主存储器(泛指内存)-本地存储(磁盘)-外部存储(光盘、云盘等),由下到上,运行速度越来…

SVN介绍与安装

一、svn介绍 1、svn是一个版本控制工具; -svN是subversion的简称:是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。 -SVN的作用:在项目组当中对需求规格说明书、测试用例、…

提示词装饰器:一种改善AI生成回复的简单方式

通过结构化提示解锁AI的全部潜力 人工智能是一种非常强大的工具,但其回应的质量往往取决于我们与其沟通的有效性。如果你曾经在从AI模型获得精确且结构良好的回答时遇到困难,你并不孤单。许多用户在提示制定中面临不一致、模糊的回应或过多的试验和错误。那么,是否有一种方法…

信息安全项目管理工具:等保2.0要求的3类检测系统

随着信息技术的飞速发展,信息安全问题日益凸显。等保 2.0 作为我国网络安全领域的重要标准,对信息安全提出了更高的要求。在等保 2.0 的要求下,信息安全项目管理工具中的 3 类检测系统发挥着至关重要的作用。本文将详细介绍这 3 类检测系统,帮助读者更好地了解信息安全领域…

[c++算法] 树的直径,包教包会!

哈喽大家好,我是 doooge。今天我们要将数论中的一个算法-树的直径。 $$\Huge 树的直径 详解$$ 1.树的直径是什么 这是一棵图论中的树:这棵树的直径就是这棵树中最长的一条简单路径。 2.树的直径怎么求 2.1暴力算法 直接对每个点进行 DFS,找到每个点离最远的点的距离,最后求…

图吧工具箱PC电脑工具(图拉丁吧硬件检测工具箱) v2025.01 中文绿色便携版

点击上方蓝字关注我 前言 图吧工具箱(大家通常叫它图拉丁吧硬件检测工具箱)是一个完全免费、开源、没有广告的硬件检测工具集合。这个工具箱是专门为喜欢自己动手组装电脑(DIY)的朋友们,特别是图钉社区的成员们制作的。里面包含了好多常用的硬件测试和检测小工具,特别适合…

在Windows上安装UOS打印机

因自己放在办公室发挥余热的Windows电脑即将寿终正寝,所以这两天试着将包括文件打印在内的基础网络服务逐渐转移到UOS主机上。 参照官方教程一通操作,Windows始终在添加打印机页面找不到同个局域网下的UOS主机,点击疑难解答则提示“该设备或资源未设置为接受端口“文件和打印…

是不是长大之后便很难再专注了?

写在前面 1100 字 | 专注 | 思考 | 逆向思维 正文“上课要专心。”我们似乎总能听见大人们这样要求我们。不过坦白地说,我真正体验过全神贯注的时刻,就那么一两次。看起来这篇文章,似乎又要大吐苦水,谈论生活怎样艰辛困苦,各种科技产品怎样将人碎片化之类。并不是。 恰恰相…

2025牛客寒假算法基础集训营3补题笔记

比赛链接 题目难度顺序大致为:\(A、M、F、L、C、\) \(easy\):\(A、M、F、L、C\) 太难了这场。。。E题卡了3个多小时。。。 A.智乃的博弈游戏 题意 有\(n\) 个石头,两人轮流取石头。每次能取小于石头个数且与石头个数互质的数量,当某人取时只有一颗石头则获胜。问先手是否可…