Skibidus and Fanum Tax (easy version)

📅 2026/7/22 9:08:26
Skibidus and Fanum Tax (easy version)
Skibidus and Fanum Tax (easy version)CodeForces - 2065C1 题目源地址没写出来我刚开始想了一下用什么方法最后还是觉得是模拟题我是直接两两进行维护的没有考虑到全局还是贪心错了我后面还想是不是方法错了我想会不会是dfs,但是数据又太大了肯定超时而且对于我来说这道题的dfs我不是很会写我还觉得dp也有可能其实就是当前的数是否要进行操作而且他还能进行全局的维护这个我也觉得不太好写开一维dp很难判断,写不出来题目核心贪心因为是要非递减序列从左到右遍历进行维护这个简单版本是m 1 m1m1的也就是每个都可以变成x − a [ i ] x-a[i]x−a[i],左边一定要给右边留好左边要尽可能的小如果序列只有一个数就不需要维护了有多个就要开始维护了第一个选最小的就行接下来每个数也是从a [ i ] a[i]a[i]和x − a [ i ] x-a[i]x−a[i]中选但还是要满足a [ i ] a [ i − 1 ] a[i]a[i-1]a[i]a[i−1]这个条件那就把可能存v e c t o r vectorvector里面如果是空的那么就都不满足条件输出no,有的话就选最小的那个然后更新#includebits/stdc.h#defineintlonglongusingnamespacestd;inta[200005];intb[200005];signedmain(){intt;cint;while(t--){intn,m;cinnm;for(inti1;in;i){cina[i];}for(intj1;jm;j){cinb[j];}intxb[1];intf0;if(n1){coutYESendl;continue;}else{intqianmin(a[1],x-a[1]);for(inti2;in;i){vectorintv;if(a[i]qian)v.push_back(a[i]);if(x-a[i]qian)v.push_back(x-a[i]);if(v.empty()){f1;break;}intminnv[0];for(intj0;jv.size();j){if(v[j]minn){minnv[j];}}qianminn;}}if(f1){coutNOendl;}else{coutYESendl;}}return0;}