第一周 题目练习4(二分+滑动窗口)洛谷 P1824 P1577 P1843 P1638
1824进击的奶牛整型数据二分[P1824 USACO05FEB] 进击的奶牛 Aggressive Cows G - 洛谷解题过程二分距离判断函数check(x)间距至少 x 时最多能放下多少头牛。排序坐标二分区间l1r最大坐标check(mid)满足能放下≥m 头牛说明距离 mid 可行尝试更大值ansmid,lmid1不满足则缩小距离rmid-1。适用场景求最小值的最大可能值代码实现//5303 #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; ll n,m; vectorlla; bool check(ll x) { ll cnt1; ll heada[0]; for(ll i1;in;i) { if(a[i]-headx) { cnt; heada[i]; } } return cntm; } int main() { IOS cinnm; for(ll i0;in;i) { ll A; cinA; a.push_back(A); } sort(a.begin(),a.end()); ll l1,r0x3f3f3f3f; ll ans0; while(lr) { ll mid(lr)/2; if(check(mid)) { ansmax(mid,ans); lmid1; } else { rmid-1; } } coutansendl; // coutfixedsetprecision(x) ; return 0; }P1577切绳子浮点型数据二分P1577 切绳子 - 洛谷解题过程二分单段绳子长度check(x)统计能切出多少段长度≥x 的绳子。二分循环固定迭代 100 次替代整数边界判断保证精度满足段数≥k记录答案并向右二分找更长长度ansmid,lmid不满足则向左缩小长度rmid最后向下取整保留两位小数输出。适用场景答案为小数、对精度有要求的二分问题。代码实现//1577 #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; ll n,k; vectordoublea; bool check(double x) { ll cnt0; for(ll i0;in;i) { cnt(ll)(a[i]/x); } return cntk; } int main() { IOS cinnk; double r0; for(ll i0;in;i) { double A; cinA; a.push_back(A); rmax(r,A); } // sort(a.begin(),a.end()); double l0; double ans0; for(ll i1;i100;i) { double mid(lr)/2; if(check(mid)) { ansmid; lmid; } else { rmid; } } ansfloor(ans*100)/100; coutfixedsetprecision(2)ansendl ; return 0; }整型二分 vs 浮点二分一、循环终止条件核心差异1. 整型二分整数区间离散区间边界是整数可以用l r循环靠mid±1收缩边界最终精准锁定整数答案。ll l1, r1e9; while(l r) { ll mid (l r) / 2; if(check(mid)) { ansmid; lmid1; // 可行往右找更大 } else rmid-1; // 不可行往左缩小 }原理整数点是有限离散值每次直接排除mid不会死循环。2. 浮点二分实数区间连续实数有无穷多个不能用lr无法精准等于边界标准写法固定循环 100 次100 次二分后精度远超题目要求的 1e-6/1e-2。double l0, rmax_len; for(int i1;i100;i) { double mid (l r) / 2; if(check(mid)) { ansmid; lmid; // 可行右边界移到mid } else rmid; // 不可行左边界移到mid } }原理实数区间不能mid±1只能不断缩小区间范围靠迭代保证精度。浮点存在浮点数精度丢失不能直接输出如切绳子需要向下取整保留两位小数ansfloor(ans*100)/100配合setprecision(2)输出。P1843奶牛晒衣服P1843 奶牛晒衣服 - 洛谷解题过程二分答案推荐效率更高二分总晾晒时间scheck(s)判断s时间内能否晒干所有衣服每件衣服自然风干s*a剩余水分需要烘干机统计所有衣服烘干总次数若总次数≤s 则时间 s 可行尝试更小时间ansmid,rmid-1不可行则增大时间lmid1。优先队列暴力每次取出含水量最大的衣服烘干 b 水分循环直到所有衣服自然风干即可代码实现//1843 #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; ll n,a,b; ll mx,ti; int main() { IOS priority_queuellq; cinnab; for(ll i0;in;i) { ll x; cinx; q.push(x); } mxq.top(); q.pop(); while(mxti*a) { ti; mx-b; q.push(mx); mxq.top(); q.pop(); } couttiendl; return 0; }二分//1843 #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; ll n,aa,b; //ll s; ll mx,ti; vectorlla; bool check(ll s) { ll sum0; for(ll i0;in;i) { if(a[i]s*aa) continue; ll rea[i]-s*aa; sum(reb-1)/b; if(sums) return false; } return sums; } int main() { IOS cinnaab; for(ll i0;in;i) { ll x; cinx; a.push_back(x); } sort(a.begin(),a.end()); ll l0,ra[n-1]; ll ans0; while(lr) { ll mid(lr)/2; if(check(mid)) { ansmid; rmid-1; } else { lmid1; } } coutansendl; return 0; }P1638逛画展P1638 逛画展 - 洛谷说明:滑动窗口解题过程用两个指针l窗口左边界、r窗口右边界维护一个动态区间右指针r不断向右扩张窗口把新画作纳入窗口统计窗口内画作种类数量kind当窗口集齐全部 m种画kind m说明当前区间合法持续收缩左指针l尽可能缩短区间长度每次收缩前更新最短区间答案左指针移出某类画且该画在窗口内数量变为 0 时种类数kind减一停止收缩继续右移r。代码实现//1843 #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second using namespace std; ll n,m; int main() { IOS cinnm; vectorlla(n2); vectorllcnt(m2,0); for(int i1;in;i) { cina[i]; } ll l1; ll kind0; ll ansx0,ansy0; ll mincurLLONG_MAX; for(ll r1;rn;r) { if(cnt[a[r]]0) { kind; } cnt[a[r]]; while(kindm) { ll curr-l1; if(curmincur||(curmincurlansx)) { mincurcur; ansxl; ansyr; } cnt[a[l]]--; if(cnt[a[l]]0) kind--; l; } } coutansx ansyendl; return 0; }e IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);#define ull unsigned long long#define fi first#define se secondusing namespace std;ll n,m;int main(){IOScinnm;vectora(n2);vectorcnt(m2,0);for(int i1;in;i){cina[i];}ll l1;ll kind0;ll ansx0,ansy0;ll mincurLLONG_MAX;for(ll r1;rn;r){if(cnt[a[r]]0){kind;}cnt[a[r]];while(kindm){ll curr-l1;if(curmincur||(curmincurlansx)){mincurcur;ansxl;ansyr;}cnt[a[l]]–;if(cnt[a[l]]0)kind–;l;}}coutansx ansyendl;return 0;}

