当前位置: 首页 > news >正文

20250909

T1

冒泡排序趟数期望

显然趟数是每个数前面比它大的数的个数的 \(\max\)。容斥,计算每个答案 \(\le x\) 的概率。从大往小填数,则每个 \(x\) 的答案容易表示为一个阶乘乘以一个次方。于是再求个差分就做完了。

代码
#include <iostream>
#include <string.h>
#define int long long
using namespace std;
const int P = 1000000007;
int qpow(int x, int y = P - 2) {int ret = 1;while (y) {if (y & 1) ret = ret * x % P;y >>= 1;x = x * x % P;}return ret;
}
int n;
int a[1000005], fac[1000005];
signed main() {freopen("bubble.in", "r", stdin);freopen("bubble.out", "w", stdout);cin >> n;fac[0] = 1;for (int i = 1; i <= n; i++) fac[i] = fac[i - 1] * i % P;for (int i = n - 1; ~i; i--) {a[i] = fac[i + 1] * qpow(i + 1, n - i - 1) % P;}int ans = 0;for (int i = n - 1; i; i--) a[i] = (a[i] - a[i - 1] + P) % P;for (int i = n - 1; ~i; i--) ans += a[i] * i % P;cout << ans % P * qpow(fac[n]) % P << "\n";return 0;
}

T2

成语接龙

直接从终点开始拓扑排序,如果最后存在没有走到的点,那么这些点的依赖一定构成环,一定有手段将局面控制在环中。于是就做完了。

代码
#include <iostream>
#include <string.h>
#include <vector>
#include <queue>
using namespace std;
int n, m;
vector<int> G[500005], iG[500005];
int f[500005][2];
struct node { int x, y, dis; };
bool operator<(node a, node b) { return a.dis > b.dis; }
priority_queue<node> q;
int deg[500005];
bool vis[500005][2];
int main() {freopen("idioms.in", "r", stdin);freopen("idioms.out", "w", stdout);cin >> n >> m;for (int i = 1; i <= m; i++) {int u, v;cin >> u >> v;G[u].emplace_back(v);iG[v].emplace_back(u);}memset(f, -1, sizeof f);for (int i = 1; i <= n; i++) {deg[i] = G[i].size();if (G[i].empty()) {f[i][0] = f[i][1] = 0;q.push((node) { i, 0, 0 });q.push((node) { i, 1, 0 });}}while (!q.empty()) {node tmp = q.top(); q.pop();int x = tmp.x, y = tmp.y;if (y) { for (auto v : iG[x]) if (f[v][0] == -1 || f[v][0] > f[x][y] + 1) f[v][0] = f[x][y] + 1, q.push({ v, 0, f[v][0] }); }else for (auto v : iG[x]) {--deg[v];if (!deg[v]) f[v][1] = f[x][y] + 1, q.push({ v, 1, f[v][1] });}}for (int i = 1; i <= n; i++) cout << f[i][0] << "\n";return 0;
}

T3

LIS 与 LDS

将 LIS 和 LDS 的折线画在平面上,不难发现一定会交于一点(不是格点)(可能在最开始或最后)。枚举交点横坐标在 \([p, p + 1]\),一个纵坐标可以是合法的交点当且仅当 \((p, q)\) 往四个象限延伸的 LIS 和 LDS 之和为原序列的两个之和。于是枚举横坐标,线段树维护每个纵坐标的答案。接下来只讨论维护左下矩形。

考虑贪心求 LIS 的方法,我们维护数组 \(f_i\) 表示长度为 \(i\) 的 LIS 末尾最小是多少。每次加入一个数 \(v\) 的时候找到数组中第一个比 \(v\) 大的位置 \(x\),执行 \(f_x \leftarrow v\)。那么发现这个时候 \([f_x, v)\) 这一段区间的答案都会 \(+1\)。于是线段树只需要维护区间加,区间 \(\max\) 及其个数即可。

