AGC009C Division into Two

CodeForces1046B Hyperspace Highways 传送门 题意: N个点,M条边,每一个环上的点两两有边相连。q次询问两点间最短距离。 题解: 构造圆方树,那么两点间距离感性认知一下就可以发现是树上两点间距离的一半。然后 dist(u,v)=(dep[u]+dep[v]-2*dep[lca])/2即可。 继续存板子。 代码: #include<cstdio> #include<algorithm> #define maxn... 阅读详情

传送门

题意:
给出一个集合,集合内的数都是整数且互不相同。现在将这个集合划分成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]的转移。如果S[i+1]-S[i]≥A,那么就可以转移到fx[i+1][j];如果S[i+1]-S[j]≥B,那么就可以转移到fy[i+1][i]。
但是这个时间复杂度显然会T。考虑优化。
让S[0]=-INF,S[n+1]=INF.
那么让A≥B,f[i]为第i个元素在X中的方案数,g[i]为第i个元素在Y中的方案数。设[l,r]为g可以转移到f的范围。那么r的限制就是上述第一条限制,l的限制为第二条,即l之后相邻两个数的差≥B。
那么g[j]可以转移到f[i]的条件是: Si+1 − Sj ≥ B,Sj+1…i 中任意两个相邻的数的差均不小于 A

然后转移f时就可以和上述类似地转移了,g也可以求一个前缀和。

代码(变量名有点混乱,轻喷):

#include<cstdio>
#include<algorithm>
#define maxn 100005
#define LL long long
#define mod 1000000007
#define INF (LL)4e18
using namespace std;
int n,f[maxn],s[maxn];
LL a,b,x[maxn];
int Get(int l,int r)
{
	if(l>r) return 0;
	if(!l) return s[r];
	else return (s[r]-s[l-1]+mod)%mod;
}
int main()
{
	scanf("%d%lld%lld",&n,&a,&b);
	if(a<b) swap(a,b);
	for(int i=1;i<=n;i++) scanf("%lld",&x[i]);
	x[0]=-INF,x[n+1]=INF;
	f[0]=s[0]=1;
	int l=0,r=0;
	for(int i=1;i<=n+1;i++)
	{
		while(r+1<i&&x[i]-x[r+1]>=a) r++;
		if(i>=2&&x[i-1]-x[i-2]<b) l=i-2;
		if(x[i]-x[i-1]>=a) f[i]=f[i-1];
		f[i]=(f[i]+Get(l,min(i-2,r)))%mod;
		s[i]=s[i-1];
		if(x[i+1]-x[i-1]>=b) s[i]=(s[i]+f[i])%mod;
	}
	printf("%d\n",f[n+1]);
}
oj-【基础图论】最优布线问题 题目描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们中间有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。 为了节省费用,我们采用数据的间接传输手段,即一台计算机可以间接的通过若干台计算机(作为中转)来实现与另一台计算机的连接。 现在由你负责连接这些计... 阅读详情

相关推荐

DAC8760高精度数模转换器原理与工业级嵌入式应用

数模转换器(DAC)是工业测控系统中实现数字指令到模拟执行的关键接口,其核心性能由分辨率、线性度、温漂及系统级TUE(总未调整误差)共同决定。DAC8760作为一款16位四象限精密DAC,集成了可编程增益放大器(PGA)、内部基准源与SPI高速接口,支持电压/电流双模输出,显著提升闭环控制精度与硬件适配灵活性。其技术价值在于将高精度模拟前端与数字控制深度耦合,满足PLC、ATE及激光偏置等严苛场景对长期稳定性与多通道同步性的要求。本文围绕DAC8760的寄存器配置、HAL/LL驱动实践、PCB布局规范、现场

weixin_42315569的博客 583

【Atcoder】AGC009 B-E简要题解

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

远行客 380

Ubuntu22.04+PX4+Gazebo:从零到一构建无人机仿真开发环境

本文详细介绍了在Ubuntu22.04系统下搭建PX4+Gazebo无人机仿真开发环境的完整流程。从基础环境配置、PX4固件安装到Gazebo仿真环境搭建,提供了实用命令和常见问题解决方案,帮助开发者快速构建高效的无人机开发环境。

weixin_29243279的博客 436

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

手把手教你用HI3516CV610搭建智能安防摄像头(附完整开发资料)

本文详细介绍了基于海思HI3516CV610 SOC搭建智能安防摄像头的完整开发流程,包括硬件选型、系统架构设计、开发环境搭建、智能分析功能开发及系统调优。通过实战案例,展示了如何利用内置NPU实现人形检测和异常行为分析,并提供了量产测试方案,帮助开发者快速完成智能摄像头项目。

backprop5master的博客 541

专栏丨华为HN8145XR光猫获取超级管理员密码

摘要:本文详细介绍了华为HN8145xr光猫获取超级管理员权限的完整步骤。首先通过ONT使能工具补全shell,然后利用Telnet登录光猫后台进行操作。文章提供了多种获取超级密码的方法,包括配置文件解密、一键查询工具等,并针对联通光猫特别说明了默认密码格式(CUAdmin+后八位数字)。此外,还介绍了恢复出厂设置、修改SSID等实用操作,帮助用户完全掌控光猫设备。文末附有详细的命令行操作指南,适合有一定技术基础的用户参考。

8259

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

AutoSAR EcuM系列01- EcuM模块的功能概述和变体类型

