Jzoj5452【NOIP2017提高A组冲刺11.5】轰炸

新中新身份证阅读器SDK避坑指南:DKQ-A16D在C#中调用SynIDCardAPI.dll的5个常见错误 本文详细介绍了新中新DKQ-A16D身份证阅读器在C#开发中的常见问题及解决方案,包括驱动安装、端口初始化、数据读取与解析等关键步骤。特别针对SynIDCardAPI.dll调用中的5个典型错误提供了实用避坑指南,帮助开发者高效完成实名认证系统集成。 阅读详情

战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。
小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。
每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市i,j,它们在同一轮被轰炸,并且可以通过地道从城市i 到达城市j,那么城市i 的间谍可能因为撤离到城市j 而被炸死。为了避免这一情况,战狂不会在同一轮轰炸城市i 和城市j。
你需要求出战狂最少需要多少轮可以对每座城市都进行至少一次轰炸。

此题好坑啊,隔了一天才切掉

我们好多人看错题了qwq,题目有一句诡异的话:

“

并且可以通过地道从城市i 到达城市j

”

于是我们70%的人理解成了:i,j有连边

而不是:i可以通过地道到达j

好吧看对了这题就是一个tarjan缩点+最长路dp而已。。。

嗯上来就可以写一发

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<vector>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1000010
using namespace std;
struct Edge{ int v,nt; } G[N];
int h[N],dfn[N],low[N],col[N],f[N],n,m,cnt=0;
vector<int> G2[N]; int st[N],top=0,clk=0,Col,sz[N];
inline void adj(int x,int y){ G[++cnt]=(Edge){y,h[x]}; h[x]=cnt; }
void tarjan(int x){
	dfn[x]=low[x]=++clk; 
	st[++top]=x;
	for(int v,i=h[x];i;i=G[i].nt)
		if(!dfn[v=G[i].v]){
			tarjan(v); low[x]=min(low[x],low[v]);
		} else if(!col[v]) low[x]=min(low[x],dfn[v]);
	if(low[x]==dfn[x]){
		++Col;
		do { col[st[top]]=Col; sz[Col]++; } while(st[top--]!=x);
	}
}
int dp(int x){
	if(~f[x]) return f[x]; f[x]=0;
	for(int i=0,z=G2[x].size();i<z;++i) f[x]=max(f[x],dp(G2[x][i]));
	f[x]+=sz[x]; return f[x];
}
int main(){
	freopen("bomb.in","r",stdin);
	freopen("bomb.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int x,y,i=1;i<=m;++i){
		scanf("%d%d",&x,&y);
		adj(x,y);
	} memset(f,-1,sizeof f);
	for(int i=1;i<=n;++i) if(!dfn[i]) tarjan(i);
	for(int i=1;i<=n;++i)
		for(int j=h[i];j;j=G[j].nt)
			if(col[i]!=col[G[j].v]) G2[col[i]].push_back(col[G[j].v]);
	for(int i=1;i<=n;++i) if(!~f[i]) f[0]=max(f[0],dp(i));
	printf("%d\n",*f);
}
加上了O3这也才95分!

当然啦,1BW层递归在OJ上肯定要爆栈的

于是,懒得打人工栈,就找了一些奇技淫巧:C++如何扩大栈

有兴趣可以点击黑块的链接看看,下面就把用汇编扩栈的code放上来

(还有几天就noip了请勿比赛中作死而且noip不卡栈)

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<vector>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#define N 1000010
using namespace std;
extern int main2(void) __asm__ ("main2");  
struct Edge{ int v,nt; } G[N];
int h[N],dfn[N],low[N],col[N],f[N],n,m,cnt=0;
vector<int> G2[N]; int st[N],top=0,clk=0,Col,sz[N];
inline void adj(int x,int y){ G[++cnt]=(Edge){y,h[x]}; h[x]=cnt; }

