BZOJ 3331压力

Linux安全加固:如何彻底禁用SCP、SFTP与WinSCP连接 SSH协议是远程管理和安全传输的基石,日常服务器运维中,基于SSH的文件传输方式如SCP和SFTP扮演着重要的数据交换角色。然而在高安全要求的业务场景下,这些便捷的通道也可能成为数据泄露的风险口。禁用文件传输的核心并非移除客户端软件,而是在服务端的sshd_config配置中切断协议通道。通过注释Subsystem配置项可关闭SFTP子系统,结合调整用户Shell或使用ForceCommand指令,即可阻断SCP远程命令执行链路。这种服务端层面的安全加固手段,适用于跳板机、堡垒机及要求等保合规的生产环境。W 阅读详情

【问题描述】

如今,路由器和交换机构建起了互联网的骨架。处在互联网的骨干位置的核心路由器典型的要处理100Gbit/s的网络流量。他们每天都生活在巨大的压力之下。
   小强建立了一个模型。这世界上有N个网络设备,他们之间有M个双向的链接。这个世界是连通的。在一段时间里,有Q个数据包要从一个网络设备发送到另一个网络设备。
一个网络设备承受的压力有多大呢?很显然,这取决于Q个数据包各自走的路径。不过,某些数据包无论走什么路径都不可避免的要通过某些网络设备。
   你要计算:对每个网络设备,必须通过(包括起点、终点)他的数据包有多少个?

【输入】

第一行包含3个由空格隔开的正整数N,M,Q。
接下来M行,每行两个整数u,v,表示第u个网络设备(从1开始编号)和第v个网络设备之间有一个链接。u不会等于v。两个网络设备之间可能有多个链接。
接下来Q行,每行两个整数p,q,表示第p个网络设备向第q个网络设备发送了一个数据包。p不会等于q。

【输出】

输出N行,每行1个整数,表示必须通过某个网络设备的数据包的数量。

【样例输入】

4 4 2
1 2
1 3
2 3
1 4
4 2
4 3

【样例输出】

2
1
1
2

【数据范围与约定】

样例解释:
设备1、2、3之间两两有链接,4只和1有链接。4想向2和3各发送一个数据包。显然,这两个数据包必须要经过它的起点、终点和1。

数据规模:
对于40%的数据,1<=N,M,Q<=2000
对于60%的数据,1<=N,M,Q<=40000
对于100%的数据,1<=N<=100000,1<=M,Q<=200000

一眼题。求出点双之后成为一棵树,用各种方法乱搞。

主要是太久没写点双= =

#include<bits/stdc++.h>
using namespace std;
inline int get(){register int re=0,f=1;register char c;while(c=getchar(),(c>='0'&&c<='9')^1)f=c^'-';while(re=(re<<1)+(re<<3)+(c^48),c=getchar(),(c>='0'&&c<='9'));return f?re:-re;}
const int Maxn=400005;
vector<int>G[Maxn];
int n,m,q;
struct Splay{
	int p[Maxn],ch[2][Maxn];
	bool rev[Maxn];
	int v[Maxn],tag[Maxn];
	#define ls(x) ch[0][x]
	#define rs(x) ch[1][x]
	inline bool isroot(int x){
		return (ls(p[x])^x)&&(rs(p[x])^x);
	}
	inline void rotate(int x){
		int f=p[x],gf=p[f],tp=rs(f)==x,son=ch[!tp][x];
		if(!isroot(f))ch[rs(gf)==f][gf]=x;p[x]=gf;
		ch[tp][p[son]=f]=son;
		ch[!tp][p[f]=x]=f;
	}
	inline void pushdown(int x){
		if(rev[x]){
			rev[ls(x)]^=1,rev[rs(x)]^=1;
			swap(ls(x),rs(x));
			rev[x]^=1;
		}
		if(tag[x]){
			v[ls(x)]+=tag[x];v[rs(x)]+=tag[x];
			tag[ls(x)]+=tag[x],tag[rs(x)]+=tag[x];
			tag[x]=0;
		}
	}
	int top,s[Maxn];
	inline void splay(int x){
		s[++top]=x;for(int i=x;!isroot(i);i=p[i])s[++top]=p[i];
		while(top)pushdown(s[top--]);
		while(!isroot(x)){
			if(!isroot(p[x])&&((rs(p[p[x]])==p[x])==(rs(p[x])==x)))rotate(p[x]);
			rotate(x);
		}
	}
};
struct LinkcutTree{
	Splay splay;
	inline void access(int x){
		for(int lastx=0;x;lastx=x,x=splay.p[x])
			splay.splay(x),splay.rs(x)=lastx;
	}
	inline void makeroot(int x){
		access(x),splay.splay(x),splay.rev[x]^=1;
	}
	inline void link(int x,int y){
		makeroot(x),splay.p[x]=y;
	}
	inline void split(int x,int y){
		makeroot(x),access(y),splay.splay(y);
	}
}lct;
struct Targan{
	int cnt,tj[Maxn],ll[Maxn];
	int bcc,top,s[Maxn];
	void Tarjan(int x,int fa){
		tj[x]=ll[x]=++cnt;
		s[++top]=x;
		for(int i=0;i<G[x].size();++i){
			int to=G[x][i];if(to==fa)continue;
			if(!tj[to]){
				Tarjan(to,x);
				ll[x]=min(ll[x],ll[to]);
				if(ll[to]>=tj[x]){
					++bcc;int v;
					do{
						v=s[top--];
//						cout<<n+bcc<<" "<<v<<"\n";
						lct.link(n+bcc,v);
					}while(v^to);
//					cout<<n+bcc<<" "<<x<<"\n";
					lct.link(n+bcc,x);
				}
			}else ll[x]=min(ll[x],tj[to]);
		}
	}
}targan;
int main(){
	freopen("pressure.in","r",stdin);
	freopen("pressure.out","w",stdout);
	n=get(),m=get(),q=get();
	for(int i=1;i<=m;++i){
		int x=get(),y=get();
		G[x].push_back(y);
		G[y].push_back(x);
	}
	for(int i=1;i<=n;++i)
		if(!targan.tj[i])targan.Tarjan(i,0);
	while(q--){
		int x=get(),y=get();
		lct.split(x,y);
		++lct.splay.v[y];
		++lct.splay.tag[y];
	}
	for(int i=1;i<=n;++i){
		lct.makeroot(i);
		cout<<lct.splay.v[i]<<"\n";
	}
	return 0;
}

 

