bitset,动态规划
小红组比赛题目大意每组数据各选一个相加后与目标值MAXSUM相减的绝对值最小思路让所有不超过目标值的s分别与下组的每个数据相加把不超过目标值的s用bitset标记为1在遍历S中遇到可访问的就让这个可访问的s与下一组的每个数据相加直到每组数据都遍历过此时从0-MAXSUM的s有被标记过的dp取Abs中的最小值bitset函数/*dp5005dp;bitset5005 tmp;dp.set(x); // 第x位 1dp.reset(x); // 第x位 0dp.flip(x); // 第x位取反dp[x] // 获取第x位的值0或1dp.count() // 统计一共有多少个1*/#includebits/stdc.h using namespace std; #define int long long #define endl \n void solve() { int n, m; cin n m; vectorvectorintgroup(n); // 读取n组数据每组m个数字 for(int i0;in;i) { for(int j0;jm;j) { int x; cin x; group[i].push_back(x); } } int target; cin target; const int MAXSUM 5000; bitset5005 dp; dp.set(0); for(auto a:group){ bitset5005tmp; //遍历已经存在的总和s /*for(int s0;sMAXSUM;s){ //s存在 if(dp[s]){ //在s的基础上加新一组的每个值 for(auto num:a){ //在不超过目标的情况下加入新的总和 if(snumMAXSUM){ //把这个总和标记为可访问 tmp.set(snum); } } } }*/ for(int num : g) { tmp | dp num; } //在本组数据处理过后把可访问的S赋给dp, //让下一组的每组数据和可访问的s分别相加 dptmp; } int ansINT_MAX; //在所有可访问的s中取得abs中的最小值 for(int s0;sMAXSUM;s){ if(dp[s]){ ansmin(ans,abs(s-target)); } } coutansendl; } signed main() { ios::sync_with_stdio(0);cin.tie(0); solve(); return 0; }简单瞎搞题题目大意n个【l,r】中每个中取出一个数s数的平方问用多少个不同的s思路 用bitsetMAX_SUM 1 dp;下标标记s是否存在在没有取值的时候s0,dp.set(0)下标为0的位置存在之后用存在的s加上每组的【l,r】间的每个数的平方用bitsetMAX_SUM 1 tmp;存这组【l,r】内的新s,把dptmp;(动态规划)dp与s的关系下标0 1 2 3 4 5 6 7 8 ... dp 0 0 0 1 0 0 0 0 0 ...​ dp 4​ 下标0 1 2 3 4 5 6 7 8 …​ val0 0 0 0 0 0 0 1 0 …第 1 轮 i0处理 [1,2]tmp 初始全 0x1v1tmp | dp 1dp1 → 下标 011 置 1tmp{1}x2v4tmp | dp 4dp4 → 下标 044 置 1tmp{1,4}dp tmp✅当前可行平方和(\boldsymbol{{1,4}})第 2 轮 i1处理 [2,3]v4,9tmp 初始全 0x2v4dp 9旧可行 {1,4} → 145448 → {5,8}tmp {5,8}x3v9dp 9旧可行 {1,4} → 19104913 → {10,13}→ tmp{5,8,10,13}dp tmp✅当前可行平方和(\boldsymbol{{5,8,10,13}})#includebits/stdc.h using namespace std; #define int long long #define endl \n const int MAX_SUM 100 * 100 * 100; // 1000000 void solve() { int n; cin n; vectorpairint,int seg(n); for(int i0;in;i) { int l,r; cin l r; seg[i] {l,r}; } vectorbool dp(MAX_SUM 1, false); dp[0] true; for(auto p : seg) { int L p.first, R p.second; vectorbool tmp(MAX_SUM 1, false); for(int s0;sMAX_SUM;s) { if(dp[s]) { for(int x L; x R; x) { int val x * x; if(s val MAX_SUM) tmp[s val] true; } } } dp.swap(tmp); } int ans 0; for(int s0;sMAX_SUM;s) if(dp[s]) ans; cout ans endl; } signed main(){ ios::sync_with_stdio(0);cin.tie(0); solve(); return 0; } #includebits/stdc.h using namespace std; #define int long long #define endl \n const int MAX_SUM 1000000; void solve() { int n; cin n; bitsetMAX_SUM 1 dp; dp.set(0); for(int i0;in;i) { int l,r; cin l r; bitsetMAX_SUM 1 tmp; for(int xl;xr;x) { int v x*x; // | 合并进 tmp自动去重。 // 旧方案全部 v 得到的新可行集合 tmp | dp v; } dp tmp; } cout dp.count() endl; } signed main(){ ios::sync_with_stdio(0);cin.tie(0); solve(); return 0; }