void tarjan(int x){
	dfn[x]=low[x]=++clk; 
	st[++top]=x;
	for(int v,i=h[x];i;i=G[i].nt)
		if(!dfn[v=G[i].v]){
			tarjan(v); low[x]=min(low[x],low[v]);
		} else if(!col[v]) low[x]=min(low[x],dfn[v]);
	if(low[x]==dfn[x]){
		++Col;
		do { col[st[top]]=Col; sz[Col]++; } while(st[top--]!=x);
	}
}
int dp(int x){
	if(~f[x]) return f[x]; f[x]=0;
	for(int i=0,z=G2[x].size();i<z;++i) f[x]=max(f[x],dp(G2[x][i]));
	f[x]+=sz[x]; return f[x];
}
int main2(){
	scanf("%d%d",&n,&m);
	for(int x,y,i=1;i<=m;++i){
		scanf("%d%d",&x,&y);
		adj(x,y);
	} memset(f,-1,sizeof f);
	for(int i=1;i<=n;++i) if(!dfn[i]) tarjan(i);
	for(int i=1;i<=n;++i)
		for(int j=h[i];j;j=G[j].nt)
			if(col[i]!=col[G[j].v]) G2[col[i]].push_back(col[G[j].v]);
	for(int i=1;i<=n;++i) if(!~f[i]) f[0]=max(f[0],dp(i));
	printf("%d\n",*f); exit(0);
}
int main(){
	freopen("bomb.in","r",stdin);
	freopen("bomb.out","w",stdout);
	int size = 256 << 20;  // 256Mb  
    	char *p = (char *)malloc(size) + size;  
    	__asm__ __volatile__(  
        "movq  %0, %%rsp\n"  
        "pushq $exit\n"   
        "jmp main2\n"  
        :: "r"(p)); 
}

第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛技术解析与实战指南 本文深入解析了第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛的核心技术。内容涵盖从零搭建数字孪生环境、实现AI视觉任务(二维码识别、引导线追踪、目标检测)、在边缘设备部署轻量化大模型进行图生文描述,到遥操作与自主控制的平滑切换,并提供了基于ROS2的系统集成与赛场实战指南,助力参赛者高效备赛。 阅读详情

相关推荐

ADS与Cadence中Verilog-A文件的编译与调用实战指南

本文详细介绍了在ADS与Cadence平台中Verilog-A文件的编译与调用实战指南,涵盖开发环境配置、模型创建与编译、仿真设置技巧以及跨平台协作与调试等内容。通过具体案例和优化策略,帮助工程师高效完成混合信号仿真设计,提升电路建模与验证效率。

weixin_29196315的博客 496

【AVD】简述某些视频在线播放时卡顿、本地播放时不卡顿的问题

曾经在业务中遇到过这样的问题,我们编码出来的视频在 Android、iOS 端,使用 ijkplayer 内核的播放器播放时卡顿,甚至无法任意定位播放位置,将导致卡顿无法播放。今天,又有同事遇到类似的问题,而我发现,我只写过一个《用 notepad++ 和 Excel 协助分析媒体文件包》,而并没有把当时遇到的问题分析记录下来。于是,在此简单说明一下。 视频文件结构 教科书般的教程、课程中对视频文件结构的描述非常详细,此处不赘述,简单地说,视频文件也是一种文件,是文件,就是一堆二进制数的集合,而且是一个.

我是一只小小小小鸟 33万+

为什么你的XGBoost多分类效果不如预期?可能是这5个参数没调对

本文深度剖析了XGBoost模型在处理多分类问题时效果不佳的五大关键参数陷阱。针对多分类问题的独特性,文章提供了max_depth、learning_rate、采样参数及正则化参数等核心参数的量化调整策略与诊断方法,帮助开发者精准调优,有效提升模型在各类别上的均衡性能与泛化能力。

weixin_29182481的博客 295

JZOJ 5452. 【NOIP2017提高A组冲刺11.5】轰炸

JZOJ 5452. 【NOIP2017提高A组冲刺11.5】轰炸 Description战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。 小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。 每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在

Felix-Lee的博客 589

手把手教你用Microsoft AEC Challenge数据集训练自己的回声消除模型(附完整代码)

本文详细介绍了如何使用Microsoft AEC Challenge数据集训练专业的回声消除模型,包括环境准备、数据清洗、模型架构设计、训练流程和实际部署注意事项。通过完整的代码示例和实战指南,帮助开发者快速掌握AEC技术,提升语音通信系统的回声消除效果。