相关新闻

机器学习到底是什么——别再被“AI万能论“给忽悠了

机器学习到底是什么——别再被“AI万能论“给忽悠了

前两天有个做销售的朋友请我吃饭,酒过三巡突然压低声音问我:"哥们儿,你跟我说实话,现在外面说的那些AI自动建模平台,是不是我啥都不用干,把数据倒进去,它自己就把模型训好了?&q…

2026/7/27 14:03:25 阅读更多 →
前端静态资源指纹化:Hash 策略与缓存更新的协同设计

前端静态资源指纹化:Hash 策略与缓存更新的协同设计

前端静态资源指纹化:Hash 策略与缓存更新的协同设计缓存是为了快,指纹是为了新——两者冲突时,策略决定胜负。一、场景痛点 你上线了一个前端项目,Nginx 配了 Cache-Control: max-age31536000,用户浏览器缓存了一年的 …

2026/7/27 14:02:25 阅读更多 →
终极开源实时飞机追踪:3步搭建免费ADS-B SDR接收器

终极开源实时飞机追踪:3步搭建免费ADS-B SDR接收器

终极开源实时飞机追踪:3步搭建免费ADS-B SDR接收器 【免费下载链接】gr-adsb GNU Radio OOT module for demodulating and decoding ADS-B packets 项目地址: https://gitcode.com/gh_mirrors/gr/gr-adsb 想要实时追踪飞机位置却苦于专业设备昂贵&#xff1f…

2026/7/27 14:02:25 阅读更多 →

最新新闻

TinyGo Drivers性能优化技巧:让你的嵌入式应用运行速度提升30%

TinyGo Drivers性能优化技巧:让你的嵌入式应用运行速度提升30%

TinyGo Drivers性能优化技巧:让你的嵌入式应用运行速度提升30% 【免费下载链接】drivers TinyGo drivers for sensors, displays, wireless adaptors, and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces. 项目地址: https://gitcode.com/gh_m…

2026/7/27 14:24:36 阅读更多 →
终极指南:如何在3DS上通过原生硬件完美运行GBA游戏?

终极指南:如何在3DS上通过原生硬件完美运行GBA游戏?

终极指南:如何在3DS上通过原生硬件完美运行GBA游戏? 【免费下载链接】open_agb_firm open_agb_firm is a bare metal app for running GBA homebrew/games using the 3DS builtin GBA hardware. 项目地址: https://gitcode.com/gh_mirrors/op/open_agb…

2026/7/27 14:24:36 阅读更多 →
真实工作流数据:下一代AI训练数据的核心价值与实践路径

真实工作流数据:下一代AI训练数据的核心价值与实践路径

那天下午,团队里一位负责数据标注的同事给我发来一条消息:“这个边界框,到底该怎么画才算对?”他附上了一张图片,图片里是一个零件在传送带上的某个特殊角度。问题不在于标注工具不会用,而在于——什么样的…

2026/7/27 14:24:36 阅读更多 →
TPS7H5001-SP EVM评估模块:宇航级辐射加固电源控制器的快速原型开发与深度测试指南

TPS7H5001-SP EVM评估模块:宇航级辐射加固电源控制器的快速原型开发与深度测试指南

1. 项目概述与核心价值在航天、卫星载荷以及高能物理实验这类极端环境中,电源系统的可靠性直接决定了整个任务的成败。这里面的挑战不仅仅是高温、低温、振动,更棘手的是无处不在的空间辐射——总剂量效应(TID)、单粒子效应&#…

2026/7/27 14:24:36 阅读更多 →
工业AI在汽车制造中的三大核心应用与优化路径

工业AI在汽车制造中的三大核心应用与优化路径

1. 工业AI如何重塑汽车制造的核心逻辑十年前我第一次走进汽车工厂时,被那些整齐划一的机械臂震撼得说不出话。但如今再回看,那些看似先进的自动化产线,本质上还是在执行人类预设的固定程序——就像一群不会思考的提线木偶。直到去年参观某新能…

2026/7/27 14:24:36 阅读更多 →
TI bq27505-J4电量计操作配置与电源模式深度解析

TI bq27505-J4电量计操作配置与电源模式深度解析

1. 项目概述与核心价值在便携式设备和物联网节点这类对功耗极其敏感的应用里,电池管理单元(BMU)的精度和能效直接决定了产品的用户体验和续航能力。作为这个单元的核心,电量计芯片的角色远不止一个简单的“电量显示条”&#xff0…

2026/7/27 14:23:35 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

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

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

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

2026/7/27 0:00:54 阅读更多 →

周新闻

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

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

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

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

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

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

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

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

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

2026/7/27 4:01:12 阅读更多 →

月新闻