相关新闻

灭蚊灯买什么牌子好用?内行人揭秘热门灭蚊灯排名前十名品牌,必看!

灭蚊灯买什么牌子好用?内行人揭秘热门灭蚊灯排名前十名品牌,必看!

​每年夏天,蚊子引发的健康问题都会登上新闻——登革热、乙脑等蚊媒传染病频发,轻则叮咬瘙痒,重则威胁生命安全。可市面上灭蚊器五花八门,不少商家打着“物理灭蚊”“全覆盖无死角”的旗号,实则是偷工减料的不专业产品…

2026/7/31 5:25:43 阅读更多 →
企业级影视合成架构优化:Nuke Survival Toolkit 290+专业插件性能突破解决方案

企业级影视合成架构优化:Nuke Survival Toolkit 290+专业插件性能突破解决方案

企业级影视合成架构优化:Nuke Survival Toolkit 290专业插件性能突破解决方案 【免费下载链接】NukeSurvivalToolkit_publicRelease public version of the nuke survival toolkit 项目地址: https://gitcode.com/gh_mirrors/nu/NukeSurvivalToolkit_publicReleas…

2026/7/31 5:25:43 阅读更多 →
AI多语言翻译工具:跨境电商说明书高效解决方案

AI多语言翻译工具:跨境电商说明书高效解决方案

1. 项目背景与核心价值做跨境电商的朋友们应该都深有体会:产品说明书的多语言翻译是个让人头疼的大问题。传统翻译方式要么成本高得吓人,要么排版全乱套,最后还得花大量时间手动调整格式。最近我在实际业务中测试了一款AI驱动的多语言翻译工具…

2026/7/31 5:25:43 阅读更多 →

最新新闻

C++异常处理进阶:从核心原理到工程实践

C++异常处理进阶:从核心原理到工程实践

1. 项目概述:为什么C异常处理是进阶路上的“分水岭”?如果你已经写过一些C代码,用过try、catch、throw这几个关键字,可能会觉得异常处理无非就是“抛出错误,捕获处理”,没什么复杂的。我刚开始也是这么想的…

2026/7/31 6:00:54 阅读更多 →
Pandas分组聚合:从groupby到agg的完整指南与实战技巧

Pandas分组聚合:从groupby到agg的完整指南与实战技巧

1. 从“看总数”到“看分组”:为什么我们需要分组聚合做数据分析,尤其是用Python的Pandas库,你肯定遇到过这样的场景:老板给你一张全国各门店的销售明细表,让你“看看情况”。如果你只是简单地算个总销售额、平均客单价…

2026/7/31 6:00:54 阅读更多 →
C++异常处理全解析:从throw/catch到RAII与标准库实战

C++异常处理全解析:从throw/catch到RAII与标准库实战

1. 项目概述:为什么C异常处理如此重要? 在C的世界里摸爬滚打十几年,我见过太多因为资源泄露、状态混乱而崩溃的程序。很多新手,甚至一些有经验的开发者,在面对错误时,第一反应往往是返回一个错误码&#xf…

2026/7/31 6:00:54 阅读更多 →
C++入门实战:从环境搭建到核心语法与STL应用全解析

C++入门实战:从环境搭建到核心语法与STL应用全解析

1. 项目概述:为什么C依然是硬核开发的基石?最近在社区里看到不少关于“C已死”的讨论,但转头一看,无论是游戏引擎、高频交易系统、数据库内核,还是嵌入式设备驱动,C的身影依然无处不在。作为一个从大学就开…

2026/7/31 6:00:54 阅读更多 →
PyTorch与TorchVision离线安装全攻略:解决网络限制下的环境部署难题

PyTorch与TorchVision离线安装全攻略:解决网络限制下的环境部署难题

1. 项目概述:为什么我们需要PyTorch和TorchVision的本地安装?如果你正在学习深度学习,或者你的项目正从TensorFlow转向PyTorch,那么“PyTorch”和“TorchVision”这两个名字对你来说一定不陌生。PyTorch以其动态计算图和直观的编程…

2026/7/31 6:00:54 阅读更多 →
在安卓手机Termux中构建完整Linux环境:原理、配置与实战指南

在安卓手机Termux中构建完整Linux环境:原理、配置与实战指南

1. 项目概述:在移动端构建完整的Linux环境如果你是一名开发者、运维工程师,或者只是一个对技术充满好奇的极客,有没有想过把一台完整的Linux服务器“揣”在口袋里?我说的不是远程连接云服务器,而是真正在你安卓手机内部…

2026/7/31 5:59:54 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