2025 广东工业大学ACM程序设计竞赛

news/2025/10/18 12:08:42/文章来源:https://www.cnblogs.com/yuwj/p/19149486

G

题意:

长度为 $n$ 的排列,允许交换任意的距离为 $x$ 的数字使数组升序,问,这样的 $x$ 有多少个?

思路:

观察发现,

1.相隔 $x$ 的所有数字经过任意次交换一定可以升序,可以按照对 $x$ 取模将数字分 $x$ 个块

2.想要将数组升序,每个数字肯定是从位置 $pos[i]$ 转移到 $i$,达成这个条件必须每个值都在同一个块内,也就是 $pos[i] \equiv i \mod{x}$

考虑如何将条件转化为对整个数组判断,发现最后取到的值满足 $G = gcd_{i=1}^{n}(|pos[i] - i|)$

$x$ 的取值就是 $G$ 的因子,则答案就是 $G$ 的因子个数

时间复杂度 $O(n+\sqrt{n})$

// 对于任意的 x,满足 pos[i]=i(mod x),
// 则 G = gcd(all(i)),
// 则答案的取值为 G 的因子个数
void solve(){cin >> n;vector<int> num(n+1), pos(n+1);For(i,1,n) cin >> num[i], pos[num[i]] = i;int G = 0;for(int i=1;i<=n;++i) G = gcd(G,abs(pos[i]-i));int ans = 0;for(int i=1;i<=G/i;++i){if(G%i==0){ans++;if(i*i!=G) ans++;}}if(G==0) ans = n;cout << ans << '\n';
}

I

题意:

$S$ 中匹配到所有 $T$ 的出现区间,在区间内标点表示区间染色,求所有区间染色的最少标记点数量

思路:

切到所有出现区间段,维护上一个选择的右端点,若当前左端点 $>$ 右端点,则 $ans++$,更新 $last$

H

题意:

$01$ 字符串切成两块的 $1$ 的数量减去 $0$ 的数量的乘积最大值

思路:

维护前缀和,枚举划分点,注意细节:答案可能为负数,初始化负无穷,不能选择 $n$ 位置作为划分点

void solve(){ cin >> n >> s, s = " " + s;vector<int> cnt0(n+1), cnt1(n+1);for(int i=1;i<=n;++i){cnt1[i] = cnt1[i-1], cnt0[i] = cnt0[i-1];if(s[i]=='0') cnt0[i]++;else cnt1[i]++;}ll ans = -LLONG_MAX; // 答案可能是负数,不能枚举非法点 nfor(int i=1;i<n;++i){int l = cnt1[i] - cnt0[i], r = cnt1[n] - cnt1[i] - (cnt0[n] - cnt0[i]);// cerr << l << ' ' << r << '\n';// r = max(r,0ll), l = max(l,0ll);ans = max(ans, 1ll*l*r);}cout << ans << '\n';
}

F

思路:

经典枚举分界点,处理前后缀,答案取min就好了

考虑前后缀如何维护,先找到该位置出现的第一个区间起点,然后合并区间,这里可以用set维护信息来做

考验码力的时候到了