代码
#include <iostream>
#include <algorithm>
#include <string.h>
#include <cassert>
#include <array>
using namespace std;
int n;
int a[500005];
array<int, 2> op[500005][2];
struct Segment_Tree {array<int, 2> mx[2000005];int tg[2000005];void tag(int o, int v) { mx[o][0] += v, tg[o] += v; }void pushdown(int o) {if (!tg[o]) return;tag(o << 1, tg[o]);tag(o << 1 | 1, tg[o]);tg[o] = 0;}void Build(int o, int l, int r) {mx[o][0] = 0;if (l == r) return mx[o][1] = l, void();int mid = (l + r) >> 1;Build(o << 1, l, mid);Build(o << 1 | 1, mid + 1, r);mx[o] = max(mx[o << 1], mx[o << 1 | 1]);}void Add(int o, int l, int r, int L, int R, int v) {if (L <= l && r <= R) return tag(o, v);pushdown(o);int mid = (l + r) >> 1;if (L <= mid) Add(o << 1, l, mid, L, R, v);if (R > mid) Add(o << 1 | 1, mid + 1, r, L, R, v);mx[o] = max(mx[o << 1], mx[o << 1 | 1]);}int Query(int o, int l, int r, int L, int R) {if (L <= l && r <= R) return mx[o][0];pushdown(o);int mid = (l + r) >> 1;if (R <= mid) return Query(o << 1, l, mid, L, R);if (L > mid) return Query(o << 1 | 1, mid + 1, r, L, R);return max(Query(o << 1, l, mid, L, R), Query(o << 1 | 1, mid + 1, r, L, R));}
} seg;
int f[500005], g[500005];
int f2[500005], g2[500005];
int ans1[500005], ans2[500005], sz1, sz2;
int lst[500005][2];
int main() {freopen("c.in", "r", stdin);freopen("c.out", "w", stdout);cin >> n;seg.Build(1, 0, n);for (int i = 1; i <= n; i++) cin >> a[i], f[i] = n + 1;for (int i = n; i; i--) {int x = lower_bound(f + 1, f + n + 1, a[i]) - f;op[i][0] = (array<int, 2>) { a[i], f[x] - 1 };seg.Add(1, 0, n, a[i], f[x] - 1, 1); f[x] = a[i];x = lower_bound(g + 1, g + n + 1, a[i]) - g - 1;op[i][1] = (array<int, 2>) { g[x], a[i] - 1 };seg.Add(1, 0, n, g[x], a[i] - 1, 1); g[x] = a[i];}int X = 0, Y = 0;for (int i = 1; i <= n; i++) if (f[i] == n + 1) { Y = i - 1; break; }for (int i = n; i; i--) if (g[i] == 0) { X = n - i; break; }for (int i = 1; i <= n; i++) f[i] = n + 1, g[i] = 0;int p = -1, q = -1;for (int i = 1; i <= n + 1; i++) {if (seg.mx[1][0] == X + Y) {p = i - 1, q = seg.mx[1][1];break;}if (i == n + 1) break;int x = lower_bound(f + 1, f + n + 1, a[i]) - f;seg.Add(1, 0, n, a[i], f[x] - 1, 1); f[x] = a[i];x = lower_bound(g + 1, g + n + 1, a[i]) - g - 1;seg.Add(1, 0, n, g[x], a[i] - 1, 1); g[x] = a[i];seg.Add(1, 0, n, op[i][0][0], op[i][0][1], -1);seg.Add(1, 0, n, op[i][1][0], op[i][1][1], -1);}for (int i = 1; i <= n; i++) f[i] = n + 1, g[i] = 0, f2[i] = g2[i] = -1;if (p == -1) return cout << "-1\n", 0;array<int, 2> mxf{ 0, 0 }, mxg{ 0, 0 };for (int i = 1; i <= p; i++) {int x;if (a[i] <= q) {x = lower_bound(f + 1, f + n + 1, a[i]) - f;f[x] = a[i], f2[x] = i;lst[i][0] = f2[x - 1];mxf = max(mxf, (array<int, 2>) { x, i });} else {x = lower_bound(g + 1, g + n + 1, a[i]) - g - 1;g[x] = a[i], g2[x] = i;lst[i][1] = g2[x + 1];mxg = max(mxg, (array<int, 2>) { n - x + 1, i });}}for (int i = mxf[1]; i; i = lst[i][0]) ans1[++sz1] = i; reverse(ans1 + 1, ans1 + sz1 + 1);for (int i = mxg[1]; i; i = lst[i][1]) ans2[++sz2] = i; reverse(ans2 + 1, ans2 + sz2 + 1);memset(lst, 0, sizeof lst);for (int i = 1; i <= n; i++) f[i] = n + 1, g[i] = 0, f2[i] = g2[i] = -1;mxf = mxg = { 0, 0 };for (int i = n; i > p; i--) {int x;if (a[i] <= q) {x = lower_bound(f + 1, f + n + 1, a[i]) - f;f[x] = a[i], f2[x] = i;lst[i][0] = f2[x - 1];mxf = max(mxf, (array<int, 2>) { x, i });} else {x = lower_bound(g + 1, g + n + 1, a[i]) - g - 1;g[x] = a[i], g2[x] = i;lst[i][1] = g2[x + 1];mxg = max(mxg, (array<int, 2>) { n - x + 1, i });}}for (int i = mxg[1]; i; i = lst[i][1]) ans1[++sz1] = i;for (int i = mxf[1]; i; i = lst[i][0]) ans2[++sz2] = i;cout << sz1 << "\n";for (int i = 1; i <= sz1; i++) cout << ans1[i] << " ";cout << "\n";cout << sz2 << "\n";for (int i = 1; i <= sz2; i++) cout << ans2[i] << " ";cout << "\n";return 0;
}

