摘要: #include<bits/stdc++.h> #define debug1(a) cout<<#a<<'='<< a << endl; #define debug2(a,b) cout<<#a<<" = "<<a<<" "<<#b<<" = "<<b<<endl; #define debug3(a 阅读全文
posted @ 2023-04-06 15:35 俄罗斯刺沙蓬 阅读(16) 评论(0) 推荐(0) 编辑
摘要: https://atcoder.jp/contests/arc116/tasks/arc116_d #include<bits/stdc++.h> #define debug1(a) cout<<#a<<'='<< a << endl; #define debug2(a,b) cout<<#a<<" 阅读全文
posted @ 2023-04-06 15:35 俄罗斯刺沙蓬 阅读(11) 评论(0) 推荐(0) 编辑
摘要: https://codeforces.com/contest/1766/problem/D 题意找到连续的最长gcd(a+k,b+k) == 1(a < b,k = {0,1,2,...}) 思路: gcd(a+k,b+k) == gcd(a+k,b - a) a - b = 1时特判 可以推出gc 阅读全文
posted @ 2023-04-06 15:34 俄罗斯刺沙蓬 阅读(30) 评论(0) 推荐(0) 编辑
摘要: https://codeforces.com/contest/1762/problem/D 给一个长度为n的permutation,每次一个询问,得到结果为gcd(i,j),请在2*n次之内找到那个是0(或者哪两个之中之一是0) 思路 三个指针i,j,k(i<j<k) 令x=gcd(a[i],a[j 阅读全文
posted @ 2023-04-06 15:34 俄罗斯刺沙蓬 阅读(11) 评论(0) 推荐(0) 编辑
摘要: https://codeforces.com/problemset/problem/1765/D 观察找规律 最大的和二分最小的,然后交替相邻,看是否合法 找到最长的合法段 答案就是总长度减去合法段加上原先的长度 #include<bits/stdc++.h> #define debug1(a) c 阅读全文
posted @ 2023-04-06 15:34 俄罗斯刺沙蓬 阅读(64) 评论(0) 推荐(0) 编辑
摘要: https://atcoder.jp/contests/arc132/tasks/arc132_c 很难想到的动态规划,优化空间的思路非常巧妙 用相对位置来转移 f[i][j]表示i之前,放置数字的压缩情况为j,的所有方案数 ** f[i+1][(j | (1 << k)) >> 1] += f[i 阅读全文
posted @ 2023-04-06 15:33 俄罗斯刺沙蓬 阅读(28) 评论(0) 推荐(1) 编辑
摘要: https://atcoder.jp/contests/abc259/tasks/abc259_f 树形dp(最简单的那种类型,但是题目的方法还是很巧妙的) 易知:负权边可以忽略 思路 定义 定义f[i][0]表示以i为根的子树尽量用到d[i]-1条边的最大可能(留一条边给父节点联通用) f[i][ 阅读全文
posted @ 2023-04-06 15:32 俄罗斯刺沙蓬 阅读(14) 评论(0) 推荐(0) 编辑
摘要: https://atcoder.jp/contests/arc120/tasks/arc120_c 势能就是i + a[i],很有用的结论 对于能完成交换,从A变成B,势能数组一定相同 找出最小交换次数,贪心的方案是:最近的先交换 找到最近的在可以用数组数组和set实现 具体细节见代码 #inclu 阅读全文
posted @ 2023-04-06 15:31 俄罗斯刺沙蓬 阅读(18) 评论(0) 推荐(0) 编辑
返回顶端