nssl1155-遨游【二分答案,SPFA】

正题


题目大意

有若干个省,每个省有些城市,每个省有优惠Xi%X_i\%Xi%,若在i省内的道路就优惠Xi%X_i\%Xi%,若在i到j省的道路就优惠(Xi%+Yi%)2\frac {(X_i\%+Y_i\%)}22(Xi%+Yi%),求一个区间[L,R][L,R][L,R]边权在这个区间内就可以移动。
要求在可以到达终点的情况下:

  1. LLL最大。
  2. LLL最大的情况下RRR最小。

解题思路

先处理所有边权,然后二分LLL,之后求是否可以到达,找到最大的LLL之后计算最小的RRR


code

#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#define M 100010
#define N 50010
using namespace std;
struct line{int from,to;double w;int next;
}a[M*2];
queue<int> q;
int n,m,x,y,w,tot,ans;
int ls[N],mark[N],h[N],s,t,L,R;
double f[N];
bool v[N];
void addl(int x,int y,double w)
{a[++tot]=(line){x,y,w,ls[x]};ls[x]=tot;a[++tot]=(line){y,x,w,ls[y]};ls[y]=tot;
}
bool spfa(int up)//SPFA
{q.push(s);v[s]=true;for(int i=1;i<=ans;i++) f[i]=2147483647/3;f[s]=0;while(!q.empty()){int x=q.front();q.pop();for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(a[i].w>=up&&max(a[i].w,f[x])<f[y]){f[y]=max(a[i].w,f[x]);if(!v[y]){v[y]=true;q.push(y);}}}v[x]=false;}return !(f[t]>=2147483647/4);
}
void answer()//二分答案
{while(L<R){int mid=(L+R+1)/2;if(spfa(mid)) L=mid;else R=mid-1;}spfa(L);if(f[t]!=(int)f[t]) f[t]++;R=(int)f[t];
}
int main()
{//freopen("trip.in","r",stdin);//freopen("trip.out","w",stdout);scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&w);addl(x,y,w);R=max(R,w);}for(int i=1;i<=n;i++){scanf("%d",&t);ans+=t;for(int j=1;j<=t;j++){scanf("%d",&x);mark[x]=i;}}for(int i=1;i<=n;i++)scanf("%d",&h[i]);for(int i=1;i<=tot;i++)//计算边权{x=mark[a[i].from];y=mark[a[i].to];a[i].w*=(h[x]+h[y])/2.0/100.0;}scanf("%d%d",&s,&t);answer();printf("%d %d\n",L,R);
}

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

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

相关文章

使用wxJava开发微信服务(公众)号,实现新建素材的功能

大家好&#xff0c;我是雄雄。 前言 微信服务&#xff08;公众号&#xff09;号开发&#xff0c;前面已经整理过了几篇文章了&#xff0c;如下&#xff1a; java实现微信服务&#xff08;公众&#xff09;号用户关注时&#xff0c;获取openid&#xff0c;安全模式下的加密解密…

经典指针程序互换(一)

#include<stdio.h> huan(int *p,int *q){int t;t*p;*p*q;*qt;}int main(){ int a3,b10; huan(&a,&b);printf("%d %d",a,b); }这里我最疑惑的是不是改变*p的值就改变了a的值&#xff0c;为此&#xff0c;我专门敲了段代码&#xff0c;验证一下 #inclu…

Spring MVC 到底是如何工作的

转载自 Spring MVC 到底是如何工作的 这篇文章将深入探讨Spring框架的一部分——Spring Web MVC的强大功能及其内部工作原理。 这篇文章的源代码可以在GitHub上找到。 项目安装 在本文中&#xff0c;我们将使用最新、最好的Spring Framework 5。我们将重点介绍Spring的经典…

Entity Framework中的字符串插值引发担忧

将内插字符串&#xff08;Interpolated Strings&#xff09;自动地转化为参数化SQL语句&#xff0c;这是Entity Framework Core 2提供的一个新特性。虽然该特性从设计上是为了避免出现SQL语句编写上的问题&#xff0c;但是有人担心这会导致更多的SQL注入攻击。下面给出一个正确…

jeecg-boot集成xxl-job调度平台,每秒/每分钟/手动都能执行成功,但是设置固定时间不触发?

大家好&#xff0c;我是雄雄。 目录 这里写目录标题目录bug说明解决bug的过程解决方法结论今天在用jeecg-boot集成了的xxl-job的时候&#xff0c;遇到了个奇葩的问题&#xff08;其实一点都不奇葩&#xff09;&#xff0c;投入了几个人&#xff0c;一起看这个问题&#xff0c;看…

nssl1156-今天你AK了吗?【康托展开,高精度,二分答案,树状数组】

正题 题目大意 求n个数的全排列的第k个。 解题思路 首先康拓逆展开 ∑ii<nxi(n−i)!\sum^{i<n}_i x_i(n-i)!∑ii<n​xi​(n−i)! 求每个时候第xxx大的数 然后因为n(n−1)!n!n(n-1)!n!n(n−1)!n! so我们可以直接用余数 这是n3n3n3时是序列&#xff0c;我们可以发现我…

