『做题记录』[CF1630D]Flipping Range
持续水(
[CF1630D]Flipping Range
Description
看luogu或者cf
Solution
这题属于是zak课件里“找不变量(特征量)”部分的板题,但zak讲课没说该怎么找(果然是做题型选手啊),于是只能自己琢磨了(
首先不难发现,给定的
区间是很难处理的,我们不希望处理区间,于是我们就可以 异或差分 ,通过考虑连续操作两次来将距离为
需要注意的是,我们可以通过在一开始对
Code
点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define mp make_pair
#define vi vector<int>
#define eb emplace_back
#define pii pair<int, int>
#define fi first
#define se second
#define Rep(rp,a,b) for(int rp=a;rp<b;++rp)
#define rep(rp,a,b) for(int rp=a;rp<=b;++rp)
#define per(bl,a,b) for(int bl=a;bl>=b;--bl)
mt19937 rnd(114514);
#define segc int mid = L+R>>1, lc = now<<1, rc = lc|1
const int N = 1e6+5, MOD = 998244353, INF = 1e9;
template <typename T> inline void chkmin(T &x,T y) {x = y>x ? x : y;}
template <typename T> inline void chkmax(T &x,T y) {x = y>x ? y : x;}
inline int read() {
register int x = 0, f = 1;
register char ch = 0;
while(ch < 48 || ch > 57) {
ch = getchar();
if (ch == '-') f = -1;
}
while(ch >= 48 && ch <= 57) x = x*10+(ch^48), ch = getchar();
return f*x;
}
int a[N];
void solve() {
int n = read(), m = read(), gc, b;
LL ans = 0;
Rep (i, 0, n) a[i] = read(), ans += abs(a[i]);
rep (i, 1, m) b = read(), gc = (i==1)?b:__gcd(gc, b);
if (gc == 1) return (void)printf("%lld\n", ans);
LL ans1 = ans, ans2 = ans;
Rep (i, 0, gc) {
int cntn = 0, mn = INF;
rep (j, 0, (n-i-1)/gc) cntn += (a[j*gc+i] < 0), chkmin(mn, abs(a[j*gc+i]));
if (cntn&1) ans1 -= 2*mn;
else ans2 -= 2*mn;
}
printf("%lld\n", max(ans1, ans2));
}
int main() {
int T = read(); while (T --) solve();
return 0;
}
Summary
其实还有一道经典的题的这里简单提两嘴:每次可以给一个
对于找不变量的题目,一般而言 差分 和 前缀和 是很重要的技巧,其次就是 取相反数 。这些技巧结合题目性质,一般而言足够我们找到题目中的特征量或者说不变量了。
分类:
problems / 做题记录
标签:
做题记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现