Spring Boot入门(13):Mybatis-Plus之条件构造器使用手册:精通让你快速提高查询效率的技巧! 化繁为简,MP 中条件构造器的使用,极其详细. 阅读详情

相关推荐

接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础

本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。 首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。 放入准备好的通讯类库; 新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机,建立博途项目流程如下: 新建项目,右键项目-属性-保护-对勾,如图: 不得不说的是,仿真中加密的FB块是无法下载的哦~ 添加CPU...

NS_Speak(IVAV) 8057

BZOJ3331 压力【必经点,圆方树】

题目描述 一个连通无向图,有Q个从sis_isi​走到tit_iti​的运输,问1~n每个点作为必经点的次数。 N≤100000,M,Q≤200000 题目分析: 必经点就是割点和起点终点,缩点双,重新建图构成一棵树,然后树上差分。 其实就是圆方树模板题。 但是我第一次打点双震惊了,退栈的终止条件不能再像边双那样用stk[top]!=u来判断,而应该用stk[top]!=v,在点双里面u,v在栈中...

Master.Yi的博客 380

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models

大型语言模型(LLM)被认为是推进智能教育的一项关键技术,因为它们展示了深入理解教学场景和为学生提供个性化指导的潜力。然而,当前个性化教学中基于LLM的应用主要遵循“问答”范式,学生被动地获得答案和解释。在本文中,我们提出了苏格拉底式教学模式(SocraticLM ),它实现了一种苏格拉底式的“发人深省”的教学范式,实现了真正的课堂教师的角色,让学生积极参与到真正掌握解决问题所需的思考过程中。

weixin_43961909的博客 2882

3331: [BeiJing2013]压力

题意 如今,路由器和交换机构建起了互联网的骨架。处在互联网的骨干位置的 核心路由器典型的要处理100Gbit/s的网络流量。他们每天都生活在巨大的压力 之下。 小强建立了一个模型。这世界上有N个网络设备,他们之间有M个双向的 链接。这个世界是连通的。在一段时间里,有Q个数据包要从一个网络设备发 送到另一个网络设备。 一个网络设备承受的压力有多大呢?很显然,这取决于Q个数据包各自走 ...

OZY的博客 679

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 210

【STM32单片机】RS485通信—基于STM32G474芯片

做项目需要用485通信来控制Go电机参考资料:【【STM32F103C8T6系列】10. 实验例程——485(USART串口)通讯实验】 https://www.bilibili.com/video/BV19w411r7ka/?PDF: STM32G474 开发指南 正点原子 DMG474 开发板教程 第28章485只是物理层,代码逻辑还是UART串口通信,相当于是电路有RS485转换芯片,所以还是用UART串口通信方式。

m0_48808835的博客 3647

BZOJ3331: [BeiJing2013]压力(点双连通分量+缩点+LCA+树上差分)

