[ AT_agc009_c]Division into Two

LVGL v8.3 图片显示与解码缓存实战:PNG 上屏、C 数组与文件双方案 LVGL v8.3 图片两种存储方式、PNG/JPG 上屏解码器挂载、LV_IMG_CACHE_DEF_SIZE 缓存调优、手动预解码头像有效性判断,及"缓存被动画清空"真实踩坑。 阅读详情

题目传送门

引

大家都知道集合吧,原谅我喜欢说废话

解法

先钦定 A > B A>B A>B,
先把数排好序得到数组 a a a,考虑先解决集合 X X X的问题,

设计状态:

明显只有一维( n < = 1 e 5 n<=1e5 n<=1e5),所以有:
f i : X 集合最后放的是第 i 个数,对于前 i 个数来说 X , Y 都合法的方案数 f_i:X集合最后放的是第i个数,对于前i个数来说X,Y都合法的方案数 fi​:X集合最后放的是第i个数,对于前i个数来说X,Y都合法的方案数
发现后 ( n − i ) (n-i) (n−i)个放在 Y Y Y的数我们未保证合法,但是我们之后特判一下就好了

状态转移

设 f i f_i fi​由 f j f_j fj​转移而来
考虑有哪些 j j j可以贡献:
1. i > j i>j i>j(废话)
2. a i − a j ≥ A a_i-a_j\ge A ai​−aj​≥A(差值大于 A A A)
3. max ⁡ { a k − a k − 1 } ≥ B , k ∈ ( j , i ) \max\{a_k-a_{k-1}\}\ge B,k\in(j,i) max{ak​−ak−1​}≥B,k∈(j,i)(满足 Y Y Y集合的要求)
则: f i = ∑ f j f_i=\sum f_j fi​=∑fj​

code:
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7,N=1e5+7;
int n,l,r;
int f[N],sum[N];
ll A,B;
ll a[N];
int main(){
	scanf("%d%lld%lld",&n,&A,&B);
	if(A<B) swap(A,B);
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	for (int i=1;i+2<=n;++i)
        if (a[i+2]-a[i]<B) return puts("0"),0;
	a[0]=0;
	f[0]=sum[0]=1;
	for(int i=1;i<=n;i++) {
		while(a[i]-a[r+1]>=A) r++;
		if(l<=r) {
			f[i]=(1ll*f[i]+1ll*sum[r])%mod;
			if(l) f[i]=(1ll*f[i]-1ll*sum[l-1]+mod)%mod;
		}
		sum[i]=(1ll*sum[i-1]+1ll*f[i])%mod;
		if(a[i]-a[i-1]<B) l=i-1;
	}
	int ans=0;
	for(int i=n;~i;i--){	
		ans=(1ll *ans+1ll*f[i])	%mod;
		if(i<n && a[i+1]-a[i] <B) break;
	}
	printf("%d\n",ans);
}

TXL

Ollama-OCR实战:5分钟搞定PDF文档转Markdown(附qwen2.5vl模型配置) 本文详细介绍了如何利用Ollama本地部署多模态大模型qwen2.5vl,结合OCR技术,实现PDF文档到Markdown的端到端智能转换。通过解析传统OCR的局限与AI方案的优势,并提供从环境搭建、提示词工程到处理复杂表格的完整实战指南,帮助用户高效构建自动化文档处理流水线,彻底重塑文档处理工作流。 阅读详情

相关推荐

”COMSOL“竟然如此简单!我悟了!!

COMSOL Multiphysics具有强大的多物理场全耦合仿真分析功能、高效的计算性能,可以保证数值仿真的高度精确,已被广泛应用于各个学科领域,近年来运用COMSOL来解决电化学实际工程问题也越来越普遍。

C1012562281的博客 3449

[AT2292] [AGC009 C] Division into Two

洛谷传送门 Atcoder传送门 题目大意 给定nnn个不同的整数a1,a2,a3,...,ana_1,a_2,a_3,...,a_na1​,a2​,a3​,...,an​,求将它们分成两个集合X,YX,YX,Y,并且XXX集合中任意两个数的差≥A\ge A≥A,YYY集合中任意两个数的差≥B\ge B≥B的方案数。 输入输出格式 输入格式 第一行三个正整数n,A,Bn,A,Bn,A,B。 以下n...

LPA的博客 311

Flutter连接蓝牙打印机打印(含中文、双排打印)

Flutter连接蓝牙打印机打印(含中文、双排打印)

Session_W的博客 701

[agc009c]Division into Two

