191026 practice

两杯 k v a s s \mathscr{kvass} 下肚,我还是那么菜

T1 中位数

智障菜题

T2 调制饮料

简单模拟
智障菜题
还是提一句:写函数简化代码

T3 排序

一句话题意:一个序列,只能调整第一个数的位置,问最少调几次
想明白了就很简单——最后一个逆序对的位置就是要移动的次数
因为要保证所有数顺序,必须把所有逆序对调正
而要调对所有逆序对,就一定会调最后一个
又由于第一个数可以放在任何位置
因此在调的时候就保证不产生新的逆序对
调到最后一个逆序对的时候就调好了

然而测试点1有坑
那是一个纯升序的数列,如果在循环里面输出答案,什么都出不来
因此令一个(全局变量)antimony=i
最后输出antimony

T4 周长与面积

细胞的升级版
传送门咕了
DFS求连通块菜题就把我搞死了
zgs的代码T了

周长就是#号围成区域的周长,实际上就是‘#’周围‘.’的数量

T5 联络员

一句话题意:一个图,一些点,有必须边和可以不选的边,每个边都有权值,求使每个点连通的最小权值

做的时候写了一个又臭又长的代码
但是思想是搞对了的
kruscal- 并查集思想求最小生成树
先处理必须选的边
这些点还不需要存入邻接表,直接把权值加进cost里面
然后把选用的边加进来,求最小生成树

具体操作:
sort之后
枚举每一条边,判断边两点的祖先是否相同(是否在同一块里面)
在就不管
不在就必须加这条边

T6 攻击路线

一句话题意:一个 n × m n\times m 的地图,每个点都有一个权值。现从左上角走到右下角,每一条路径的重要度为该路径中点的最小权值。现求最大重要度。

一眼望去DFS/BFS
但是很明显要T

然后想到最小连通图
但是题目里面的一个日隆提示(数据在int范围内)说明可能存在负边权
Dijkstra挂
然后zgs告诉我们data卡SPFA
SPFA挂

所以用什么算法呢?
联系万物皆可二分选择重要度(路径中最小的点的大小)最大的
可知用二分

二分的具体方法是:
以起点和终点的权值的最小值为下界
上界在读入时求得
二分权值
广搜权值存在的可能性

发布了26 篇原创文章 · 获赞 3 · 访问量 915

猜你喜欢

转载自blog.csdn.net/Antimonysbguy/article/details/102756840