指针数组(二)

#include<stdio.h> void f(int *pA,int len){int i;for(i0;i<len;i){printf("%d",*(pAi)); }printf("\n");}main(){int a[5]{1,2,3,4,5};int b[4]{5,4,3,2};f(a,5);f(b,3);} 我想不用指针直接用函数来输出&#xff0c;看下 #include<stdio.h…

Spring经典面试题和答案

转载自 Spring经典面试题和答案 Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过POJO为基础的编…

use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching

大家好&#xff0c;我是雄雄。 今天在做异步的时候&#xff0c;报了个错&#xff0c;错误信息如下&#xff1a; Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled. 2022-08-25 17:58:30.784 [main] ERRO…

.NET Core 使用RabbitMQ

RabbitMQ简介AMQP&#xff0c;即Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff0c;是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计。消息中间件主要用于组件之间的解耦&#xff0c;消息的发送者无需知道消息使用者的存在&#xff0c…

nssl1157-简单数学题【约数,换元法】

正题 题目大意 给出N&#xff0c;求所有的T使得 N−12TN−T\frac{N-\frac12T}{N-T}N−TN−21​T​ 是正整数。 解题思路 我们定义xN−TxN-TxN−T 那么TN−xN−(N−T)TN-xN-(N-T)TN−xN−(N−T) 原来的式子边为 N−12(N−x)x\frac{N-\frac12(N-x)}{x}xN−21​(N−x)​ N−12N−…

冒泡法排序

#include<stdio.h> main(){int i,j,t,a[]{2,5,8,6,15,89,55,46};for(i0;i<7;i){for(j0;j<7-i;j){if(a[j]>a[j1]){ta[j1];a[j1]a[j];a[j]t;} }}for(i0;i<8;i){printf("%d ",a[i]);} } 刚开始还以为敲的有bug&#xff0c;数组里有五六位后排序就…

十分钟快速了解 ES6 Promise

转载自 十分钟快速了解 ES6 Promise 什么是Promise Promise最早由社区提出并实现&#xff0c;典型的一些库有Q&#xff0c;when&#xff0c; bluebird等&#xff1b;它们的出现是为了更好地解决JavaScript中异步编程的问题&#xff0c;传统的异步编程最大的特点就是地狱般的回…

揭示.NET Core和.NET Standard

作为.NET家族的最新成员&#xff0c;有很多关于.NET Core和.NET Standard的误解&#xff0c;以及它们于.NET Framework之间的区别。在这篇文章&#xff0c;我会准确的解释他们究竟是什么&#xff0c;并看看何时应选择哪一个。在详细介绍之前&#xff0c;首先查看.NET的结构图&a…

使用wxjava实现发表内容、预览信息以及推送文章

大家好&#xff0c;我是雄雄。 文章目录前言保存草稿的方法获取草稿箱列表根据media_id获取草稿箱信息给指定人发送预览文章推送文章&#xff08;按照标签推送&#xff09;前言 今天分享的内容有如下几个&#xff1a; 保存草稿根绝media_id会哦去草稿箱的信息发表内容&#x…

ssl提高组周六模拟赛【2018.9.22】

前言 这周居然考两道数学&#xff0c;反正是我的弱项。然后第一题考试的时候zz了竟然忘了怎么二分 成绩 只放Rank1∼10Rank\ 1\sim10Rank 1∼10 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112015hjw2015hjw2015hjw2102102101001001007070704040402222017mysel…

指针数组(三)

#include<stdio.h>void g(int *pArr,int len){pArr[2]88;pArr[4]88;}void f(){int a[]{1,2,3,5,9},i;g(a,5);for(i0;i<5;i){printf("%d\t",a[i]);}}main(){f();}利用指针改变数组里的内容和内容

腾讯面试题:一条SQL语句执行得很慢的原因有哪些?

最近的招聘季&#xff0c;腾讯有一道面试题&#xff1a;一条SQL语句执行得很慢的原因有哪些&#xff1f; 其实&#xff0c;这个问题可以涉及到 MySQL 的很多核心知识&#xff0c;可以扯出一大堆&#xff0c;就像要考你计算机网络的知识时&#xff0c;问你“输入URL回车之后&am…

spring cloud+dotnet core搭建微服务架构:服务发现(二)

前言上篇文章《手把手教你使用spring clouddotnet core搭建微服务架构&#xff1a;服务治理&#xff08;-&#xff09;》实际上只讲了服务治理中的服务注册&#xff0c;服务与服务之间如何调用呢&#xff1f;传统的方式&#xff0c;服务A调用服务B&#xff0c;那么服务A访问的是…

猿创征文|公众号开发之路——为了研究公众号,我注册了公司

大家好&#xff0c;我是雄雄。 内容先知&#x1f60a;1.前言&#x1f636;2.想法&#x1f913;3.注册及研究&#x1f4aa;4.注册公司现在是北京时间&#xff1a;2022年9月10日23:34&#xff0c;农历八月十五日&#xff0c;2022年的教师节&#xff0c;也是中秋节&#xff0c;祝大…