该文被密码保护。 阅读全文
摘要:
arc165 C https://atcoder.jp/contests/arc165/tasks/arc165_c 不难发现答案只有1条边和两条边的可能性 分类讨论一下 两条边一定是一个中心点,然后连出两条边,且中心点的颜色和连出去的两个点的颜色不相同 所以我们对每个点,先跑出$mn + mn_1 阅读全文
摘要:
D 首先考虑枚举一个左端点 然后我们就会发现,对于一个位置来说,会影响它的只有前缀和后缀比它小的数 于是让每个数字不合法的都是一个区间 可以预处理$[L,i]$这个范围内有几个比它小的数,设为$x$ 然后就能知道第一个让它不合法的位置($i - L - x$)个比它小的数的位置 而让它重新合法只需要 阅读全文
摘要:
有点事结果鸽了两场牛客多校,杭电7懒得写题解了( 1005 不难发现无非分三种情况 一种两边都是$1$,一种两边都是$0$,一种一$1$一$0$ 于是直接贪心,把所有连续段压成一份,对于最后一种情况很好解决,只有一个方向能走,直接走就好。 对于前两种情况,显然如果先手两个1,取完还能构造一个两个1的 阅读全文
摘要:
1001 直接求点到线段最小距离即可 开始还以为要有啥优化,但是hdu的机子能跑1e8诶( #include <iostream> #include <cmath> #include <bits/stdc++.h> using namespace std; #define eps 1e-10 /** 阅读全文
摘要:
1003 把所有的$a$排个序 然后根据贪心,一定是取连续的段 尺取法取所有可能的段即可( #include <bits/stdc++.h> #define pii pair<int,int> using namespace std; vector<pii> a; int mp[1000005]; 阅读全文
摘要:
1005 直接dp即可 #include <bits/stdc++.h> using namespace std; int dp[5005][5005]; int N; int a[5005]; const int MOD = 1e9+7; int main(){ int T; cin >> T; 阅读全文
摘要:
A 签到,注意$0$的特判 #include <bits/stdc++.h> using namespace std; long long x,y; int main(){ string s1,s2; cin >> s1; cin >> s2; int Len1 = s1.length(); int 阅读全文