前言DP题,还可以,不是很难。题目大意把一堆互不相同的数分成两个集合X和Y,其中一个集合X任意两数之差不小于A,另一集合Y任意两数之差不小于B。 问方案数,集合可以为空。DP把这些数排序。 接着添加第0个数无穷小以及第n+1个数无穷大。 我们假设A>=B。 设f[i]表示分配好了前i个数,第i个数去X集合的方案。 转移显然要找到上一个位置j。 第一种情况j=i-1,只要a[i]-a[i-

不来也不去的一只失忆蝴蝶 704

【RViz2】导入urdf模型时报错:Could not load resource xxx,Unable to open file xxx,Error retrieving file xxx

初学ROS2,想要在RViz2中显示urdf模型。其中.urdf文件引用了外部的meshes文件夹。

qq_43557907的博客 9488

如何用AP525 测试输入信号的相位,频响,延时,Pop和卡顿

假设信号不是从AP输出,是功放或者其他的播放设备输出的信号,接入到AP525的输入端。

帮助100万人颠覆负面潜意识,实现人生蜕变,培养1万名潜意识开发导师 2406

AGC009C Division into Two

传送门 题意: 给出一个集合,集合内的数都是整数且互不相同。现在将这个集合划分成X和Y两个集合(X和Y可以为空),使: X中任意两个元素至少相差A; Y中任意两个元素至少相差B。 求满足条件的划分的方案数,对1e9+7取模。 题解: 我们可以想到一个O(n2)的dp。设fx[i][j]为第i个元素在X中,且在Y中的最后一个元素是j的方案数。同理定义fy[i][j]。 然后考虑一下fx[i][j...

dogeding233 266

Simscape Multiboby学习笔记1——跟着官网学Multibody

文章目录一. 引言二. Simscape Multibody自学之路三. 本教程的目录 一. 引言 最近在倒腾Matlab的动力学仿真,起因是看到有人推荐Matlab的multbody模块,一经了解之下简直惊为天人。作为一名Matlab的小粉,看到这么好用的模块简直不要太开心,之前用simulink搭飞行器的仿真模型,虽然能够仿真看到六自由度位移,毕竟不能可视化,还是很不够直观,而且simulink仿真(以及更费力的脚本文件仿真)需要精确建模,模型不精确计算也是天差地别。而Multibody在具备其他动力学

qq_30267617的博客 8241

AGC009 C Division into Two

题意 给出一个集合,集合内的数都是整数且互不相同。现在将这个集合划分成X和Y两个集合(X和Y可以为空),使: X中任意两个元素至少相差A; Y中任意两个元素至少相差B。 求满足条件的划分的方案数,对1e9+7取模 题解 首先我们考虑一种O(n2)O(n^2)O(n2)的方法 我们定义d(i,j)表示X集合末尾为i,Y集合末尾为j的方案数 转移呢由于这个转移是关于max(i,j)递增的,所以枚举...

LazyCrazyCat的博客 316

MATLAB不能识别已安装的visual studio 2015解决方法

首先,对于MATLAB识别已经安装的vs版本通过命令: mex -setup 下图为本电脑下同时安装的两个visual studio 如果搞清楚MATLAB识别电脑上安装vs的过程,可通过命令: mex -setup -v MATLAB输出识别编译器的整个过程。其中HKLM和HKCU分别是注册表中的HKEY_CURRENT_USER,HKEY_LOCAL_MA…的缩写,MATLAB没有找到对应编译器是由于注册表里没有对应信息(主要是文件路径,C++编译器的路径),或者在注册表里存在该信息,但是找不到

qq_36320710的博客 4899

QCustomPlot实战:从入门到精通的数据可视化

本文详细介绍了如何使用QCustomPlot进行数据可视化,从基础环境搭建到高级图表定制,涵盖实时监控、多坐标系联动等实战技巧。基于Qt的QCustomPlot库以其强大的绘图能力和灵活的API,帮助开发者快速实现专业级数据可视化效果。

weixin_29003437的博客 115

【DP】AGC 009 C - Division into Two

题意 按元素从小到大的顺序给出一个集合,集合内的数都是整数且互不相同。现在将这个集合划分成X和Y两个集合(X和Y可以为空),使: X中任意两个元素至少相差A; Y中任意两个元素至少相差B。 求满足条件的划分的方案数,对1e9+7取模。 思路 先说一下考场上的错误的想法: 假设B≤A,现将a[i]放入集合X,找到最大的 j 使 a[j]+A≤a[i] ,找到最小的 k 使 k~i-1 中的每一个数都...

G20202501的博客 311

行人检测模型在海思平台上的部署:从 PyTorch 到 NNIE 深度优化与实践

摘要 本文详细介绍行人检测模型从PyTorch到海思NNIE平台的部署流程。首先分析了行人检测面临的挑战(尺度变化、遮挡、姿态多样性等)及边缘部署的优势(实时性、隐私保护等)。重点阐述了模型转换过程:PyTorch→ONNX→Caffe→NNIE-WK,其中PyTorch转ONNX需注意评估模式设置、虚拟输入匹配、操作集版本选择等关键点。文章旨在帮助开发者在海思3516D芯片上实现高效的行人检测,克服部署过程中的常见问题,最终实现边缘设备的实时目标检测能力。

FJN110的博客 218

【DP】AGC009C Division into Two

分析: 很容易想到DP,设DP[i][0/1]DP[i][0/1]DP[i][0/1]表示已经处理了前i个,末尾一个属于A集合/B集合。 那么DP[i][0]=∑DP[k][1]DP[i][0]=\sum DP[k][1]DP[i][0]=∑DP[k][1],其中KKK满足以下条件: 1、K&amp;lt;iK&amp;lt;iK&lt;i 2、∀j∈[K+2,i],aj−aj−1≥A(B)\fo...

氧化钠的博客 256

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[AGC009C Division into Two] [DP好题]

这题真的挺不错的。 首先观察发现:任意两元素相差&gt;=A,只要满足排序后相邻两元素相差&gt;=A,B同理,所以我们考虑从小到大依此决定每个元素应该扔到哪个集合,这样就只要维护两个集合中此时最大的元素即可。得到朴素的动态规划方法: f[i][j]表示放完了前max(i,j)个元素,且A集合中最大的元素是i,B集合中最大的元素是j,有多少种方案。 转移也很方便,直接枚举下一个元素放到哪个集...

Orzage的博客 411

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

AtCoder Grand Contest 009 C - Division into Two

https://atcoder.jp/contests/agc009/tasks/agc009_c 感觉这种题遇到过,就是一堆数字放两个集合,有多少种方法让集合内的差值都大于某个一个固定值 一直都不会做,今天又见到了,但之前遇到的好像是两个集合相同的版本,这个是两个集合不同的固定值,所以两个集合本身也是不同的,也就是 {1},{}和{},{1}是有区别的 不妨设A<=B 设f[i]为前i个划分,s[i]在B集合的方案数 假设f[i]可以由f[j]转移过来,也就是B集合中倒数两个数是s[],s

binarycopycode 224

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

AGC 009 C Division into Two 题解

题目传送门 首先可以发现这是一个dp计数题。 题目可以转化成 有一个数组:b1,b2,b3,b4..bnb_1,b_2,b_3,b_4..b_nb1​,b2​,b3​,b4​..bn​满足bi>bi−1b_i>b_{i-1}bi​>bi−1​,你要给每一个数图上两种颜色:0/10/10/1,设cic_ici​表示第i个球的颜色。你要使得min⁡{∣bi−bj∣}≥A,(ci=cj=0)\min\{|b_i-b_j|\}\geq A,(c_i=c_j=0)min{∣bi​−bj​∣}≥A,

qq_42925924的博客 285

【Atcoder】AGC009 B-E简要题解

C. dp优化 D.问题转化,贪心 E.神仙转化,DP

远行客 380

Atcoder2292 Division into Two 【动态规划优化】

题目描述: 有一个包含N个不同整数的集合,其中第i小的元素是Si。我们希望把它划分成两个集合X和Y,使得: 集合X中任意两个相邻元素的差不小于A。 集合Y中任意两个相邻元素的差不小于B。 共有多少种不同的划分方式呢?输出答案对10^9+7取模后的结果。注意集合X或Y可以为空集。 1≤N≤10^5 解题思路: 先排序。 很好想到O(n2)O(n2)O(n^2)的dp,f[i][j]f...

cdsszjj的博客 405

static 的三种用法:C 语言里一个关键字的三张面孔

本文系统讲解 C 语言中 static 关键字的三种用法:修饰局部变量延长生命周期、修饰全局变量与函数限制作用域到本文件。通过一个包含三个文件的完整工程示例对照演示,并从存储期、作用域与链接性三个属性解释其统一原理,最后补充单元测试框架偏爱 static 函数的工程实践。

大模型全栈工程师 · Thanks_ks 338

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 295

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 327

把 KV Cache 压到 FP4:BitDecoding-FP4 的算法-系统协同设计复盘

长上下文推理卡在KV Cache的显存与带宽上,而现有FP4方案要么精度崩、要么速度废。这篇文章复盘BitDecoding-FP4如何用三个算法补丁加一个系统重构,在B300上把服务吞吐提升2.4–3.0倍,精度几乎不掉。

helloagent的博客 308

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 601

优选算法:分治-归并排序

交易逆序对的总数

Wangshijie1015的博客 144

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 23
上一篇: [CTSC2017]吉夫特
下一篇: [HNOI2011] 卡农
PocketSam
博客等级 码龄4年 24粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值