OI 笑传 #36

news/2025/11/25 23:24:03/文章来源:https://www.cnblogs.com/hm2nsite/p/19270432

ylx 依旧在自言自语的讲课。感觉 SDUT 里好吃的地方都去过了。

今天是 bct NOIP Day 6,赛时 \(100+10+20+10=140\),rk 27。

T4 不会手写 bitset 被区分了,于是学了学。

sheep 说 T2 是典完了的连通性容斥,我咋不知道啊。

评价是 ok 场。其实 T2 原本是 T1 来着,ylx 被压力的才加的题。

T1

把要记的都扔进状态里 DP 即可,转移时还要容斥一下。

code

Show me the code
#include<bits/stdc++.h>
using namespace std;
typedef long long i64;
typedef unsigned long long u64;
typedef __int128 i128;
#define ls p*2
#define rs p*2+1
const int N=400;
const int mod=998244353;
int dp[N][N][N];
int main(){freopen("qwq.in","r",stdin);freopen("qwq.out","w",stdout);string a,b,c;cin>>a>>b>>c;int len=c.size();int l1=a.size();int l2=b.size();a=' '+a;b=' '+b;c=' '+c;for(int i=0;i<=l1;i++)for(int j=0;j<=l2;j++)dp[i][j][0]=1;for(int i=1;i<=l1;i++)for(int j=1;j<=l2;j++){for(int p=1;p<=min(min(i,j),len);p++){dp[i][j][p]=(0ll+dp[i-1][j][p]+dp[i][j-1][p]-dp[i-1][j-1][p]+mod)%mod;if(c[p]=='<'&&a[i]<b[j]){dp[i][j][p]=(0ll+dp[i][j][p]+dp[i-1][j-1][p-1])%mod;}	if(c[p]=='>'&&a[i]>b[j]){dp[i][j][p]=(0ll+dp[i][j][p]+dp[i-1][j-1][p-1])%mod;}}}cout<<dp[l1][l2][len];return 0;
}

T2

不想在赛前赤这种东西。放了。

T3

DP 牛牛题。

考虑为什么花费要定义为 距离乘上价值 状物,很重要的观察是当重量 \(k\) 一定时,如果选的东西的距离都至少是 \(d_i\),那么选出来的价值和不超过 \(\left \lfloor \dfrac{k}{d_i}\right \rfloor\)

我们又知道背包的一种常见变体就是如果物品价值很小花费很大,我们会把价值作为状态来 DP,结果是达到这个价值用的最小代价。

于是这启发我们分 \(d_i\) 的大小吧,恩就是根号分治。

阈值 \(B\) 表示分的大小,\(d_i\le B\) 那就暴力 \(O(k)\) 更新以代价为状态的 DP 数组。\(d_i > B\) 那就从 \(\left \lfloor \dfrac{k}{d_i}\right \rfloor\)\(v_i\) 的更新以价值为状态的 DP 数组。

后者有时间复杂度上界就是调和级数,\(O(k\log k)\),前者的时间复杂度显然是 \(O(kB)\) 的。

对于查询,首先显然要时间倒流,因为背包好加不好删。

然后枚举我们想在 \(d_i>B\) 这一块拿多少价值,再看看剩余的代价能在 \(d_i\le B\) 那里拿多少价值,合起来去最大即可。

能取的价值的上界显然是 \(\left \lfloor \dfrac{k}{B}\right \rfloor\),于是查询的时间复杂度就是 \(q\left \lfloor \dfrac{k}{B}\right \rfloor\)

再考虑修改,\(d_i > B\) 不管反正有个上界,\(d_i\le B\) 最多就 \(B\) 个,时间复杂度是 \(O(kB)\)

于是这东西的时间复杂度是 \(O(kB + \frac{kq}{B} + k \log k)\) 的,均值一下取 \(B=\sqrt{q}\) 即可。

感谢 sheep 一眼了我代码的 bug。感觉比 T2 简单。

code