weixin_27697385的博客 454

VScode搭建Opencv(C++开发环境)

VScode配置Opencv一、准备软件二 、下载软件1、MinGw下载2、 Cmake下载3、Opencv下载三、编译1、cmake-gui2、make3、install四、 VScode配置1、launch.json2、c_cpp_properties.json3、tasks.json五、测试 用了半天事件,看了各种的博客终于配置成功了,在这里记录并分享一下,让更多的人少走弯路。 本次环境是Win 10. 一、准备软件 我们本次用到的3个软件,(建议读者文件路径,文件版本 尽量都和我相同,这样不容易出错

河旬的博客 8万+

雅礼集训1.4 轰炸

标签:tarjan缩点,拓扑排序,DP 题目 轰炸(bomb) 【题目描述】 有n座城市,城市之间建立了m条有向的地下通道。 你需要发起若干轮轰炸,每轮可以轰炸任意多个城市。但每次轰炸的城市中,不能存在两个不同的城市i,j满足可以通过地道从城市i到达城市j。 你需要求出最少需要多少轮可以对每座城市都进行至少一次轰炸。 【输入数据】 第一行两个整数n,m。接下来m行每行两个整数a,b

Welcome to yjjr's blog! 651

8.DJI-PSDK:一站式项目功能开发总结(空中气象站项目/激光甲烷检测项目)

本文将以一篇文章的幅度快速完成: 项目一:空中气象站项目; 项目二:激光甲烷项目; 项目所使用的PSDK来源于第0章节末尾的百度网盘;解压:Payload-SDK-3.8.zip代码所在目录:双击打开: 修改打印串口和相关波特率,我们修改如下: 进行相关编译选项配置如下: :

哒宰的博客 293

【NOIP2017提高A组冲刺11.5】轰炸

Description战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。 小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。 每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市i,j,它们在同一轮被轰炸,并且可以

Jacky35 838

YOLOv12改进策略【卷积层】| CVPR-2020 利用DynamicConv 动态卷积 结合A2C2f进行二次创新,提高精度

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 827

医学图像处理实战:利用OpenSlide解析病理SVS切片的完整解决方案

本文介绍了使用openslide处理病理SVS切片的完整流程,从基础安装到科研应用。主要内容包括:1)SVS切片特点及openslide工具简介;2)环境配置与软件安装;3)基础操作:读取切片、查看信息、可视化不同层级图像;4)进阶操作:坐标裁剪与批量处理;5)科研方向拓展:结合AI模型进行病理分割分类、量化分析及可视化报告。教程提供了完整的代码示例,帮助毕业设计学生快速掌握病理图像分析的核心技能。

m0_71589036的博客 309

JZOJ5452. 【NOIP2017提高A组冲刺11.5】轰炸

Description战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。 小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。 每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市i,j,它们在同一轮被轰炸,并且可以

lijf2001的博客 402

windows下玩转vllm:在wsl下安装vllm

当前,部署通义千问2.5-vl已经是一件箭在弦上,不得不发的事儿了。网上搜了一下,发现还是用vllm用的比较多。于是乎,这就开始尝试部署vllm。但是我们之前说了,vllm是不支持直接在windows上部署的,我们还得搞wsl或者docker。咱今天先尝试使用wsl进行安装哈。

xiezhipu的博客 4136

【JZOJ 5452】【NOIP2017提高A组冲刺11.5】轰炸

Description战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。 小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。 每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市i,j,它们在同一轮被轰炸,并且可以

863

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jre9下载 jdk9

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

NOIP 2015模拟赛[nodgd题]题解&总结

第一题一辈子过不了系列 这次考试又学到了许多新东西,受益匪浅 但是成绩依旧不够理想,第一题又炸了,明明好好的一道打表题都打错了,身败名裂 以后还是继续巩固一下这些零零散散的知识,否则考试犯了错找不出来要浪费好多时间 好数 【问题描述】 nodgd认为,如果一个数的三进制表示里数字1的个数和数字2的个数一样多,那就是好数。现在nodgd想知道不小于

