惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
C
Cisco Blogs
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Cloudflare Blog
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
Intezer
Cyberwarzone
Cyberwarzone
T
The Blog of Author Tim Ferriss
博客园 - Franky
F
Fortinet All Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
G
Google Developers Blog
Recent Announcements
Recent Announcements
I
InfoQ
T
Threat Research - Cisco Blogs
V
V2EX
T
Tenable Blog
H
Help Net Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The GitHub Blog
The GitHub Blog
P
Privacy & Cybersecurity Law Blog
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
T
Tor Project blog
Attack and Defense Labs
Attack and Defense Labs
P
Proofpoint News Feed
H
Heimdal Security Blog
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
Martin Fowler
Martin Fowler
AWS News Blog
AWS News Blog
IT之家
IT之家
Google DeepMind News
Google DeepMind News
NISL@THU
NISL@THU
Google Online Security Blog
Google Online Security Blog
Vercel News
Vercel News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
SecWiki News
SecWiki News
GbyAI
GbyAI
P
Proofpoint News Feed
月光博客
月光博客
Schneier on Security
Schneier on Security

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12) Snack JSONPath 项目架构分析 Claude Code Buddy 小析:一个非核心功能,如何体现产品的细节完成度 AI新时代下的图床管理方案-Cloudflare图床+MCP+Skills方案指南 化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量 从零实现富文本编辑器#13-React非编辑节点的内容渲染 AI开发-python-langchain框架(3-23-OpenAI Functions风格Tool Calling智能助手) .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut PbootCMS 网站内容数量多导致访问慢?这些实用优化方案帮你提速! - 家兴网络技术工作室 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 网站漏洞怎么发现并修复?一篇实用指南(附完整流程) - 家兴网络技术工作室 开了 TUN 模式还是直连?90% 的人都踩过这个坑 Github日报|2026年04月12日 - AI一族 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术 Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模 MicroPython LVGL基础知识和概念:底层渲染与性能优化 - FreakStudio 数据库草图算法 Python 潮流周刊#146:CPython 引入 Rust 的进展 - 豌豆花下猫 最小生成树 - mofei1116 红日靶场七:从外网入口、容器逃逸到 AD 接管的完整利用链复盘 - YouDiscovered1t 分享四款开源且实用的 Kafka 管理工具 - 追逐时光者 vLLM 权重加载机制全解析:从挑战到理想架构 LCT 学习笔记 - ACehomoxue Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃 - 张善友 当 AI Agent 把调用链拉长,延迟开始成为一门生意 conhost.exe 无法显示 U+2717 - 145a 太秀了,我把自己蒸馏成了 Skill!已开源 - 程序员鱼皮 ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑 基于 Ghostty 带有分割标签页和为 Claude 编程设计的通知终端 - BugShare AI 焊死入口:教育的“操作系统级”重塑 - 郝hai 初级Java开发工程师使用sql脚本编写代码的过程是简单而且不糊涂 - CoderOilStation Claude Code通关手册(六):MCP协议完全指南 - 暮色之狐 边框灯光环绕动画特效实现指南 - Newbe36524 开源:子木蒸馏版的 SEO 审计工具 seo-audit-skill v1.0 我所理解的Python元模型 【从0到1构建一个ClaudeAgent】规划与协调-TodoWrite - 程序员Seven Claude 和 Codex 在审计 Skill 上性能差异探究 - ACai_sec AScript如何实现中文脚本引擎 - rockey627 【渗透测试】HTB Season10 Garfield 全过程wp - dynasty_chenzi Android 开发者为什么必须掌握 AI 能力?端侧视角下的技术变革 树状数组正确性证明 - AC-wyr 你的 AI 焦虑,可能比 AI 本身更危险——ATM 机没有消灭银行柜员,但恐慌消灭了你的判断力 - 我没有三颗心脏 一个拉胯的分库分表方案有多绝望?整个部门都在救火! - 冰河团队 动态规划入门必学之走方格问题 - Ofnoname PostgREST 与 PostgreSQL 角色权限配置全解析(生产级实践) - SheepDog1998 使用 UEFI 图形输出协议 GOP 在屏幕上显示图像的方法 - 阿源- Claude Code通关手册(五):组建你的AI专家团队,子代理系统 - 暮色之狐 一个程序员到架构师的催婚路之感悟(整整10年后的催婚相亲感悟) - MisterLip 用 Agent Skill 自动生成工作周报 - 赵康
洛谷-P16434 [APIO 2026 中国赛区] 蛋糕 题解
xiaoniu14285 · 2026-05-11 · via 博客园_首页

交互题好玩!

看到各测试点限制各不相同,考虑数据点分治。

约定记号

  • \(f(S)=\sum_{i\in S}a_i\)

形式化题意

你需要猜出评测机里一个 \([1,W]\) 中的正整数 \(d\)。为此你需要构造一个长度 \(\le N\),值域 \([1,W+200]\) 的正整数序列。评测机会把该序列排序并把需要猜的数插入到正确位置。