struct Node{int l,r,cnt;bool operator<(const Node o) const{return l<o.l;}
};void Solve(){cin >> n >> k;vector<int> num(n+1);For(i,1,n) cin >> num[i];set<int> L,R;vector<int> pre(n+1),suf(n+2);{set<Node> S;for(int i=1;i<=n;++i){int L = num[i], wait = 0;auto it = S.lower_bound({L,0,0});//看左邻居是否覆盖到 t[i]if(it != S.begin()){auto last = prev(it);if(last->r > L) L = last->r;}wait += (L-num[i]);int R = L+k, ncnt = 1;		// 向右合并:把右侧与 [L,R) 交/相邻的段整体右移it = S.lower_bound({L,0,0});while(it != S.end() && it->l <= R){int d = R - it->l;R = it->r + d, ncnt += it->cnt;wait += 1ll*d*(it->cnt);it = S.erase(it);}// 与左侧相邻段合并(如果恰好相接)it = S.lower_bound({L,0,0});if(it!=S.begin()){auto last = prev(it);if(last->r==L){L = last->l, ncnt += last->cnt;S.erase(last);}}S.insert({L,R,ncnt});pre[i] = pre[i-1] + wait;}}// 后缀合并区间set<Node> S;for(int i=n;i>=1;--i){int L = num[i], wait = 0;auto it = S.lower_bound({L,0,0});//看左邻居是否覆盖到 t[i]if(it != S.begin()){auto last = prev(it);if(last->r > L) L = last->r;}wait += (L-num[i]);int R = L+k, ncnt = 1;		// 向右合并:把右侧与 [L,R) 交/相邻的段整体右移it = S.lower_bound({L,0,0});while(it != S.end() && it->l <= R){int d = R - it->l;R = it->r + d, ncnt += it->cnt;wait += 1ll*d*(it->cnt);it = S.erase(it);}// 与左侧相邻段合并(如果恰好相接)it = S.lower_bound({L,0,0});if(it!=S.begin()){auto last = prev(it);if(last->r==L){L = last->l, ncnt += last->cnt;S.erase(last);}}S.insert({L,R,ncnt});suf[i] = suf[i+1] + wait;}// For(i,1,n) cerr << pre[i] << " \n"[i==n];// For(i,1,n) cerr << suf[i] << " \n"[i==n];ll ans = LLONG_MAX;for(int i=1;i<=n;++i) ans = min(ans, pre[i] + suf[i+1]);cout << ans << '\n';
}

K

经典数数题,就是题解那个意思,推到最后公式是
$$
ans = \sum_{i=1}^{min(k,n-k+1)} \binom{n-k+1}{i} \binom{k-1}{i-1} m^i (m-1)^{k-i}
$$

void Solve(){cin >> n >> m >> k;if(m == 1){cout << binom(n-k+1,k) <<'\n';return;}ll ans = 0, pwm = m, pwm1 = qmi(m-1,k-1,Mod), invm = inv(m-1);for(int i=1;i<=min(k,n-k+1);++i){ll tmp = 1ll*binom(k-1,i-1)%Mod*binom(n-k+1,i)%Mod;ans = (ans + tmp*pwm%Mod*pwm1%Mod) % Mod;pwm = pwm*m%Mod, pwm1 = pwm1*invm%Mod;}cout << ans << '\n';
}

D

用线段树的方式做 01 背包即可

代码是抄的

#include<bits/stdc++.h>
using namespace std;
#define x first 
#define y second 
//#define int long long
#define lowbit(x) (x&(-x))
#define pii pair<int,int>
#define debug(x) {cerr << #x << " = " << x << "\n";}
const int N = 1e3 + 1,M = 1e4 + 1;
vector<int>wi(N),vi(N);
const int D = __lg(N) + 1;
int dpl[D][N][M],dpr[D][N][M];
void build(int l,int r,int dp) {if(l == r) return ;int mid = l + r >> 1;for(int i = wi[mid]; i < M; i++) {dpr[dp][mid][i] = vi[mid];}for(int i = wi[mid + 1]; i < M; i++) {dpl[dp][mid + 1][i] = vi[mid + 1];}for(int i = mid - 1; i >= l; i--) {for(int j = 0; j < M; j++) {dpr[dp][i][j] = dpr[dp][i + 1][j];if(j >= wi[i]) {dpr[dp][i][j] = max(dpr[dp][i + 1][j - wi[i]] + vi[i],dpr[dp][i][j]);}}}for(int i = mid + 2; i <= r; i++) {for(int j = 0; j < M; j++) {dpl[dp][i][j] = dpl[dp][i - 1][j];if(j >= wi[i]) {dpl[dp][i][j] = max(dpl[dp][i - 1][j - wi[i]] + vi[i],dpl[dp][i][j]);}}}build(l,mid,dp + 1);build(mid + 1,r,dp + 1);
}
int query(int l,int r,int ll,int rr,int x,int p) {int mid = l + r >> 1;int ans = 0;if(mid >= ll && mid <= rr) {for(int i = 0; i <= p; i++) {ans = max(ans,dpr[x][ll][i] + dpl[x][rr][p - i]);}return ans;}if(mid > rr) ans = query(l,mid,ll,rr,x + 1,p);else ans = query(mid + 1,r,ll,rr,x + 1,p);return ans;
} 
void miss() {int n;cin >> n;                for(int i = 1; i <= n; i++) {cin >> wi[i];}for(int i = 1; i <= n; i++) {cin >> vi[i];}build(1,n,0);int q;cin >> q;int last = 0;while(q--){int xl,xr,xw;cin >> xl >> xr >> xw;xl = (xl+last)%n + 1;xr = (xr+last)%n + 1;xw = (xw+last)%10000 + 1;if(xl > xr)swap(xl,xr);if(xl == xr && xw >= wi[xl]) last = vi[xl];else last = query(1,n,xl,xr,0,xw);cout << last << endl;}
}
signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T = 1;//cin >> T;while(T--) miss();
} 

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

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

相关文章

在AI技术唾手可得的时代,挖掘新需求成为制胜关键——某知名视觉标记系统需求探索

本文深入分析了一个广泛应用于机器人研究的视觉标记系统,详细介绍了其核心功能、应用场景和使用方法,并基于用户反馈总结了潜在的新功能需求,为项目未来发展提供了方向。内容描述核心功能定位:该系统是一个高效的视…

学习日记(一) linux系统_部署若依框架前后端分离项目

若依前后端分离项目部署 1.后端搭建 1.1准备服务器[!NOTE] 数量,操作系统,系统配置(CPU,内存,磁盘,带宽),来源(物理机,云服务器-阿里云,腾讯云,华为云)本项目需要两台服务器,直接在vm上创建两台linux系统…

2025年10月油烟机品牌全面评测推荐:兼顾性能、标准与全球供应链的选购指南

一、引言 厨房空气质量直接决定家庭呼吸健康,油烟机作为高频耐用品,其性能、噪音、清洁便利度与售后响应速度,成为装修人群、旧房改造者及精装采购经理共同关注的核心。2025年四季度,原材料价格趋稳,各品牌集中发…

2025年10月AI搜索营销推荐榜:十强服务商多维对比与中立评测

一、引言 当生成式AI成为用户获取信息的首要入口,企业能否在DeepSeek、豆包、通义千问、元宝、Kimi等主流模型的回答中被优先提及,直接决定品牌流量与转化成本。2025年10月,面向市场负责人、增长团队与采购决策者,…

2025年10月超声波清洗机厂家推荐对比:从CE认证到废水处理技术的全面剖析

一、引言 对于精密制造、电子半导体、光学镜片、航空零部件等行业的采购负责人而言,超声波清洗机既是保障产品洁净度的关键工艺装备,也是产线固定资产投资的重要一环。设备一旦选型失误,不仅直接抬高单次清洗成本,…

2025年海信洗碗机深度解析:技术突破与全球市场领导地位揭秘

本文从“核心技术优势”维度切入,为读者提供一份可验证、可对照的客观参考,帮助在选购与产业观察两个层面快速建立认知坐标。 背景与概况 海信洗碗机业务隶属海信家电集团,2024年已构建覆盖65国销售网络,全球设有七…

2025 年连接器经销商最新推荐榜,聚焦企业技术创新能力与市场口碑深度解析YAZAKI/MOLEX/AMP/KET/矢崎连接器经销商推荐

引言当前电子制造行业飞速发展,连接器作为核心连接部件,其品质、供应效率及技术水平直接关乎企业生产链顺畅与产品竞争力。然而市场上连接器企业数量繁杂,部分企业存在技术实力薄弱、产品稳定性不足、服务响应滞后等…

MQTT协议在物联网环境中的安全风险与防范指南 - 指南

MQTT协议在物联网环境中的安全风险与防范指南 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

2025年海信洗碗机权威盘点:技术突破与全球格局深度解析

引言 本文从“核心技术优势”维度切入,为读者提供一份可验证、可对照的客观参考,帮助在选购与产业观察两个层面快速建立判断坐标。 背景与概况 海信洗碗机事业部隶属海信家电集团,2020年在青岛建成两条欧洲标准全自…

超详细TCP协议讲解!!! - 实践

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

深入解析:CTFHub 信息泄露通关笔记2:PHPINFO泄露

深入解析:CTFHub 信息泄露通关笔记2:PHPINFO泄露pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

2025年10月ai搜索排名优化推荐榜:基于全平台实测数据的中立对比与选购指南

一、引言 当生成式引擎成为用户获取信息的首要入口,品牌能否在DeepSeek、豆包、通义千问、元宝、Kimi等主流AI平台的回答中被优先提及,直接决定流量成本与获客效率。对预算有限、增长目标明确的市场负责人而言,选择…

Codeforces Round 1059 (Div. 3) (A~E) 题解

Codeforces Round 1059 (Div. 3) (A~E) 题解Codeforces Round 1059 (Div. 3) (A~E) 题解 A 题意就是让你找所有 \([l, r]\) 中平均值的最大值,因为数据量较小,模拟即可。 #include <bits/stdc++.h> using name…

2025年10月ai排名优化推荐榜:十强服务商多维对比与中立选购指南

一、引言 当企业希望在DeepSeek、豆包、通义千问、元宝、Kimi等生成式引擎中获得稳定露出时,“ai排名优化”已从可选项变为刚需。市场侧,品牌部需要降低获客成本;技术侧,运维部需要减少重复人力;决策侧,管理层需…

完整教程:如何判断1117 LDO线性稳压器的好坏

完整教程:如何判断1117 LDO线性稳压器的好坏2025-10-18 11:38 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

2025年10月岩板背景墙品牌推荐排行:聚焦颜值、性能与服务的客观评析

一、引言 对于正在装修或计划升级居住空间的消费者而言,背景墙是视觉焦点,也是预算高地。岩板凭借“大尺寸、连纹、零吸水”等特性,已成为高端背景墙的主流材质。面对上百个品牌、上千种花色,用户最在意的是:花色…

2025年10月远程控制软件推荐榜:节点小宝十强对比与中立评价报告

一、引言 远程办公、异地运维、跨域协作已成为企业运营与个人工作的常态,远程控制软件因此成为创业者、IT采购者、自由职业者以及家庭用户的核心生产力工具。用户普遍面临三大痛点:连接是否足够稳定、画面是否接近本…

2025年10月geo优化公司推荐榜:十强对比评测与选购避坑指南

一、引言 生成式引擎优化(GEO)已成为企业抢占AI搜索红利的核心入口。对于市场负责人、增长负责人及采购决策者而言,如何在技术迭代迅速、服务商众多的市场中锁定既能同步覆盖多平台又能提供持续迭代的合作伙伴,直接…

第一次博客

我叫姚嘉斌,平时喜欢打打游戏乒乓球和羽毛球,当然这些技术和我的编程一样只能算是初出茅庐,所以我想通过这个平台来提升自己。我会用周末的空闲时间和周内的部分时间通过一些app里的up主教学掌握好最基础的内容,然…

Lambda架构:实时与批处理的完美融合

引言 在当今数据爆炸的时代,企业面临着前所未有的数据处理挑战——如何同时满足海量历史数据的批处理分析需求和实时数据的低延迟查询需求?2014年,Storm的作者Nathan Marz提出了一种革命性的架构模式——Lambda架构…