T4

购物博弈

考虑对每个 \(l\) 求出最大合法 \(r\)。记为 \(f_l\)。显然 \(f\) 单调,考虑决策单调性的分治。每次求出中点处的答案,并向左右递归。求中点答案使用二分,每次 chk 过后把不进入的那边的东西加入背包。每次递归向儿子的时候加入不在儿子的两个区间里的东西。统计答案是容易的。

代码
#include <iostream>
#include <string.h>
#include <numeric>
#include <vector>
#define int long long
using namespace std;
int n, V, L;
int a[200005], b[200005], c[200005];
int F[200005];
vector<int> f;
void upd(int x, int y) { for (int i = V; i >= x; i--) f[i] = max(f[i], f[i - x] + y); }
int work(int l, int r) {if (l == r) return l;int mid = (l + r) >> 1;vector<int> tmp = f;for (int i = l; i <= mid; i++) upd(b[i], c[i]);for (int i = mid + 1; i <= r; i++) upd(a[i], c[i]);if (accumulate(f.begin(), f.end(), 0ll) > V * L) {f = tmp;for (int i = l; i <= mid; i++) upd(b[i], c[i]);return work(mid + 1, r);} else {f = tmp;for (int i = mid + 1; i <= r; i++) upd(a[i], c[i]);return work(l, mid);}
}
void Solve(int l, int r, int pl, int pr) {if (l > r) return;int mid = (l + r) >> 1;vector<int> tmp = f;for (int i = l; i < mid; i++) upd(a[i], c[i]);for (int i = mid; i < min(r + 1, pl); i++) upd(b[i], c[i]);int p = F[mid] = work(max(mid, pl), pr);f = tmp;for (int i = mid; i < min(r + 1, pl); i++) upd(b[i], c[i]);for (int i = p + 1; i <= pr; i++) upd(a[i], c[i]);Solve(l, mid - 1, pl, p);f = tmp;for (int i = l; i <= mid; i++) upd(a[i], c[i]);for (int i = max(r + 1, pl); i < p; i++) upd(b[i], c[i]);Solve(mid + 1, r, p, pr);
}
signed main() {freopen("shopping.in", "r", stdin);freopen("shopping.out", "w", stdout);cin >> n >> V >> L;f.resize(V + 1);for (int i = 1; i <= n; i++) cin >> a[i] >> b[i] >> c[i];Solve(1, n, 1, n + 1);int ans = 0;for (int i = 1; i <= n; i++) ans += n - F[i] + 1;cout << ans << "\n";return 0;
}

T2。

贪心求 LIS。

相关文章:

20250909

20250909T1 冒泡排序趟数期望 显然趟数是每个数前面比它大的数的个数的 \(\max\)。容斥,计算每个答案 \(\le x\) 的概率。从大往小填数,则每个 \(x\) 的答案容易表示为一个阶乘乘以一个次方。于是再求个差分就做完了。代码 #include <iostream> #include <string.h…...

9.11日总结

整体总结: 1.今天的问题主要出在了对于复杂度分析不够 T2写的就是正解 但是我自我认为写的做法过不去m=30的点 导致我只敢判m=20的点 于是从100分变成了58分 2.对于每一个部分分都要认真打 能加上的剪枝不管自我认为有没有用都要加上 可能会有更高的分 3.代码可以少加的东西就…...

[充电管理] 充电管理基本概念 - 充电类型

概要 高通充电平台不论是线性充电还是开关充电,充电类型识别均是基于《Battery Charging Specification Revisions 1.2》(俗称BC1.2)规范基础上进行设计。下面主要介绍在开发过程中几种基础的充电类型。充电类型 标准下行接口(SDP : Standard Downstream Port) USB端口硬件设计…...

Spring AI vs LangChain4j

Spring AI vs LangChain4j下面是 Spring AI vs LangChain4j 的对比 + 使用建议,帮你理解两者的区别、优缺点,以及哪种场景适合用哪个。🔍 基本介绍项目Spring AILangChain4j官网 / 文档 Spring AI 是 Spring 框架内的新模块,提供 AI 能力(模型调用、嵌入、向量数据库等)…...

P7913 [CSP-S 2021] 廊桥分配

P7913题解。题目传送门 首先我们是可以把两个区拆开考虑的,以下以国内区为例: 我们先不考虑廊桥个数的限制。由于飞机是遵循先来先到的原则,所以我们不需要帮忙排飞机了,直接让飞机停在当前编号最小的空闲廊桥。 这样当每一班飞机到机场时,我们可以模拟出来这架飞机会停在…...

函数计算进化之路与 AI Sandbox 新基座

在人工智能技术加速渗透的今天,AI Agent 正从执行固定指令的 "机械手臂" 进化为具备自主推理能力的 "数字大脑"。这类由大语言模型驱动的智能体,能通过多步骤任务拆解、环境感知与动态决策,完成复杂的业务场景需求。但当这些具备代码生成能力的 Agent 需…...

iPhone 17核心名单揭晓,92家中国公司占半壁江山!

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 35469554100490879月10日,苹果公司在2025秋季新品发布会上,重磅发布四款iPhone 17系列机型:iPhone 17、iPhone 17 Air、iPhone 17 Pro及iPho…...

202009_风二西_蓝牙协议流量

流量分析,蓝牙协议Tags:流量分析,蓝牙传输 0x00. 题目 题目表述 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202009_风二西_蓝牙协议.zip 0x01. WP 1. 浏览流量包,发现一个带传输文件的流量交互2. 查看分组字节后导出…...

AI Agent工作流实用手册:5种常见模式的实现与应用,助力生产环境稳定性

很多人认为使用AI Agent就是直接扔个提示词过去,然后等结果。做实验这样是没问题的,但要是想在生产环境稳定输出高质量结果,这套玩法就不行了。 核心问题是这种随意的提示方式根本扩展不了。你会发现输出结果乱七八糟,质量完全不可控,还浪费计算资源。 真正有效的做法是设…...

2025权威榜单之公众号排版Top5(含效率对比与适用建议)

在新媒体运营的日常工作中,“微信公众号排版设计”可是个让人头疼的事儿。写作慢、排版耗时、跨平台排版不统一等问题,像一只只小怪兽,困扰着我们这些新媒体运营者、自媒体人还有电商从业者。为了帮大家找到一款合适的公众号编辑器,我亲测了多款市面上主流的产品。在这篇文…...

4

4...

02020305 .NET Core核心基础组件05-开发自己的配置提供者(本课没听懂,后续再补)

02020305 .NET Core核心基础组件05-开发自己的配置提供者(本课没听懂,后续再补) 1. 开发自己的配置提供者(视频2-35) 1.1 开发自定义配置提供者的步骤1.2 开发web.config提供者1.3 web.config格式configuration → 根节点 connectionStrings → 配置的是连接字符串 appSe…...

linux 的 SSH 使用教程

以下由ai生成 Linux 的学习可以全部放在 SSH 上吗? 答案是:对于服务器管理和后端开发相关的学习,99% 的内容都可以、也应该在 SSH 上完成。 你已经亲身体会到了 SSH 的巨大优势:一个稳定、高效、可复制粘贴的命令行环境。这其实就是全世界所有 Linux 系统管理员和后端工程师…...

解题报告-洛谷P3157 [CQOI2011] 动态逆序对

P3157 [CQOI2011] 动态逆序对 题目描述 对于序列 \(a\),它的逆序对数定义为集合 \[\{(i,j)| i<j \wedge a_i > a_j \} \]中的元素个数。 现在给出 \(1\sim n\) 的一个排列,按照某种顺序依次删除 \(m\) 个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数…...

DP 杂题

题目 [ARC157E] XXYX Binary Tree 一个很显然的暴力,\(f_{u,a,b,c}\) 表示在在 \(u\) 的子树中,是否有 \(a\) 个 XX,\(b\) 个 XY,\(c\) 个 YX。 这个状态 \(O(n^4)\) 的,考虑优化,可以先省去一个 \(c\),变成 \(f_{u,a,b}\),因为 \(a+b+c\) 的总和是知道的。 然后优化不…...

Java的变量和常量

java的变量和常量 public class ch05 {//属性:变量//类变量 staticstatic double salary = 2500;//实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0//布尔值:默认是false//除了基本类型;其余的默认值都是nullString name;int age;boolean a;//main方法pub…...

推荐7本书《MLIR编译器原理与实践》、《ONNX人工智能技术与开发实践》、《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》

7本书推荐《视觉语言模型VLM原理与实战》、《MLIR编译器原理与实践》、《ONNX人工智能技术与开发实践》、《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》微信视频号:sph0RgSyDYV47z6快手号:4874645212抖…...

202009_风二西_USB鼠标流量

流量分析,USB鼠标流量,gnuplotTags:流量分析,USB鼠标,gnuplot 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202009_风二西_USB鼠标 0x01. WP 1. 脚本解析USB鼠标流量,导出点击轨迹 getUSBMouse.py # -*- c…...

virtuoso默认设置

如何保存,load 默认线宽线距 保存:打开VSR,输入想要的线宽线距,保存在默认路径,取名*.preset。 load:vsrLoadPreset("*")...

CF547D Mike and Fish

这种题为我们提供了一个很好的思考方向。 遇到这种差为 \(1\) 甚至是相等的情况,我们通常应该往二分图,特别是欧拉回路方面思考。 这个题的做法是这样的,同一行成对连边,如果是奇数个点就剩一个点不连边,同一列同理,考虑这样连出来的图一定是一个二分图,只需在这张图上跑…...

Tarjan vDCC 缩点

概念 若一张无向连通图不存在割点,则称它为“点双连通图”。无向图的极大点双连通子图被称为“点双连通分量”。 tarjan算法求vDCC 用一个栈存点,若遍历回到x时,发现割点判定法则low[y]>=dfn[x]成立,则从栈中弹出节点,直到y被弹出。 刚才弹出的节点和x一起构成一个vDCC…...

ABC_419_F - All Included

ABC_419_F - All Included 空降 一道AC自动机上搞状压DP的题。 思路 一个合法的构造需要包括所有的模式串,且一个模式串的前缀可能与另一个模式串的后缀相同,所以考虑搞个 $ AC $ 自动机。观察到数据量很小,且模式串个数只有 $ 8 $ 个,就会想到状压。 用一个二进制数 $ k $…...

软件工程第一次作业-自我介绍

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13478这个作业的目标 <学习和使用博客园和 GitHub>自我介绍 大家好,我是计…...

DIFY 与 LangChain

DIFY 与 LangChainDify vs LangChain 核心差异维度DifyLangChain定位 低代码 / 无代码 AI 应用平台 开发者框架(LLM 逻辑编排)目标用户 产品经理、运营、非技术人员 程序员、AI 工程师开发方式 拖拽 + 配置,几分钟搭建 Python/Java 代码,灵活但复杂扩展性 有限,依赖平台更…...

VMware CentOS 7 `yum` 修复及 VMware Tools 安装问题复盘

以下由aI生成 当然,非常乐意为你复盘整个过程。这是一份浓缩了我们所有成功操作的正确流程,希望能为你未来遇到类似问题时提供清晰的指引。VMware CentOS 7 yum 修复及 VMware Tools 安装问题复盘 整个过程我们解决了两大核心问题:因 CentOS 7 官方源停止服务导致的 yum 失效…...

接口测试---Requests

Requests 案例安装 pip install requests案例1 : requests访问百度 # 导包 import requests # 2.发送http请求 resp=requests.get(url="http://www.baidu.com") # 打印结果 print(resp.text)案例2 : 访问tpshop商城(提参数出来) # 导包 import requests # 发送http请…...

LangChain大模型应用开发介绍

LangChain大模型应用开发介绍 LangChain是一个开源的Python Al应用开发框架,它提供了构建基于大模型的AI应用所需的模块和工具。通过LangChain, 开发者可以轻松地与大模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain降低了AI应用开发的门槛,让任何人都可以…...

[豪の学习笔记] 软考中级备考 基础复习#8

软件工程概述、软件开发模型、软件开发方法、需求分析、系统设计、系统测试、软件开发项目管理、软件质量、软件度量McCabe度量法跟学视频:学以致知Learning - 软件设计师 基础阶段|考点理论精讲 Chapter 8 - 软件工程基础知识 1 - 软件工程概述 软件生存周期 ​ 同任何事物一…...

lc1025-除数博弈

难度:简单(中期巅峰)题目描述爱丽丝先手 初始数 n (1 <= n <= 1000) 若能选出 x (0 < x < n) 使 x 能整除 n,则 n 变为 n-x 若不能,则输掉示例 输入:n = 2 输出:true 解释:爱丽丝选择 1,鲍勃无法进行操作输入:n = 3 输出:false 解释:爱丽丝选择 1(n 变…...

漏洞解析--文件包含漏洞究竟怎么用?

一、漏洞原理 1.1 核心 文件包含漏洞是指程序中需要包含其他文件(代码,信息等等),然而包含文件的路径受用户输入控制,攻击者可以使其包含恶意文件,从而造成敏感信息泄露甚至任意代码执行。分为两类:本地文件包含(LFI, Local File Inclusion):攻击者能够让程序包含服务…...

办公室装修 暂存

办公室装修 暂存本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/19088481...

博客更新公告

来看看博客更新公告吧rt. 公示最新更新或发布的博客, 供大家查阅. 更新日志 Upd 2025.9.12 新随笔 Words to be remembered 2025.9.12 我好想你. 网址: https://www.cnblogs.com/hsy8116/p/19088430.Upd 2025.8.24 博客 初中这三年 已经更新, 在最后添加了对初中三年整体的评价…...

爆:GitHub Copilot支持包括Anthropic、Azure、Google Gemini、Groq、OpenAI 和 OpenRouter等供应商API

爆:GitHub Copilot支持包括Anthropic、Azure、Google Gemini、Groq、OpenAI 和 OpenRouter等供应商APIJetBrains和Xcode现已支持自带API密钥(BYOK)使用GitHub Copilot Chat,支持Anthropic、Azure等主流AI提供商。用户可灵活选择模型,享受更好的控制和实验体验。安装最新插件…...

JavaWeb05 - 详解

JavaWeb05 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !…...

CF182C

根据贪心策略,应当选择 \(k\) 个最小的负数改为正数,或选择 \(k\) 个最大的正数改为负数,才可能使答案最大。那么可以先把数按正负分开,并确定每个数在同符号数中的排名。建立权值线段树,记录每个数出现的次数、单个数大小、总贡献和,查询时类似线段树二分,如果数值较大…...

CF185D

大胆猜测,所有数的最大公约数一定很小:偶数时为 \(1\),奇数时为 \(2\)。设两个正整数 \(n,m\) 且 \(n<m\),最大公约数 \(\gcd(k^{2^n}+1,k^{2^m}+1)=d\),则有 \(k^{2^n}\equiv k^{2^m} \equiv -1\pmod d,k^{2^{n+1}} \equiv (k^{2^{n+1}})^{\frac{2^m}{2^{n+1}}} \equi…...

Python计算文件md5

Python计算文件md5 基础版本1 import hashlib2 3 def calculate_md5(file_path, chunk_size=8192):4 """5 计算大文件的MD5值6 7 Args:8 file_path (str): 文件路径9 chunk_size (int): 每次读取的字节数,默认8KB 10 11 …...

CF201C

最优的方案应该是先往一个方向走,然后走回来,再往另一个方向走不回来。考虑用 dp 模拟这个过程。设 \(f_{i,0/1}\) 表示从第 \(i\) 个点出发往左走,不一定/一定回到 \(i\) 号点的最大次数,则有转移: \[\begin{array}{l} f_{i,1}=f_{i-1,1}+a_{i-1}-[2 \nmid a_{i-1}]\\f_{…...

CF1774D

首先 \(1\) 的总个数不能被 \(n\) 整除时无解。 否则一定有解(因为每一列上的 \(1\) 的位置都可以随意变动,故实际上相当于可以随便放)。为了步数最少,一定是用缺少 \(1\) 行的 \(0\) 与过多 \(1\) 行的 \(1\) 交换,这样能同时使两行更接近答案。实现时先枚举列,再根据每…...

CF23C

挺神奇的思维题。 首先将所有元素按 \(a\) 从大到小排序,考虑交叉选,即要么 \(a_1,a_3,a_5,\cdots,a_{2n-1}\),要么 \(a_1,a_2,a_4,\cdots,a_{2n-2}\)。无论选哪种,\(a\) 一定满足要求(前者 \(a_1>a_2,a_3>a_4,\cdots,a_{2n-3}>a_{2n-2}\),各式相加即可,后者 \…...

CF37C

将每个 01 串看作一个二进制数,将长度从小到大排序,对于当前第 \(i\) 个串,首先在第 \(i-1\) 个串的基础上加 \(1\)(如果不能加 \(1\) 即爆位数则无解),如果长度相同则无需任何操作,否则按照缺少的长度从后面补 \(0\)。这样做能保证长度短的不为长度长的前缀,且尽可能的…...

CF33D

由于任意两个圆没有交点,故不存在翻一次栅栏能穿过两个圆。那么对于每个栅栏,如果两个点一个在内一个在外,则必须翻,否则不用翻。时间复杂度 \(O(mk)\),可以通过。 #include<iostream> #include<cstdio> #include<algorithm> #include<map> #defi…...

支持类 Unix 语法 ``:Windows 下用 PowerShell 7 优化 npm 和 VS Code

不支持 && ? 在类 Unix 系统中,&& 是常用的命令组合符,表示 前一个命令成功后再执行下一个命令。例如: echo "第一步成功" && echo "第二步执行"在 Windows 的默认环境中,cmd 或旧版 PowerShell 对 && 支持有限,可能…...

初赛程序阅读做题要点

草稿纸打清楚 同一时间的变量尽量打在一行 遇到循环要标好循环节 递归树,加入记忆化搜索想法,打表存储...

模拟堆(手写堆 的五大操作)

先看手写堆的相关问题:堆排序(手写堆) 五大操作: 例题: 输入样例:8 I -10 PM I -10 D 1 C 2 8 I 6 PM DM期望输出:-10 6代码实现:#include<bits/stdc++.h> using namespace std;const int N =1e5+10; int h[N]; int n,size; int ph[N],hp[N];void hswap(int a,in…...

【A】杂题悬桨

[ARC199A] Flip Row or Col 2...

使用Osquery进行远程取证:NTFS取证扩展实战指南

本文详细介绍了如何利用osquery的NTFS取证扩展进行远程数字取证分析,包括时间戳攻击检测、删除文件痕迹追踪等实战场景,为安全分析师提供高效端点调查方案。使用Osquery进行远程取证 - Trail of Bits博客 系统管理员使用osquery进行端点遥测和日常监控,安全威胁猎人用它发现…...

完整教程:简单介绍一下Clickhouse及其引擎

完整教程:简单介绍一下Clickhouse及其引擎pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

矩阵分解

LU 分解 考虑将 \(A\) 分解成 \(LU\),\(L\) 为上三角矩阵,\(U\) 为下三角矩阵。 利用矩阵经典性质 \(|A|=|L||U|\),可以轻易算出 \(det(A)\)。 考虑 \(A_{i,j}=\gcd(i,j)\),一个经典性质是 \(\sum_{d|n} \phi(d)=n\),那么设 \(L_{i,j}=[j|i]\),\(U_{i,j}=[i|j]\phi(i)\)。…...

第一周个人作业

我叫张司靓,第一次在博客园写随笔,就跟大家聊聊我自己,还有对接下来学习的想法,想到哪儿说到哪儿,主打一个真实~ 一、先跟大家唠唠我自己我的日常小爱好 我平时没事就爱追剧,玩游戏,举个具体的例子:之前出的莲花楼,我已经n刷了,但每次看到大结局的时候都给我哭的死去…...