
dfs
ACkingdom
这个人很懒,什么都没有留下
展开
-
Codeforces Round #665 (Div. 2) D. Maximum Distributed Tree(dfs)
题目链接 思路: dfs讨论m和n−1之间的大小关系,再计算每条边的贡献次数排序。 代码: #include<bits/stdc++.h> #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N=2e5+7; const int M=2e4+5; const double eps=1e-8; const int mod=998244353; const in原创 2020-08-23 00:39:58 · 191 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) D. Unmerge(dp,01背包)
题目链接 思路: 将每个数和他之后的比他小的数都分为一组,对分好的组进行01背包,看能否将组的总和变为n。 代码: #include<bits/stdc++.h> using namespace std; #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N=1e5+7; const double eps=1e-8; const int mod=1e9+7原创 2020-07-22 22:29:46 · 139 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) D. a-Good String(dfs,二分)
题目链接 思路: dfs+二分遍历整个字符串,然后每次都跑整个区间来判断需要改变的字母的多少,取最小值。 代码: #include<bits/stdc++.h> using namespace std; #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N=2e5+7; const double eps=1e-8; const int mod=1e9+7;原创 2020-07-19 23:05:38 · 162 阅读 · 0 评论 -
Codeforces #642 D. Constructing the Array(dfs,二分)
题目链接 题意: 给你一个全为零的数组,执行n次操作,第i次操作为:选取一个最大的全为零的子区间(相同长度时取左),将该区间的中间位置的数字变为i,问n次操作后的数组会变成什么样子。 思路: 取中间值然后每次缩小一半,很明显有二分的性质,所以我们用dfs来二分搜索该数组,搜索时用pair记录子区间长度和中间值,然后将按照搜索的子区间的长度排序,排序后的第i个就是第i次操作的位置,然后将位置不变填入i,然后输出。 代码: #include<bits/stdc++.h> using namespac原创 2020-05-15 20:46:44 · 177 阅读 · 0 评论