江南程序设计竞赛联盟暑期多校训练·第四场(个人补题B,D,G,H,J,K)
题目B. 亚特兰蒂斯知识点二分bfs关键由于海水高度是随时间上升呈单调性可以用二分思路在h的范围即1到1e9上二分答案对check的高度bfs即可代码#include bits/stdc.h using namespace std; #define int long long #define endl \n int t; int n, m; vectorvectorint arr; int dx[4] {1, -1, 0, 0}; int dy[4] {0, 0, 1, -1}; int check(int a1, int b1, int a2, int b2, int x) { if(xarr[a1][b1]) return 0; if (x arr[a2][b2]) return 0; vectorvectorbool vis(n 5, vectorbool(m 5, 0)); queuepairint, int q; q.push( {a1, b1}); vis[ a1][ b1] 1; while (!q.empty()) { pairint, int now q.front(); q.pop(); for (int i 1; i 4; i) { int nx now.first dx[i - 1]; int ny now.second dy[i - 1]; if (nx 1 || nx n || ny 1 || ny m) continue; if (vis[ nx][ ny]) continue; //int h now.first 1; if (x arr[nx][ny]) continue; if (nx a2 ny b2) return 1; q.push( {nx, ny}); vis[ nx][ny] 1; } } return 0; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin t; while (t--) { cin n m; arr.assign(n 5, vectorint(m 5, 0)); for (int i 1; i n; i) { for (int j 1; j m; j) { cin arr[i][j]; } } int a1, a2, b1, b2; cin a1 b1 a2 b2; int l -1, r 1e91; while (l 1 ! r) { int mid (l r) / 2; if (check(a1, b1, a2, b2, mid)) l mid; else r mid; } cout l endl; //cout r1 endl; } return 0; }题目D. 银狼逛谷子店知识点贪心二分查找lis最长上升子序列由于个人代码时间问题还用了下离散化关键由于题目要求严格单调递增那么每次回头都不需要再算上一轮的因此可以直接跑m1次lis思路lis我们需要维护一个最长上升子序列由于是上升的对于当前位置的值x二分查找到第一个大于x的值替换并打上标记对于被替换的值删除标记可能我这里代码问题标记直接用map会爆掉所以选择用离散化数组若没有大于x的值则直接插入到末尾代码#include bits/stdc.h using namespace std; #define int long long #define endl \n const int N 1e510; int arr[N]; int t; vectorint lisan; vectorbool vis(N); //获取离散化下标 int get(int x) { return lower_bound(lisan.begin(), lisan.end(), x) - lisan.begin(); } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin t; while (t--) { vectorint v; lisan.clear(); int n, m; cin n m; for (int i 0; i n; i) vis[i] 0; for (int i 1; i n; i)cin arr[i]; //离散化代码 for (int i 1; i n; i) lisan.push_back(arr[i]); sort(lisan.begin(), lisan.end()); auto it unique(lisan.begin(), lisan.end()); lisan.erase(it, lisan.end()); // m; while (m--) { for (int i 1; i n; i) { if (vis[get(arr[i])]) continue; auto it lower_bound(v.begin(), v.end(), arr[i]); //if (ti v.end()) continue; if (it ! v.end() v[it - v.begin()] arr[i]) continue; //auto it upper_bound(v.begin(), v.end(), arr[i]); if (it v.end()) { v.push_back (arr[i]); vis[get(arr[i])] 1; } else { vis[get(v[it - v.begin()])] 0; v[it - v.begin()] arr[i]; vis[get(arr[i])] 1; } } } cout v.size() endl; } return 0; }题目G. gcd与lcm知识点质因数关键题目所给式子正常思路时间复杂度太高容易想到要化简但是化简的过程并不那么容易想到这里就直接附上原题解的证明过程了思路化简为乘积后遍历一遍就可以在复杂度O(n)的情况下完成了但要记录下前缀和sum1以及前面的所有两两数乘积之和sum2对于当前值ans加上当前值乘上sum2即可再更新sum1和sum2代码#include bits/stdc.h using namespace std; #define int long long #define endl \n const int N 2e510; const int m 1e97; int arr[N]; int brr[N]; signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin n; int sum1 0; int sum2 0; int ans 0; for (int i 1; i n; i)cin arr[i]; for (int i n; i 1; i--) { ans (ans sum2 * arr[i]) % m; sum2 (sum2 sum1 * arr[i]) % m; sum1 (sum1 arr[i]) % m; // cout sum1 sum2 ans endl; } cout ans; return 0; }题目H. 银狼的多重背包知识点二进制拆分贪心关键根据题意可以先列举一些出来可以看出拆分的位置一定是二次幂才能保证cnt最大思路由于题目给了固定个数无法一次直接确定当前位置的数所以需要循环遍历每次只用当前位置向上的更高一次幂填充该位置按该贪心思路可以保证全部填满并且都是最优cnt对于总C不够时则直接加上代码#include bits/stdc.h using namespace std; #define int long long #define endl \n const int N 1e510; int t; int vis[30] {0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072}; signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin t; while (t--) { int n, C; cin n C; if (n 1) { cout C endl; continue; } vectorint ans(n 10); for (int i 0; i n 5; i) ans[i] 0; for (int i 1; i 18; i) { for (int j 1; j n; j) { if (vis[i] - ans[j] C) { C - (vis[i] - ans[j]); ans[j] vis[i]; //cout C; } else { ans[j] C; C 0; break; } } } for (int i 1; i n; i) { cout ans[i] ; } cout endl; } return 0; }题目J. 树上游戏知识点博弈递归关键对于任意一点由于博弈的存在只存在唯一输赢思路用一个win数组0和1记录输赢对于叶子节点必赢直接标为1从根节点遍历树递归时累加如果某一结点以下的win值和大于等于2说明该点也是必赢点则当前节点win值为1否则为0代码#include bits/stdc.h using namespace std; #define int long long #define endl \n const int N 2e510; vectorint v[N]; int t; int win[N]; int dfs(int x) { int sum 0; if (!v[x].size()) { win[x] 1; return 1; } for (int i 1; i v[x].size(); i) sum dfs(v[x][i - 1]); if (sum 2) { win[x] 1; return 1; } else { win[x] 0; return 0; } } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin t; while (t--) { int n; cin n; for (int i 1; i n; i) { v[i].clear(); win[i] 0; } //for(int i1;in;i) arr[i]0; for (int i 1; i n - 1; i) { int x, y; cin x y; v[x].push_back(y); } dfs(1); if (win[1]) cout mzk endl; else cout enana endl; } return 0; }题目K. 银狼的 mex 6知识点贪心二分思路该题不难看出答案是在具体一个范围的可以直接用二分但是难点在于贪心有许多注意点遍历时需要从高位往地位进行对于每个位置都有一个vis值该值代表了对于当前位置的值至少需要这么多个才能构造出满足条件的x值如果不够就先欠着等到再往下遍历时能还则还还不上再往下以此类推但是如果超出最大能欠的值则直接结束还超了则将多余的转化成0再利用注意check0和1时特判需求量很大时虽好提前退出代码#include bits/stdc.h using namespace std; #define int long long #define endl \n const int MAX 1e15; const int N 3e510; int arr[N]; int n; int sum 0; int brr[N]; int check(int x) { if (x 0 || x 1) return 1; int vis 0; for (int i 0; i x; i) brr[i] arr[i]; for (int i x; i n; i) brr[0] arr[i]; for (int i x - 1; i 0; i--) { if (vis MAX) return 0; if (brr[i] vis 1) { brr[i] - (vis 1); brr[0] brr[i]; } else { vis (vis 1 - brr[i]); if (i 0) return 0; } } return 1; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin n; for (int i 0; i n ; i) { cin arr[i]; sum arr[i] ; } int l 0, r n log2(sum) 1; while (l 1 ! r) { int mid (l r) / 2; if (check(mid)) l mid; else r mid; } cout l endl; return 0; }