设排序后序列为 \(\{a_i\}_{i=0}^m\)。接下来你最多可以询问 \(K\) 次。每次询问需要给出两个下标集合 \(S_1,S_2\),满足 \(S_1\cap S_2=\varnothing\)\(S_1,S_2\subseteq \{0,1,\dots,m\}\)。评测机会返回 \(f(S_1)\)\(f(S_2)\) 的大小关系。请猜出评测机中的数。

Subtask1

\((1,2,3,\dots,W)\)。暴力枚举到第一个满足 \(a_i=a_{i+1}\) 的位置,则必有 \(d=i+1\)

Subtask2

传序列 \((1,2,3)\)。插入 \(d\) 排序后,必然有 \(a_0=1, a_3=3\)。我们只需比较 \(a_0+a_3=4\)\(a_1+a_2\) 的大小。具体地:

  • \(d=1\)\(\{a\}=(1,1,2,3)\)\(a_0+a_3>a_1+a_2\)
  • \(d=2\)\(\{a\}=(1,2,2,3)\)\(a_0+a_3=a_1+a_2\)
  • \(d=3\)\(\{a\}=(1,2,3,3)\)\(a_0+a_3<a_1+a_2\)

Subtask3

注意到 \(K=\lceil\log_2 W\rceil\),考虑二进制拆分,一次询问确定一位。

我们传 \((1,2,2^2,2^3,\dots,2^{29})\)。该序列满足 \(\sum_{k=0}^{i-1}a_k<a_i\) 的性质。观潮到插入 \(d\) 之后,在 \(d\) 及其右侧该性质会被破坏。

那么我们从右往左找到最大的满足以上性质的 \(i\)。那么 \(d\) 的第 \(i\) 位一定是 \(1\)。然后依次尝试加上 \(2^{i-1},2^{i-2},\dots,1\) 即可确定剩余位。恰好询问 \(30\) 次。

Subtask4

如果直接套用 Subtask 3 的做法可以获得 \(11\) 分。由于 \(2^K<W\),该做法没有前途。

注意到 \(K=\lceil\log_3 W\rceil\),而 \(3^7=2187<W+200\)。这强烈暗示我们采用三分做法,需要一次询问将搜索范围缩小至 \(1/3\)

发现 \(N\) 的限制非常宽松。构造序列 \((1,2,3,\dots,3^7)\)。注意到,该序列满足性质 \(a_i+a_j=a_{i+k}+a_{j-k}\)

维护 \(d\) 所在的下标区间 \([l,r]\),初始时 \(l=0,r=2187\)

每次取区间三等分点 \(m_1=l+(r-l)/3,m_2=r-(r-l)/3\),查询 \(S_1=\{m_1,m_2\},S_2=\{l,r\}\)

  1. \(f(S_1)<f(S_2)\)\(d\) 插在 \([l,m_1]\) 段中。
  2. \(f(S_1)=f(S_2)\):原性质仍然成立,\(d\) 插在 \([m_1,m_2]\) 段中。
  3. \(f(S_1)>f(S_2)\)\(d\) 插在 \([m_2,r]\) 段中。

然后不断三分即可,注意边界和细节问题。

Code

#include "cake.h"
#include <vector>
#include <numeric>
#define rep(i,a,b) for(int i(a);i<b;++i)
#define per(i,a,b) for(int i(a);i>b;--i)
#define rept(i,a,b) for(int i(a);i<=b;++i)
#define pert(i,a,b) for(int i(a);i>=b;--i)
#define eb emplace_back
using namespace std;
vector<int> bake_cakes(int N,int W,int K){
    if(K==1) return {1,2,3};
    if(K==100){
        vector<int> res(100);
        iota(res.begin(),res.end(),1);
        return res;
    }
    if(K==30){
        vector<int> res(30);
        rep(i,0,30) res[i]=1<<i;
        return res;
    }
    vector<int> res;
    rept(i,1,2187) res.eb(i);
    return res;
}
int find_tastiness(int m,int W,int K){
    if(K==1){
        int k=compare_tastiness({0,3},{1,2});
        return k==-1?3:(k?1:2);
    }
    if(K==100){
        rept(i,0,99){
            if(!compare_tastiness({i},{i+1})) return i+1;
        }
        return 0;
    }
    if(K==30){
        int ans=0,h=-1;
        pert(i,29,1){
            vector<int> t(i);
            iota(t.begin(),t.end(),0);
            if(compare_tastiness(t,{i})==-1){
                h=i;
                break;
            }
        }
        if(h==-1) return 1;
        ans|=1<<h;
        pert(i,h-1,0){
            vector<int> t;
            rep(i,0,30) if(ans>>i&1) t.eb(i);
            t.eb(i);
            int k=compare_tastiness(t,{h+1});
            if(!k) return ans|1<<i;
            if(k==-1) ans|=1<<i;
        }
        return ans;
    }
    int l=0,r=2187,cur=729;
    while(l+1<r){
        int k=compare_tastiness({l+cur,r-cur},{l,r});
        if(k==-1) r=l+cur;
        else if(!k) l+=cur,r-=cur;
        else l=r-cur;
        cur/=3;
    }
    return r;
}