摘要:
题目链接 F. 先把序列分割成一个个满足条件的子序列 然后二分长度,去判断子序列是否满足长度,若有一个满足,这个答案可行,判断更长的长度 debug: 存下的子序列忽略了单个元素,单个元素也是一个子序列,把每个元素单独作为一个子序列后可以ac 题解有更简单的做法,双指针,直接遍历一遍得到答案 #in 阅读全文
摘要:
题目链接 A. 一次交换,最多让两个字符归位 若三个字符都不在该在的位置上,那么无法完成 若有一个字符在该在的位置上,那么可以完成 using namespace std; void solve(){ char a,b,c;cin>>a>>b>>c; if(a=='a'||b=='b'||c=='c 阅读全文
摘要:
题目链接 F. 找了些题解,但都看的不是很懂 先去又梳理了一遍堆优化版的dij 每次用当前可到达的最小的边去进行松弛操作 标记数组,若该点已经加入确定点集,就跳过 别忘了dist[]数组初始化为无穷大,这样才会全部都被更新 #define ll long long const int inf=0x3 阅读全文
摘要:
题目链接 F. 常规的树状数组求逆序对 需要注意的是,因为是下标与值的映射,所以数值不能为负数,也不能太大 然后传参数的时候,参数是最大数值 切记切记 #include <bits/stdc++.h> using namespace std; const int N=2e5+10; template 阅读全文
摘要:
题目链接 A. 3个数,其中2个数相同,输出不相同的那个 可以用if else判断,较为麻烦 用的map,输出出现一次的 #include <bits/stdc++.h> using namespace std; const int N=1e5+10; void solve(){ map<int,i 阅读全文