该文被密码保护。 阅读全文
posted @ 2023-11-24 02:35 si_nian 阅读(1) 评论(0) 推荐(0) 编辑
摘要: arc165 C https://atcoder.jp/contests/arc165/tasks/arc165_c 不难发现答案只有1条边和两条边的可能性 分类讨论一下 两条边一定是一个中心点,然后连出两条边,且中心点的颜色和连出去的两个点的颜色不相同 所以我们对每个点,先跑出$mn + mn_1 阅读全文
posted @ 2023-10-18 02:36 si_nian 阅读(10) 评论(0) 推荐(0) 编辑
摘要: D 首先考虑枚举一个左端点 然后我们就会发现,对于一个位置来说,会影响它的只有前缀和后缀比它小的数 于是让每个数字不合法的都是一个区间 可以预处理$[L,i]$这个范围内有几个比它小的数,设为$x$ 然后就能知道第一个让它不合法的位置($i - L - x$)个比它小的数的位置 而让它重新合法只需要 阅读全文
posted @ 2023-08-14 20:41 si_nian 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 有点事结果鸽了两场牛客多校,杭电7懒得写题解了( 1005 不难发现无非分三种情况 一种两边都是$1$,一种两边都是$0$,一种一$1$一$0$ 于是直接贪心,把所有连续段压成一份,对于最后一种情况很好解决,只有一个方向能走,直接走就好。 对于前两种情况,显然如果先手两个1,取完还能构造一个两个1的 阅读全文
posted @ 2023-08-10 17:11 si_nian 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 1001 直接求点到线段最小距离即可 开始还以为要有啥优化,但是hdu的机子能跑1e8诶( #include <iostream> #include <cmath> #include <bits/stdc++.h> using namespace std; #define eps 1e-10 /** 阅读全文
posted @ 2023-08-01 22:36 si_nian 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1003 把所有的$a$排个序 然后根据贪心,一定是取连续的段 尺取法取所有可能的段即可( #include <bits/stdc++.h> #define pii pair<int,int> using namespace std; vector<pii> a; int mp[1000005]; 阅读全文
posted @ 2023-07-27 21:06 si_nian 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 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; 阅读全文
posted @ 2023-07-26 20:25 si_nian 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2023-07-24 23:39 si_nian 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 依旧是随便写点东西( D 根据sample input猜测从后往前贪心即可 #include <bits/stdc++.h> using namespace std; int N,M; int T; bool vis[5005]; int a[2005][2005]; int main(){ cin 阅读全文
posted @ 2023-07-23 21:27 si_nian 阅读(7) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2023-07-23 20:26 si_nian 阅读(49) 评论(0) 推荐(0) 编辑