在【ECU的软硬件架构】文章中我们了解ECU的功能和组成,那么ECU具体是怎么启动的呢?我们知道,AutoSAR标准架构有三层,即APPL应用层、RTE层和BSW层。而这些层又被进一步划分为更多单独的组件,如BSW层可能有80多个组件。在ECU启动时,这些组件必须相互交互,有时也必须以某种顺序交互。这些组件的启动顺序由ECU管理器模块或EcuM处理。EcuM负责整个ECU的初始化和去初始化,包括对一些系统模块如。......

1766

[AGC009C Division into Two] [DP好题]

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

Orzage的博客 411

软考中级网络工程师通关指南:从学习到实战

本文是软考中级网络工程师备考实用指南,先介绍备考前准备,包括考试时间、形式、分值等基本信息,及引导读者评估自身基础以制定学习计划;再推荐官方教材、辅导书籍、在线课程平台和学习社区等优质资源。随后梳理网络协议、设备配置、安全、规划设计等重点知识,剖析企业网络故障排查与园区网络设计典型案例。还分享真题使用、解题技巧、错题本建立等习题解答方法,给出分阶段备考、时间安排与总结反思的备考计划,最后提供考场答题顺序、检查及心态调整策略,助力考生高效备考、顺利通关。

邓邓子的博客 1852

【RT-DETR涨点改进】全网独家创新、细节涨点改进篇 | AAAI 2025 | 将 CEM 颜色增强模块引入RT-DETR ,目标检测不再惧怕雾天和低光检测、小目标检测、遥感目标检测高效涨点

本文提出了一种新型结构引导去雾网络(SGDN),通过双色引导桥(BGB)和色彩增强模块(CEM)有效解决雾霾图像去雾问题。BGB利用YCbCr空间的纹理特征引导RGB特征恢复,CEM通过聚合YCbCr通道信息增强RGB色彩感知。实验证明该方法在真实雾霾数据集上优于现有技术,能同时保持色彩准确性和纹理清晰度。文章还提供了完整的代码实现和模型配置指南,包括三种改进版RT-DETR网络结构(rtdetr-l/r18/r50-CEM.yaml),为图像去雾和目标检测任务提供了实用解决方案。

Ai缝合怪、助力小伙伴高效发论文 351

[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-

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

【WRF数据介绍第一期】静态地理数据介绍及下载

WRF数据介绍第一期:静态地理数据介绍及下载

WW、forever的博客 4810

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【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

[ AT_agc009_c]Division into Two

TXL。

PocketSam的博客 501

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

AtCoder Grand Contest 009 C - Division into Two 动态规划

题意 给出n个数S[1..n]和两个数A,B。问有多少种把n个数分成两个集合的方案,满足第一个集合中任意两个数差的绝对值不小于A,第二个集合中任意两个数差的绝对值不小于B。 n 分析 一开始想的线段树优化建图+2-SAT求方案数。。。 首先要来找一波性质: 先把S从小到大排序,然后不妨设A<B" role="presentation" style="position: rel

beginend 356

[agc009d]Uninity

前言我居然一开始觉得点分治最优秀。题目大意类似点分治过程,只不过分治中心任意选择。 求点分树最小深度。做法首先直接点分治深度不超过log,所以答案上界是log。 假设我们给每个点一个标号表示它在点分树的深度。 那么我们发现,对于两个标号同为k的点,它们的路径上一定存在一个点的标号大于k。 我们定义一个数k对于子树x是良好的,要满足x的标号为k或x子树中存在一点y标号为k且y到x路径上没有标号

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

【中石油OJ-5623】 Division into Two

题目描述There is a set consisting of N distinct integers. The i-th smallest element in this set is Si. We want to divide this set into two sets, X and Y, such that:The absolute difference of any two disti...

qq_40792618的博客 391

openjudge-noi-2.5-7084:迷宫问题

总时间限制:  1000ms 内存限制:  65536kB   描述 定义一个二维数组:  int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走...

dogeding233 1250

AGC012B Splatter Painting

传送门 题意: 给你一个n个节点的简单无向图(无重边、自环),含有m条边。现在有q次操作。初始的时候所有点的颜色都为0。 每一次操作的描述如下:选择一个节点v[i],将与这个节点的距离小于等于d[i]的点全部都染成颜色c[i]。 现在要求你回答,完成这q次操作之后,每一个点的最终颜色是什么。 题解: 这道题d很小(≤10),可以暴力。但是直接暴力有可能会T(举个例子:菊花图)。 考虑将操作倒过来,...

dogeding233 1130

作业-FBI树(fbi-tree.cpp)

题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 1) T的根结点为R,其类型与串S的类型相同; 2) 若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1构造R的左子树T1,由右子串S2构造R的右子树T2。 现在给定一个长度为2^N的“01”串,请用上述构造方法构造出一棵FBI树,

dogeding233 1043

(1151): 循环比赛

时间限制: 1 Sec  内存限制: 64 MB 题目描述 设有n个选手的循环比赛。其中n=2的m次方。要求每名选手要与其他n-1名选手都赛一次。每名选手至少每天比赛一次,循环赛共进行了n-1天,要求每天没有选手轮空。 输入:m 输出:表格形式的比赛安排表。 输入 第1行:1个整数M(1&lt;=M&lt;=8) 输出 N(N=2^M)-1天的比赛安排表。数据以N*N的矩阵形式输出。每...

dogeding233 1020
上一篇: AGC001E BBQ Hard
下一篇: AGC009D Uninity
dogeding
博客等级 码龄10年 31粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值