相关新闻

AI代理价值观编码:用Repository Context Files实现伦理工程化

AI代理价值观编码:用Repository Context Files实现伦理工程化

1. 项目概述:当AI代理开始做决策,我们如何为它注入“价值观”?最近和几个做AI应用开发的朋友聊天,大家不约而同地提到了同一个焦虑:我们开发的AI智能体(Agent)越来越能干了,能自动写…

2026/8/19 8:50:51 阅读更多 →
python的运筹学工业场景模拟第三十四篇:读取订单需求表格,合并重复产品订单,统计各产品最低生产需求,构建生产下限约束。

python的运筹学工业场景模拟第三十四篇:读取订单需求表格,合并重复产品订单,统计各产品最低生产需求,构建生产下限约束。

订单需求合并与生产下限约束构建:用 Python 堵住排产模型的"需求黑洞""某工程机械结构件厂,每月接收销售订单200条,同一产品被不同客户、不同交期反复下单——比如轴承座这个产品,零散订单有17条,每条5…

2026/8/19 8:50:41 阅读更多 →
F12开发者工具实战:精准定位Web页面问题接口的完整指南

F12开发者工具实战:精准定位Web页面问题接口的完整指南

1. 项目概述:从“F12”到精准定位接口作为一名常年和Web应用打交道的开发者,我几乎每天都要和浏览器的开发者工具(也就是大家常说的“F12”)打交道。很多刚入行的朋友,甚至一些有经验的同事,在面对一个复杂…