链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3331 题意:n个点,m条无向边,给出q个点对,问这n个点分别是多少点对的必经点。(两点本身也算也算。) 思路:显然,如果两点在同一个点双中,那么他俩的必经点也就是他俩本身。否则,这两点的必经点也就是连接他俩点双的割点。我们将点双缩成一个点,割点视为一个点(一个割点可能属于若干个点双),然...

birdmanqin的博客 590

【学习系列】SAP RAP 20:Unmanaged场景开发示例-调用BAPI、BAPI包装类、BO接口创建标准采购订单

本文介绍了在SAP RAP(Restful ABAP Programming)框架下,通过三种方式实现采购订单创建的方案。首先分析了RAP框架对传统BAPI调用的限制,特别是禁止显式COMMIT语句的要求。随后详细阐述了三种实现方式:1)直接调用传统BAPI(仅支持OP环境);2)使用BAPI包装类(仅支持OP环境);3)调用标准业务对象接口(支持所有环境)。 文章重点说明了在unmanaged场景下的技术实现细节,包括字段控制、缓冲区管理、测试运行与实际调用的分离处理等。针对每种方式都提供了完整的实施步骤

DeveloperMrMeng的博客 598

[差分][倍增lca][tarjan] Jzoj P3325 压力

Description 如今,路由器和交换机构建起了互联网的骨架。处在互联网的骨干位置的核心路由器典型的要处理100Gbit/s的网络流量。他们每天都生活在巨大的压力之下。小强建立了一个模型。这世界上有N个网络设备,他们之间有M个双向的链接。这个世界是连通的。在一段时间里,有Q个数据包要从一个网络设备发送到另一个网络设备。一个网络设备承受的压力有多大呢?很显然,这取决于Q个数据包各自走的路径...

weixin_30426879的博客 189

c\c++: Identifiers, modifier, qualifier, specifier, decorator; systemtap

文章目录参考英语含义在c、C++ 参考 c++ 标准 https://blog.youkuaiyun.com/tyronne/article/details/44016621 英语含义 modifier word or phrase that modifies (modify 2) another word or phrase 修饰语. qualifier (grammar) word, esp an adjective or adverb, that qualifies another word 修饰词; (尤指)形

mzhan017的博客 2427

19、英国模式:银行体系的演变与现代金融架构

本文深入探讨了英国银行体系从专业化向全能银行的演变过程,分析了自律监管模式的优劣,并解析了围栏制度对金融稳定的影响。同时,文章还介绍了信用合作社、建筑协会和投资银行的角色与转型,全面展示了英国金融体系的多样性与复杂性,以及其在全球金融市场中的重要作用。

embedding5hiker的博客 104

BZOJ3331 [BeiJing2013]压力 广义圆方树

3331: [BeiJing2013]压力 Description 如今,路由器和交换机构建起了互联网的骨架。处在互联网的骨干位置的核心路由器典型的要处理100Gbit/s的网络流量。他们每天都生活在巨大的压力之下。 小强建立了一个模型。这世界上有N个网络设备,他们之间有M个双向的链接。这个世界是连通的。在一段时间里,有Q个数据包要从一个网络设备发送到另一个网络设备。 一个网络设备承受的压...

crosnken的博客 439

【LLM数据篇】预训练数据集+指令生成sft数据集

在《Aligning Large Language Models with Human: A Survey》综述中对LLM数据分类为典型的人工标注数据、self-instruct数据集等 优秀的开源sft数据集:alpaca_data、belle、千言数据集、firefly、moss-003-sft-data多轮对话数据集等 文章目录 note 构造指令实例的3种方式 sft:Aligning Large Language Models with Human: A Survey Alpaca 1. self

发现问题,并解决问题,批判性思维 1万+

【BZOJ3331】[BeiJing2013]压力 Tarjan求点双

【BZOJ3331】[BeiJing2013]压力 Description 如今,路由器和交换机构建起了互联网的骨架。处在互联网的骨干位置的核心路由器典型的要处理100Gbit/s的网络流量。他们每天都生活在巨大的压力之下。 小强建立了一个模型。这世界上有N个网络设备,他们之间有M个双向的链接。这个世界是连通的。在一段时间里,有Q个数据包要从一个网络设备发送到另一个网络设备。 ...

aodanchui1057的博客 122

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【圆方树】BZOJ3331 压力

题目: 分析: 圆方树板子题 建出圆方树后,直接树上差分即可 #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #define SF scanf #define PF printf #define MAXN 400010 using namespace s...

氧化钠的博客 294

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

BZOJ3331压力

码量略大。 题意就是求路径必经点。 tarjan缩点,所有的非割点只有是起点终点时才必经,直接开个ans数组就OK了。 至于割点,因为缩完点之后的图是vDcc和割点共同组成的,而且题目说连通,那就是棵树,直接树上差分,最后统计信息,输出时输出割点的val即可。 #include<iostream> #include<algorithm> #in...

