两杯 下肚,我还是那么菜
T1 中位数
智障菜题
略
T2 调制饮料
简单模拟
智障菜题
还是提一句:写函数简化代码
略
T3 排序
一句话题意:一个序列,只能调整第一个数的位置,问最少调几次
想明白了就很简单——最后一个逆序对的位置就是要移动的次数
因为要保证所有数顺序,必须把所有逆序对调正
而要调对所有逆序对,就一定会调最后一个
又由于第一个数可以放在任何位置
因此在调的时候就保证不产生新的逆序对
调到最后一个逆序对的时候就调好了
然而测试点1有坑
那是一个纯升序的数列,如果在循环里面输出答案,什么都出不来
因此令一个(全局变量)antimony=i
最后输出antimony
T4 周长与面积
细胞的升级版
传送门咕了
DFS求连通块菜题就把我搞死了
zgs的代码T了
周长就是#号围成区域的周长,实际上就是‘#’周围‘.’的数量
T5 联络员
一句话题意:一个图,一些点,有必须边和可以不选的边,每个边都有权值,求使每个点连通的最小权值
做的时候写了一个又臭又长的代码
但是思想是搞对了的
kruscal- 并查集思想求最小生成树
先处理必须选的边
这些点还不需要存入邻接表,直接把权值加进cost里面
然后把选用的边加进来,求最小生成树
具体操作:
sort之后
枚举每一条边,判断边两点的祖先是否相同(是否在同一块里面)
在就不管
不在就必须加这条边
T6 攻击路线
一句话题意:一个 的地图,每个点都有一个权值。现从左上角走到右下角,每一条路径的重要度为该路径中点的最小权值。现求最大重要度。
一眼望去DFS/BFS
但是很明显要T
然后想到最小连通图
但是题目里面的一个日隆提示(数据在int范围内)说明可能存在负边权
Dijkstra挂
然后zgs告诉我们data卡SPFA
SPFA挂
所以用什么算法呢?
联系万物皆可二分选择重要度(路径中最小的点的大小)最大的
可知用二分
二分的具体方法是:
以起点和终点的权值的最小值为下界
上界在读入时求得
二分权值
广搜权值存在的可能性