Show me the code
#define rd read()
#define mkp make_pair
#define ls p<<1
#define rs p<<1|1
#define rep(i,a,b) for( int i=(a); i<=(b); ++i)
#define per(i,a,b) for( int i=(a); i>=(b); --i)
#include<bits/stdc++.h>
using namespace std;
typedef long long i64;
typedef unsigned long long u64;
typedef unsigned int u32;
typedef __int128 i128;
i64 read(){i64 x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;
}
const int N=2e6+612312;
i64 d[N];i64 v[N];i64 dpw[N];i64 dpv[N];i64 ans[N];
struct que{i64 op;i64 v;i64 qid;
}qm[N];
bitset<N> ext;
int main(){ios::sync_with_stdio(0);cin.tie(0);int n,m,k;cin>>n>>m>>k;for(int i=1;i<=n;i++){cin>>d[i]>>v[i];ext[i]=1;}int bd=sqrt(m)+1;cerr<<bd<<'\n';int qc=0;for(int i=1;i<=m;i++){int op;cin>>op;if(op==1){int vk;cin>>vk;ext[vk]=0;qm[i].op=op;qm[i].v=vk;}if(op==2){int q;cin>>q;qc++;qm[i].op=op;qm[i].qid=qc;qm[i].v=q;}}memset(dpv,0x7f,sizeof dpv);dpv[0]=dpw[0]=0;int d1=0;for(int i=n;i>=1;i--){if(ext[i]==0)continue;if(d[i]>bd){for(int j=k/d[i];j>=v[i];j--){dpv[j]=min(dpv[j],dpv[j-v[i]]+v[i]*d[i]);}d1=k/d[i];}else{for(int j=k;j>=d[i]*v[i];j--){dpw[j]=max(dpw[j],dpw[j-d[i]*v[i]]+v[i]);}}}for(int i=m;i>=1;i--){int op=qm[i].op;if(op==1){int vk=qm[i].v;i64 cst=v[vk]*d[vk];if(d[vk]>bd){d1=max(0ll+k/d[vk],0ll+d1);for(int j=d1;j>=v[vk];j--){dpv[j]=min(dpv[j],dpv[j-v[vk]]+cst);}}else{for(int j=k;j>=cst;j--){dpw[j]=max(dpw[j],dpw[j-cst]+v[vk]);} }}if(op==2){i64 ks=qm[i].v;i64 anss=0;for(int j=0;j<=k/bd;j++){i64 req=ks-dpv[j];if(req<0)continue;if(req==0){anss=max(anss,0ll+j);}else anss=max(anss,dpw[req]+j);}ans[qm[i].qid]=anss;}}  for(int i=1;i<=qc;i++){cout<<ans[i]<<'\n';}return 0;
}

T4

学了下手写 Bitset,过了 30pts 就跑路了。

正解是大分块,但是我们的常熟大蛇 sheep \(O(nq)\) 过了后两个 subtask。

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

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

相关文章

2025.11.25总结

CS架构的项目还剩最后一个账单报表的功能。 大数据剩下五个拧螺丝的项目 BS架构的项目得起个头

Go 打造图像识别引擎:实现验证码文本解析功能

验证码作为一种防爬虫机制,在自动化处理流程中常常成为“最后的难关”。本文将介绍如何使用 Go 语言构建一个验证码识别工具,借助 Tesseract OCR 引擎完成图像文字的提取任务。我们将涵盖环境配置、图像处理、OCR 调…

Coze相关问题

Coze相关问题Posted on 2025-11-25 23:12 Java后端的Ai之路 阅读(0) 评论(0) 收藏 举报Coze相关问题Coze的数据库可以导出到本地吗? 目前官方不支持,数据库如果要保存到本地的话,可以通过插件 HTTP的形式,同时…

妥协技术方案和风险累加

初始化方案的风险引入 为了业务独立,将各个业务独立成模块,由应用依赖各个模块,当模块升级时,只需要重新接入该模块(接口不变的情况下,应用本身都不需要改动)是一种也比较常见的依赖接入方式。 此时有一个公用模…

目标跟踪(BOT-SORT)yolo默认的跟踪算法 - MKT

目标跟踪(BOT-SORT)yolo默认的跟踪算法1. 算法背景多目标跟踪问题的核心是对视频帧中的目标进行准确检测,并在连续帧中维持目标身份的一致性。传统方法可能在快速移动的目标、遮挡以及检测精度不高时表现较差。BOT-…

Day2 Scrum冲刺博客