bansi8227的博客 268

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

BZOJ3331 BZOJ2013 压力

考前挣扎 圆方树这么早就出现了嘛。。。 要求每个点必须被经过的次数 所以就是路径上的割点/端点++ 由于圆方树上所有非叶子圆点都是割点 所以就是树上差分就可以辣。 实现的时候出了一点小问题。 就是这里 if(low[y] == dfn[x]) { int r = ++poi,w; do { w = stk.top(); stk.pop(...

weixin_33734785的博客 137

BZOJ3331 BJOI2013 压力

考前挣扎 圆方树这么早就出现了嘛。。。 要求每个点必须被经过的次数 所以就是路径上的割点/端点++ 由于圆方树上所有非叶子圆点都是割点 所以就是树上差分就可以辣。 实现的时候出了一点小问题。 就是这里 if(low[y] == dfn[x]) { int r = ++poi,w; do { w = stk.top(); stk.pop(); ...

寒雨微凝's Blog 399

bzoj3331 压力(圆方树)

题目链接 圆方树 圆方树就是对于联通无向图中的每一个点双新建一个方点,与点双中的每个点连一条边,然后将原来的边删去。将原来的点看作圆点,新建的点看作方点。所以叫做圆方树。 性质 1.圆方树肯定是棵树(废话)。证明显然。 2.圆方树中与圆点相连的点肯定是方点。与方点相连的点肯定是圆点。 算法 根据圆方树的定义就可以知道。构建圆方树的过程实际上就是找点双的过程。本质上就是找割点。所以用tar...

diecimu4798的博客 202

[BZOJ3331][BeiJing2013]压力

description 给你一张\(n\)点\(m\)条边的无向图,有\(q\)组询问形如\((u,v)\),表示要从\(u\)走到\(v\)。 现在问你对于每个点,有多少组询问必经过这个点。 sol 一张图中两个点之间的必经点就是圆方树上两点路径上的所有圆点。 所以只要树上差分一波就可以了。 code #include<cstdio> #include<algorit...

abcyan1235的博客 186

bzoj3331 [BeiJing2013]压力

题目显然,如果两个点之间要有一个必须到达的点,这个点必须是割点。只要我们求出点双联通分量,然后对图重构,在新得到的树上做就好了。我们在树上就可以差分了,最后求一个子树和就好了。#include<bits/stdc++.h> #define N 500000 using namespace std; int first[N+5],nxt[N+5],to[N+5],siz; int First[N+5

浅笑~如夏 650

BZOJ 3331 [BeiJing2013]压力

题解: 建出圆方树 先求点双,然后每个点向点双代表的方点连边 然后树上差分一下 #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<queue> #include<stack> usin...

auu55357的博客 172

BZOJ3331 BeiJing2013 压力 树上差分 圆方树

题目链接 题意: 你有一个nnn个点mmm条边的无向连通图,有qqq次操作,每次给出两个点x,yx,yx,y,xxx到yyy的路径上必须经过的点的权值加一,问你最后每一个点的权值。n,m,q&lt;=2e5n,m,q&lt;=2e5n,m,q<=2e5。 题解: 无向图上路径问题还是转成圆方树上路径问题来搞。然后这个题比较简单,思考一下就会发现其实就是圆方树的路径上的圆点个数...

forever_shi的博客 337

bzoj 3331: [BeiJing2013]压力

Description 如今,路由器和交换机构建起了互联网的骨架。处在互联网的骨干位置的 核心路由器典型的要处理100Gbit/s的网络流量。他们每天都生活在巨大的压力 之下。 小强建立了一个模型。这世界上有N个网络设备,他们之间有M个双向的 链接。这个世界是连通的。在一段时间里,有Q个数据包要从一个网络设备发 送到另一个网络设备。 一个网络设备承受的压力有多大呢?很显然,这取决...

weixin_30532987的博客 173

[bzoj3331][强联通][树上差分]压力

Description 如今,路由器和交换机构建起了互联网的骨架。处在互联网的骨干位置的 核心路由器典型的要处理100Gbit/s的网络流量。他们每天都生活在巨大的压力 之下。 小强建立了一个模型。这世界上有N个网络设备,他们之间有M个双向的 链接。这个世界是连通的。在一段时间里,有Q个数据包要从一个网络设备发 送到另一个网络设备。 一个网络设备承受的压力有多大呢?很显然...

Rose_max的博客 530
上一篇: SPOJ1487 Query on a tree III
下一篇: JZOJ5055 树上路径
DancingZ
博客等级 码龄9年 10粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值