SuperGate的博客 2221

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

bomb 强连通缩点+拓扑

轰炸(bomb) 【题目描述】 有n座城市,城市之间建立了m条有向的地下通道。 你需要发起若干轮轰炸,每轮可以轰炸任意多个城市。但每次轰炸的城市中,不能存在两个不同的城市i,j满足可以通过地道从城市i到达城市j。 你需要求出最少需要多少轮可以对每座城市都进行至少一次轰炸。 【输入数据】        第一行两个整数n,m。接下来m行每行两个整数a,b表示一条从a

七箫. 429

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

poj2388

题意:求中位数,若序列长度为偶数输出较后面那个 水题,STL:sort排序即可(代码较丑) #include #include using namespace std; int n,s[10010]; int main(){ for(;~scanf("%d",&n);sort(s,s+n),printf("%d\n",s[n>>1])) for(int i=0;i<n;++i) scan

扩展の灰(Extended Ash/Cooevjnz) 567

NOIP2017模拟 轰炸 强连通分量

NOIP2017模拟赛 轰炸题目大意 给你n个点m条边的有向图,一次可以炸毁任意多个点(炸毁后不影响边),但前提是可到达的点不能同时炸毁,问炸毁n个点至少需要多少次? 数据范围 对于 20%的数据,n,m<=10。 对于 40%的数据,n,m<=1000。 对于另外 30%的数据,保证无环。 对于 100%的数据,n,m<=1000000 数据范围很大,这其实是一个很好的提

rgnoH的博客 470

某考试 T2 bomb

轰炸(bomb)【题目描述】有n座城市,城市之间建立了m条有向的地下通道。你需要发起若干轮轰炸,每轮可以轰炸任意多个城市。但每次轰炸的城市中,不能存在两个不同的城市i,j满足可以通过地道从城市i到达城市j。你需要求出最少需要多少轮可以对每座城市都进行至少一次轰炸。【输入数据】第...

weixin_30237281的博客 150

bzoj 5450 轰炸

题意 给出n 个点m 条边的有向图 每次可以选若干点染色,但选出的这些点两两不能到达 问至少选多少次才能染完所有的点 n,m≤106n, m \le 10^{6}n,m≤106 题解 首先对强联通分量缩点,问题转化为一个DAG,每个点有一个权值,每次可以给一些互相不能到达的点的权值-1,求所有点权值减到0的最小次数。如果直接考虑使互相不能到达的更多不太好做,反过来想那些点互相能到达:显然一条路径上...

sz_165394732的博客 191

[NOIP2015提高组Day1T2]信息传递_强联通分量

找不到文字的就放图了 题解一开始想到很水的dfs(果然是因为最近常做淼题?) 结果wa一半的点,另一半刚好±1 经提示跑tarjan,找到最小的不是1的强联通分量 手工栈,手工栈,手工栈,学习了#pragma comment(linker, "/STACK:102400000,102400000") #include <stdio.h> #include <cstring>

olahiuj的博客 768

JZOJ5466. 【NOIP2017提高A组冲刺11.9】玩游戏

Description小A得了忧郁综合症,小B正在想办法开导她。 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权。小B定义一条路径的权值为所有经过边中的最大权值,小A则定义两点的最短路径为所有路径中权值最小的路径权。 每次小A和小B会选出k对点mi_1,mi_2,分别计算出mi_1,mi_2的最短路径ti,然后小B会拿出k堆灵魂宝石,每堆有ti个。然后小A先从

lijf2001的博客 593

T145192 【2020.8.23NOIP模拟赛】最优路线(Floyd)

最优路线 解题思路 这题就是Floyd算法 但是要加许多玄学优化 比如: inline 加在子程序前 快读(两个) 加在输入上 register 加在定义和循环前 O2优化 加在开头 把i++改为++i AC代码 #pragma GCC optimize(2)//O2玄学 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> using namespace std;

我很菜的好吧 479
上一篇: Jzoj5454【NOIP2017提高A组冲刺11.5】仔细的检查
下一篇: Jzoj5455【NOIP2017提高A组冲刺11.6】拆网线
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值