2026/8/18 6:07:54 阅读更多 →

最新新闻

免费实时翻译Unity游戏文本:XUnity自动翻译器上手全攻略

免费实时翻译Unity游戏文本:XUnity自动翻译器上手全攻略

免费实时翻译Unity游戏文本:XUnity自动翻译器上手全攻略 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 如果你曾把一款心仪的Unity游戏下载到本地,却在开场三分钟就被满屏外语劝退…

2026/8/19 8:50:47 阅读更多 →
Python惰性计算教程_延迟执行优化性能

Python惰性计算教程_延迟执行优化性能

中惰性计算并非原生强制特性, 不过它能够借助生成器、以及dask等手段主动达成延迟执行, 以此来减少内存占用并且避免提前进行计算。在其中, 惰性计算也就是Lazy, 它并非是语言原生所强制具备的特性, 不过呢, 借助生成器, 还有迭代器, 以及延迟属性, 这里的延迟属性是通过加上缓…

2026/8/19 8:50:47 阅读更多 →
AI写的论文痕迹太重怎么办?5款工具帮你优化AIGC检测结果!

AI写的论文痕迹太重怎么办?5款工具帮你优化AIGC检测结果!

用DeepSeek或者ChatGPT帮忙写完论文,交稿前突然想起来:学校要查AIGC检测。赶紧找了个检测工具一测——AI率72%。怎么把论文里的AI痕迹去掉?有没有什么去AI痕迹工具能一次搞定?这篇文章帮你整理了2026年3月实测过的5款消除AI痕迹软…

2026/8/19 8:50:47 阅读更多 →
字幕编辑器从零到一实战教程:视频语音转字幕、时间轴同步与自动翻译全流程

字幕编辑器从零到一实战教程:视频语音转字幕、时间轴同步与自动翻译全流程

字幕编辑器从零到一实战教程:视频语音转字幕、时间轴同步与自动翻译全流程 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit 电影看到一半,字幕比演员的嘴慢了整整两秒&#xff…

2026/8/19 8:50:47 阅读更多 →
三步搞定Win11与Office 2024永久激活:开源KMS激活脚本KMS_VL_ALL_AIO实操指南

三步搞定Win11与Office 2024永久激活:开源KMS激活脚本KMS_VL_ALL_AIO实操指南

三步搞定Win11与Office 2024永久激活:开源KMS激活脚本KMS_VL_ALL_AIO实操指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 毕业第三年,小周从同事手里接手了一台"…

2026/8/19 8:50:47 阅读更多 →
Pomona:基于Agentic工作流的自动化代码质量改进系统

Pomona:基于Agentic工作流的自动化代码质量改进系统

1. 项目概述:当代码质量成为“日常习惯”在大型金融科技公司,比如彭博社(Bloomberg),代码库的规模动辄数百万行,由数千名工程师共同维护。一个普遍存在的挑战是:如何在不中断核心功能开发、不增…

2026/8/19 8:49:47 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →