10.16 CSP-S 模拟赛总结

news/2025/10/17 12:19:23/文章来源:https://www.cnblogs.com/Tomori0505/p/19147509

T1

我很神秘。数据水理论复杂度 \(O(nk^2)\) 暴力过了。

实际上只要想到对 \(k\) 取模就会做了。因为满足要求的情况即为存在一段 \([l,r]\) 的子区间和对 \(k\) 取模为 \(0\),那么等价于两次前缀和对 \(k\) 取模模数相同。

T2

注意到值域为 \(2 \times 10^6\),考虑直接枚举 \(g\)。那么我们需要的就是 \(g\) 或者 \(g\) 的正整数倍被区间包含的次数,即我们只需要记右端点出现位置次数的前缀和,考虑 \(g,k\) 的关系即可。

  • \(g > k\)

    枚举正整数倍 \(\mu g\),统计 \([\mu g, \mu g + k]\) 的次数和。

  • \(g \leq k\)

    对于 \(b_i < g\) 一定是不满足的,所以只需要看在值域上的后缀和即可。

如果满足次数和 \(cnt \geq n - f\),说明可以满足删除 \(f - \omega (\omega \geq 0)\) 个之后用剩下公约数为 \(g\) 的补齐。

T3

加强数据之后暴力还是能过(

很显然直接暴力是 \(O(nmq)\) 的。可能可以猜到拆成横纵处理或许最后是 \(O((n + m)q)\),惊鸿一瞥发现是可以通过的复杂度。

子矩阵交换之后本质上内部的相对位置是不改变的,且题目保证交换的两个矩阵不相交。只有外面一圈的信息会改变。考虑用链表维护子矩阵周围一圈的点的右、下指针。

具体的,找到 \((x_1,y_1), (x_2, y_2)\) 在链表的具体位置。\((x_1,y_1)\) 在向右跳的同时交换下指针,向下跳的时候交换右指针。\((x_2,y_2)\) 向下跳的时候交换右指针,在向右跳的同时交换下指针。

:::info[Code]

#include <bits/stdc++.h>
#define int long long
#define ID(i, j) ((i) * (m + 1) + (j))
using namespace std;
const int MaxN = 1e3 + 10;
int n, m, q;
string v[MaxN][MaxN];
struct LIST {int right, down;string value;
} L[MaxN * MaxN];signed main() {// freopen("file.in", "r", stdin);// freopen("file.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n >> m >> q;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> v[i][j];L[ID(i, j)].value = v[i][j];}}for (int i = 0; i <= n; i++) {for (int j = 0; j <= m; j++) {L[ID(i, j)].right = ID(i, j + 1);L[ID(i, j)].down = ID(i + 1, j);}}for (int _ = 1; _ <= q; _++) {int a, b, c, d, h, w;cin >> a >> b >> c >> d >> h >> w;int ptr1 = 0, ptr2 = 0;for (int i = 1; i < a; i++) ptr1 = L[ptr1].down;for (int i = 1; i < b; i++) ptr1 = L[ptr1].right;for (int i = 1; i < c; i++) ptr2 = L[ptr2].down;for (int i = 1; i < d; i++) ptr2 = L[ptr2].right;int x = ptr1, y = ptr2;for (int i = 1; i <= w; i++) {x = L[x].right, y = L[y].right;swap(L[x].down, L[y].down);}for (int i = 1; i <= h; i++) {x = L[x].down, y = L[y].down;swap(L[x].right, L[y].right);}x = ptr1, y = ptr2;for (int i = 1; i <= h; i++) {x = L[x].down, y = L[y].down;swap(L[x].right, L[y].right);}for (int i = 1; i <= w; i++) {x = L[x].right, y = L[y].right;swap(L[x].down, L[y].down);}}int x = 0;for (int i = 1; i <= n; i++) {x = L[x].down;int y = x;for (int j = 1; j <= m; j++) {y = L[y].right;cout << L[y].value << " \n"[j == m];}}return 0;
}

T4

读完题就觉得相当的随机化啊。

\(25\%\) 可以简单随机化做。

考虑使用模拟退火,你发现它 TLE 了,而且是小数据 TLE 了。转用爬山,因为是求一个直线以上的答案且只要满足答案在直线以上即可。所以局部最优解并非不对。同时在计算满足的三元组个数时考虑使用桶来记每个元素的对应三元组编号,这样复杂度就是平均下来的 \(O(\frac{n}{m})\) 可视作常数。

:::info[Code]

#include <bits/stdc++.h>
#define int long long
using namespace std;namespace FASTIO {static short ostk[33];char buf[1 << 23], *p1, *p2;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 23, stdin), p1 == p2) ? EOF : *p1++)inline int read() {int res = 0, f = 1;char ch = getchar();while (!isdigit(ch)) f = ch == '-' ? -1 : 1, ch = getchar();while (isdigit(ch)) res = res * 10 + (ch ^ 48), ch = getchar();return res * f;}inline void write(int x) {int top = 0;if (x < 0) x = -x, putchar('-');do { ostk[top++] = x % 10, x /= 10; } while(x);while(top) putchar(ostk[--top] | 48);}
} using namespace FASTIO;random_device seed;
mt19937 rng(seed());
const int MaxN = 1e5 + 10;
const double omega = 0.998244353, eps = 1e-10;
int n, m, a[MaxN], pos[MaxN], ans;
vector<int> rec[MaxN];
bitset<MaxN> used;
struct NODE {int a, b, c;
} p[MaxN];inline int rd(int l, int r) {return 1LL * (rng() % (r - l + 1)) + l;
}bool check(int x) {int a = pos[p[x].a],b = pos[p[x].b],c = pos[p[x].c];return (a < b && b < c) || (c < b && b < a);
}int counter(int x, int y) {int ret = 0;used.reset();for (int v : rec[x]) {if (!used[v]) {ret += check(v);used[v] = 1;}}for (int v : rec[y]) {if (!used[v]) {ret += check(v);used[v] = 1;}}return ret;
}int getall() {int ret = 0;for (int i = 1; i <= m; i++)ret += check(i);return ret;
}void hike() {int ret = ans;double T = 1e3;while (T >= eps) {if (ret >= (m + 1) / 2) break;int x = rd(1, n),y = rd(1, n),fir = 0, sec = 0;fir = counter(x, y);swap(pos[x], pos[y]);sec = counter(x, y);swap(a[x], a[y]);int delta = fir - sec;if (delta < 0)ret += (-delta);else {swap(a[x], a[y]);swap(pos[x], pos[y]);}T *= omega;}ans = max(ans, ret);
}signed main() {n = read();m = read();for (int i = 1; i <= m; i++) {p[i].a = read();p[i].b = read();p[i].c = read();rec[p[i].a].push_back(i);rec[p[i].b].push_back(i);rec[p[i].c].push_back(i);}for (int i = 1; i <= n; i++) a[i] = pos[i] = i;ans = getall();while (clock() * 1.0 / CLOCKS_PER_SEC < 0.8) {if (ans >= (m + 1) / 2) break;hike();}if (ans >= (m + 1) / 2) {for (int i = 1; i <= n; i++)a[pos[i]] = i;for (int i = 1; i <= n; i++)write(a[i]), putchar(' ');}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/938814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程无钥匙进入(PKE)技术:便利与安全的完美融合

PKE 远程无钥匙进入 在智能汽车时代,远程无钥匙进入(Passive Keyless Entry,简称PKE)已成为提升用户体验的核心技术。它允许车主无需手动操作钥匙,只需携带智能钥匙靠近车辆,即可自动解锁车门或启动引擎。根据20…

灵动岛iPhone状态栏获得高度不对 iOS iPhone14pro iPhone14pro max状态栏获得高度不对

之前的获得状态栏高度代码是(CGFloat)statusRectHeight { if (@available(iOS 13.0, *)) { _statusRectHeight = [UIApplication sharedApplication].windows.firstObject.windowScene.statusBarManager.statusBarFram…

string略解

string 字符串类型,下标从0开始。 函数用法 定义 #include <iostream> #include <string>string s;初始化 string s="Hello,World!";sting a="Hello,"; string b="World!"…

《程序员修炼之道》 阅读笔记二

核心概念解读 “软件的熵”也被称为“破窗效应”。一个软件项目,如果出现了第一个糟糕的设计、第一个临时的脏代码、第一个没有修复的bug,而没有人去处理,它就会迅速腐烂。这就像一栋建筑有一扇破窗不被修理,很快就…

是时候告别向日葵、Todesk、TeamViewer了,快速搭建自托管服务器RustDesk

是时候告别向日葵、Todesk、TeamViewer了,快速搭建自托管服务器RustDesk最早我一直在用向日葵,但后来被限速,体验越来越差。远程操作,没必要花钱,于是开始找免费的替代方案。 后来试了ToDesk,刚开始感觉还行,但…

史馆

发言人 内容至“某些人”的一封信 https://www.luogu.com.cn/article/qdk2rgrt行啊,我没开完隐,你谴责我注册时间早,你来看看我注册之后都在干什么你拒绝是你的事,学校怎样做是学校的事,如果你来问我文化课我会拒…

firecrawl 私有部署(test)

firecrawl 私有部署(test) github: https://github.com/firecrawl/firecrawl 文档: https://docs.firecrawl.dev/introduction安装:git clone https://github.com/firecrawl/firecrawl.gitcd firecrawldocker co…

$\text{Catalan}$ 数 卡特兰数

定义公式 \(1\):\(C_n=\begin{pmatrix}2n\\n\end{pmatrix}-\begin{pmatrix}2n\\n-1\end{pmatrix}\)公式 \(2\):\(C_n=\sum_{a+b=n-1}C_aC_b\)公式 \(3\):\(C_n=\frac{4n-2}{n+1}C_{n-1},C_0=1\)其中公式 \(3\) 表明…

大模型 | VLM 初识及在自动驾驶场景中的应用

在了解 VLM 之前,先复习下 LLM。 一、LLM(Large Language Model) 大语言模型(LLM,Large Language Model)名字虽然带有语言二字,但其实并不局限于语言类场景。LLM 更多是一种统计建模的通用技术,它们主要通过自回…

CF1977 Codeforces Round 948 (Div. 2) 游记(VP)

仅做出两题,结果凭借手速拿到表现分 $1740$。省流 仅做出两题,结果凭借手速拿到表现分 \(1740\)。10.17 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 早上花了很多时间试图把 \(stars569\) 搞的数据库装好,…

别被波形“骗” 了!差分探头与无源探头测量不一致的 5 大关键因素

在电子测量领域,精确地获取电路中电信号的波形对于分析电路的工作状态、验证设计思路以及排查故障至关重要。示波器是波形测量中最常用的仪器,通常会搭配不同类型的探头使用。其中,差分探头和无源探头是比较常见的两…

2025 年展览会服务商最新推荐榜权威发布:22 年经验甄选十强品牌,助力企业参展高效决策

当前会展行业已迈入 “全链路价值创造” 新阶段,企业参展需求从单一搭建升级为 “策划 - 执行 - 转化” 全流程服务,但市场服务商资质参差不齐:传统机构多困于 “设计 + 施工” 模式,新兴品牌虽具创新力却缺乏辨识…

OpenHarmony SELinux全面技术指南:从原理到实践的系统安全防护(全网最全) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年信息流代运营服务商权威推荐榜单:专业投放策略与效果优化服务口碑之选

2025年信息流代运营服务商权威推荐榜单:专业投放策略与效果优化服务口碑之选在数字营销快速演进的今天,信息流广告已成为企业获取目标用户的重要渠道。随着各大媒体平台算法不断升级,用户行为日趋复杂,信息流投放的…

2025 年焊把线厂家最新推荐榜:国标欧标铜芯软焊把线优质企业排行,优质品牌助力选购欧标/铜芯/软/耐高温焊把线厂家推荐

在工业制造、建筑施工等核心领域,焊把线作为焊接作业的关键连接载体,其质量直接决定作业安全、焊接精度与生产效率。当前市场上,焊把线品牌数量激增,但产品质量差距悬殊,部分产品存在导电效率低、耐候性差、易老化…

【Prompt学习技能树地图】单一思维链优化-自我一致性提示工程原理、实践与代码实现 - 教程

【Prompt学习技能树地图】单一思维链优化-自我一致性提示工程原理、实践与代码实现 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

基于MATLAB的倒立摆控制实现方案

基于MATLAB的倒立摆控制实现方案,包含PID控制与神经网络(DQN)控制的双重实现一、系统建模与基础参数 %% 倒立摆动力学参数 m = 0.1; % 摆杆质量 (kg) M = 1.0; % 小车质量 (kg) l = 0.5; % 摆杆长度 (m) g…

2025 年展会服务商最新推荐排行榜:聚焦一站式服务与高效执行能力的优质企业榜单瓷砖/暖通/照明/门窗/玻璃/厨卫/卫浴/灯饰展会厂家推荐

在全球化商务交流不断深化的当下,展会已成为建材、石材、瓷砖、暖通等建筑装饰领域企业展示品牌、拓展市场、达成合作的核心平台。然而,当前展会服务市场中,部分服务商存在经验匮乏、资源薄弱、服务模式滞后等问题,…

数据迁移mysql--sr

mysql-docker安装docker run -itd \-p 3306:3306 \-v /home/mysql/conf:/etc/mysql/conf.d \-v /home/mysql/data:/var/lib/mysql \-v /home/mysql/log:/var/log/mysql \-e MYSQL_ROOT_PASSWORD=root \-e TZ=Asia/Shan…

iOS 26 App 开发阶段性能优化全流程,从监控到调优的多工具协作实践

本文聚焦iOS 26 App 开发阶段性能优化,构建从监控、剖析到调优的完整闭环。通过 Instruments、KeyMob(克魔)、iMazing、Energy Diagnostics 等多工具协作, 实现 CPU/GPU/内存/能耗多维监控与优化,让开发阶段提前完…