Day2 Scrum冲刺博客 1. 团队会议 todo补充会议照片 1)昨天已完成的工作前端前端项目初始化完成,实现了路由、菜单配置和登录页面 "关于我们"弹窗初步完成后端完成了爬虫程序的初步实践 产生了示例数据,用…

第36天(中等题 数据结构)

打卡第三十六天 2道中等题题目:思路:先相加所有数,然后依次减去一个数,看剩余的数是不是偶数,是就/2,看/2得到的数有没有在剩余的数里,在就代表减去的数就是异常值,然后用ans存储这个异常值,找出所有异常值并…

Save Time Money: KEYDIY KD NB22-4 Universal 4-Button Remote (5pcs/lot) for Euro/American Cars

The Hidden Costs of Key Fob Failures: Why Mechanics and Car Owners Need a Reliable Universal Solution In the world of automotive repair, few issues frustrate both mechanics and car owners more than bro…

翻转课堂 1st

> 开场相信很多同学都在行指针和列指针这堂课上听懵了吧,希望这篇随笔会对你有所帮助,德尔菲神庙是古希腊世界中最nb的一所神庙,古希腊人认为它是”世界的脐带“,它是供奉太阳神阿波罗的主要圣地(阿波罗是光明、…

拍卖监控与奖励机制优化策略

本文探讨了通过延迟检查和奖励机制优化拍卖设计的方法,该机制能在监控买家真实价值后给予诚实报价奖励,从而提高拍卖收益并减少信息租金,特别适用于数字商品等可监控场景。监控和奖励诚实出价以提高拍卖收益 在论文…

实验三类和对象

实验任务一: 问题1:答:是组合关系,Button对象是WIndow对象的组成部分。 问题2:答:(1)优点:用户可以调用函数判断窗口中是否有某按钮,帮助用户了解窗口。缺点:接口变大了,用户可能会使用has_button接口自己…

java---gradle的使用总结

最近做java项目,使用Gradle进行项目构建,从最开始的懵,到现在还是会用了,简单总结下: 1、Gradle是国外的,下载安装比较慢,可以先下载Gradle进行本地安装打开腾讯云Gradle镜像页面:https://mirrors.cloud.tence…

二叉树 节点的个数关系

度数为2的节点a个度数为1的节点b个度数为0的节点c个2a+b=a+b+c-1a=c-1也就是说度数为2的节点的个数=度数为0的节点个数减去1 n2=n0-1 n0=n2+1

整合 MyBatis 代码生成器插件

1. mybatis-generator 是什么?mybatis-generator-maven-plugin 是一个 Maven 插件,用于生成 MyBatis 的代码(如 Mapper 接口、Mapper XML 文件等),官方文档地址: https://mybatis.org/generator/ 。它可以根据数据…

java---Idea

开发java项目使用idea: 下载地址:https://www.jetbrains.com/idea/蓝色的是收费版本,功能很全,有30天试用: 黑色的功能少,免费使用。 IDEA项目结构介绍:然后打开软件:第一步:创建项目 可以选择创建一个空项目:…

java---基础

最近学了学java,做一些整理和梳理:菜鸟笔记https://www.runoob.com/java/java-tutorial.html1、写一个基本的方法: 右键点击【src】选择【新建】【类】勾选【创建一个主方法】然后点击创建即可。 创建一个方法:pub…

内存马研判

内存马如何进行研判? 内存马本身无文件、在内存中运行,无文件的web后门,成功标志是攻击者能够通过特制的HTTP请求与它进行交互,并成功执行命令,获取回显或建立更高级的C2信道。 内存马大致分为:明文/弱加密内存马…

实用指南:__工艺数据管理的范式转变:金仓数据库替代MongoDB实操实践__

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

KEYDIY KD NB27-3 3-Button Universal Flip Remote - 5pcs for Audi Universal Fit

Struggling to Find Reliable Audi Remotes? Meet the KEYDIY KD NB27-3 Universal Flip Remote The Problem: Affordable, Universal Audi Remotes Are Hard to Come By For European and American automotive repai…

NOIP 集训 day3 图论1

MST 相关 知识点:Kruskal Prim Kruskal 重构树洛谷 P4768 [NOI2018] 归程 经典题。先对海拔建出 kruskal 重构树,然后从起点开始通过海拔 \(>p\) 的点可达的所有点就是一个 \(v\) 的一个祖先(深度最小的满足海拔…