合集-构造
摘要:原题链接 题解 1.任意两条边在且仅在一条链上 2.一定存在一条链使得其包含边权为0,1的边,这个时候我们要让2不在01所在的链上,即如下情况: 此时01所在链答案为2,02所在链答案为一 3.如果树退化成了链,那么不管怎么构造都一样 由此得出,找出这样 的 T 型节点,即含有三条边的节点,然后在它
阅读全文
摘要:原题链接 题解 观察数据范围,看到 便确定了 左右的算法,这样一来我可以遍历所有的区间 虽然每个 对应的答案区间都不同,但一定能遍历到,所以我可以再遍历一遍k,算出以该区间为答案区间时的 但是这样一来时间复杂度就超了,
阅读全文
摘要:原题链接 题解 只需要存在两个叶子节点之间距离等于d就好了,于是我们构造一条链,令节点一为滑动变阻器,则根据d改变与节点n的距离即可 code #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while
阅读全文
摘要:原题链接 题解 1.题目对 没有限制,也就是说,i可以大于j,可以小于j,也可以等于j 2.找普适规律。不管谁和谁成功配对,要么两个数长度相等;要么前面的数长度大于后面的数,于是前面的数分后半部分出来;要么后面的数大于前面的数,于是后面的数分前半部分出来; code #include
阅读全文
摘要:原题链接 题解 集合内元素最大不超过 ,最小不小于 如果按对角线排列,则可以得到所有偶数,把其中一颗棋子往旁边移,可以得到所有奇数 code #include<bits/stdc++.h> using namespace std; int main() { int t;
阅读全文
摘要:原题链接 题解 从小正方形到大正方形,有四个变化方向,分别是左上、右上、右下、左上。 分类讨论模拟即可 code #include<bits/stdc++.h> using namespace std; int main() { int n,x,y; cin>>n>>x>>y; puts("Yes"
阅读全文
摘要:原题链接 题解 真的bt啊 由于m没有限制所有测试用例的总和,所以m可以近似看为1e9,也就是说,除了输入以外,不能有任何对m的处理(常数乘上1e9) 考虑菊花图,任意两点之间最多只有一个陌生点,而且 所以找出那个没有出现过的中间点,作为菊花图的中心 md!!构造题!! cod
阅读全文
摘要:原题链接 题解 1.最小距离是n+m-2 2.后退多少就要前进多少,所以合法距离一定是偶数 3.猜测并验证n+m,n+m+2,n+m+4是否可行 4.如果n+m,我可以在终点设一个弯 5.如果n+m+2,我可以在起点设一个弯 6.两个弯可以组成任意偶数 code #include<bits/stdc
阅读全文
摘要:原题链接 题解 1.第 个位置上的数,对 的贡献最大不会超过 ,我们令其为 2.我们不去细想如何操作才能得到最优解,而是去想第一大的 是多少?第二大的 是多少? 3.对 降序排序得到 ,如
阅读全文
摘要:原题链接 题解 1.坐标i,j中,一定有一个值为n-1 2.所以另外一个数就是n-1在二进制表示下0的位置变成1,1的位置变成0的数 3.如何找到最大值?答:自己和自己或找出最大的 4.如何找到另外一个数?答:找出和最大值或最大的,再找出这些数中最小的 code #include<bits/stdc
阅读全文
摘要:原题链接 题解 1. 已经改变不了了,所以要让插入的 尽量少地增加 所以要降序、从左到右插入 2. 的相对顺序不变 3.此时已知两个数组的相对顺序,因此我们可以贪心地输出两个数组顶端元素中较大的那个 为什么可以这样? 我们假设输出顶端元素较小
阅读全文
摘要:原题链接 题解 1.每一个1对答案的贡献为其前面0的个数 2.不难想到二进制,即每遇到 就考虑要不要放一个1 3.但是这样长度会超标,所以我们将较大的 表示成 ,其中 ,即在 0 的个数为 \(2^{k
阅读全文
摘要:原题链接 题解 考,纯纯找规律,对于区间 ,其元素一定能全部变成 遍历所有区间优先修改覆盖之后能增加 且区间大小更小的区间 code #include<bits/stdc++.h> #define ll long long using names
阅读全文
摘要:原题链接 真恶心 code #include<bits/stdc++.h> #define ll long long using namespace std; const ll N=114514; ll a[200005],d[200005]; bool solve() { ll n; cin>>n
阅读全文
摘要:原题链接 题解 每行有 a 个,所以总共有 个 每列有 b 个,所以总共有 个 所以要满足 想象一下这个场景:每一行,每次往当前列中,最左端的一最少的列的开始连续放置1 code #include<bits/stdc++.h>
阅读全文