首页 > 其他分享 >[AGC009C] Division into Two

[AGC009C] Division into Two

时间:2024-02-23 13:11:09浏览次数:27  
标签:AGC009C Division cout int into Two ans

先假定 \(A\le B\),然后先判断无解,
如果 \(a_{i+2}-a_i<B\),无论怎么分配都是不合法的,直接判掉。
然后考虑 dp,\(f_i\) 表示选了前 \(i\) 个数,其中第 \(i\) 个数是归为 \(A\) 集合的方案数。
其中不难发现可转移的状态是一段区间,状态 \(f_j\) 可以转移仅当 \(a_i-a_j \ge A\) 且 \(a_{j+1}\) 到 \(a_{j-1}\) 都可以被归到 \(B\) 集合。
使用前缀和优化,时间复杂度 \(O(n)\)。

const int N = 1e5 + 5;
int n;
ll A, B, a[N];
int f[N], s[N];
void solve() {
	cin >> n >> A >> B;
	if(A < B) swap(A, B);
	FOR(i, 1, n) cin >> a[i];
	FOR(i, 1, n - 2) {
		if(a[i + 2] - a[i] < B) {
			cout << 0 << endl;
			return;
		}
	}
	f[0] = s[0] = 1;
	int l = 0, r = 0;
	FOR(i, 1, n) {
		while(l < i && a[i] - a[l + 1] >= A) l++;
		if(r <= l) f[i] = (s[l] - (r ? s[r - 1] : 0) + P) % P;
		s[i] = (s[i - 1] + f[i]) % P;
		if(i > 1 && a[i] - a[i - 1] < B) r = i - 1; 
	}
	int ans = 0;
	ROF(i, n, 0) {
		ans = (ans + f[i]) % P;
		if(i < n && a[i + 1] - a[i] < B) break;
	}
	cout << ans << endl;
}

标签:AGC009C,Division,cout,int,into,Two,ans
From: https://www.cnblogs.com/kevinlikescoding/p/18029283

相关文章

  • Hive insert into 竟然覆盖了原来的数据
      本文章向大家介绍Hiveinsertinto竟然覆盖了原来的数据,主要包括Hiveinsertinto竟然覆盖了原来的数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 问题:在使用hive的insertinto往表里插入数据时,却发现原来的数......
  • [970] Combine multiple Excel files into one Excel file with multiple sheets
    YoucancombinemultipleExcelfilesintooneExcelfilewithmultiplesheetsusingthePandaslibraryinPython.Here'sageneralapproach:ReadeachExcelfileintoaPandasDataFrame.CreateanExcelwriterobjectusingPandas.WriteeachDataFra......
  • [971] [Keep original formats] Combine multiple Excel files into one Excel file w
    IftheexistingExcelfilehasspecialformattingthatpreventsreadingitdirectlywithPandas,youcanusealibrarylikeopenpyxltohandletheappendingofnewsheets.Here'showyoucanachievethis:importosfromopenpyxlimportload_workbook......
  • js scrollIntoView()
    DOM规范中没有涉及的一个问题是如何滚动页面中的某个区域。为填充这方面的缺失,不同浏览器实现了不同的控制滚动的方式。在所有这些专有方法中,HTML5选择了标准化scrollIntoView()。scrollIntoView()方法存在于所有HTML元素上,可以滚动浏览器窗口或容器元素以便包含元素进入视口......
  • [EFI]DELL-7472电脑 Hackintosh 黑苹果efi引导文件
    硬件型号驱动情况主板DELL-7472处理器IntelCorei7-8550U已驱动内存16GBRAMDDR4已驱动硬盘PNYSSDNVME500GB已驱动显卡IntelUHDGraphics620已驱动声卡瑞昱RealtekALC256@英特尔HighDefinitionAudio控制器已驱动网卡瑞昱RTL8168/8111/8112GigabitEthernetContro......
  • C# NPOI reflection import data into excel file
    usingSystem.ComponentModel.DataAnnotations;usingSystem.Diagnostics;usingSystem.Runtime.CompilerServices;usingSystem.Security.Cryptography;usingSystem.Text;usingNewtonsoft.Json;usingSystem.Reflection;usingNPOI.SS.Formula.Functions;usingNPO......
  • [EFI]英特尔 猛兽峡谷NUC11BTM电脑 Hackintosh 黑苹果efi引导文件
    硬件型号驱动情况主板猛兽峡谷NUC11BTM处理器Intel®Core™i9-11900KB处理器已驱动内存英睿达DDR416G3200MHz*2已驱动硬盘铠侠RC201T已驱动显卡AMDRadeonRX6600XT已驱动声卡USB音频已驱动网卡以太网控制器i225-LM已驱动无线网卡+蓝牙奋威t919Sonoma以上版本自行安装补......
  • [LeetCode] 2966. Divide Array Into Arrays With Max Difference
    Youaregivenanintegerarraynumsofsizenandapositiveintegerk.Dividethearrayintooneormorearraysofsize3satisfyingthefollowingconditions:Eachelementofnumsshouldbeinexactlyonearray.Thedifferencebetweenanytwoelementsin......
  • 神经网络优化篇:将 Batch Norm 拟合进神经网络(Fitting Batch Norm into a neural netwo
    将BatchNorm拟合进神经网络假设有一个这样的神经网络,之前说过,可以认为每个单元负责计算两件事。第一,它先计算z,然后应用其到激活函数中再计算a,所以可以认为,每个圆圈代表着两步的计算过程。同样的,对于下一层而言,那就是\(z_{1}^{[2]}\)和\(a_{1}^{[2]}\)等。所以如果没有应用Bat......
  • [EFI]三星NP350XAA 电脑 Hackintosh 黑苹果efi引导文件
    硬件型号驱动情况主板NP350XAA处理器赛扬双核3865U已驱动内存4GB (三星DDR3)已驱动硬盘西数WDCPCSN730SDBPNTY-256G-1027(256GB/固态硬盘)已驱动显卡IntelGMAHD610已驱动声卡暂无更多信息已驱动网卡暂无更多信息已驱动无线网卡+蓝牙暂无更多信息支持系统版本✅Mac......