首页 > 其他分享 >2024/12/21课堂记录

2024/12/21课堂记录

时间:2024-12-21 21:41:55浏览次数:8  
标签:12 21 int mid 2024 tail ans dp 200005

目录

  1. 绿色通道
  2. 最大连续和

二分答案与单调队列的缝合怪

二分答案的基础上,把dp优化,用单调队列检验其合理性

代码很简单,真的就是把两个模板缝合在一起

#include<iostream>
using namespace std;
int dp[50005],a[50005],n,t;
int q[50005];
int head,tail; 
const int inf=0x3f3f3f3f;// 正无穷 
//  二分答案,最大值最小的问题 
//  dp[i]: 第i道题目必须写,往前最多可以空mid道题目 的最小花费时间 
//  朴素的dp 
int check(int mid)
{
	// 因为1-(mid+1)题前面都可以空着不写 
	//前面mid+1道题目,必须选一道 
    head=0,tail=1;
    for(int i=1;i<=n;i++)
    {
    	while(head<tail && q[head]<i-mid-1) head++;
    	dp[i]=dp[q[head]]+a[i];
    	while(head<tail &&  dp[q[tail-1]]>dp[i])tail--;
    	q[tail++]=i;
	}
    int ans=inf;
    for(int i=n-mid;i<=n;i++)
    {
    	ans=min(ans,dp[i]);
	}
	return ans<=t;
} 

int main()
{
	cin>>n>>t;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	//二分答案 
	int l=0,r=n;
	int ans=0x3f3f3f3f;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(check(mid)) // 二分最长空题的长度 
		{
			r=mid-1;
			ans=mid;
		}
		else
		{
			l=mid+1;
		}
	}
	cout<<ans<<endl;
	return 0; 
}

 


这个就更简单了,在单调队列模板的基础上,把原始数据变成前缀和,然后套模板,完事!

和扫描那题差不多,只不过吧最开始输入的数变成了前缀和,然后扫描直接维护输入进去的数,这个维护前缀和,然后这个要和全局变量进行比较,取最大值
 #include<iostream>
using namespace std;
int s[200005],a[200005],n,m;
int q[200005],dp[200005];
int head,tail; 
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		s[i]=s[i-1]+a[i];  //前缀和:s[i]=a[1]+a[2]+.....a[i] 
	}
	int ans=-0x3f3f3f3f; 
	head=0,tail=1;  //加入0编号 
	for(int i=1;i<=n;i++)
	{
		while(head<tail && q[head]<i-m)head++;
		
		ans=max(s[i]-s[q[head]],ans);
		
		while(head<tail && s[q[tail-1]]>s[i])tail--;
		q[tail++]=i;
	}
	/*
	int ans=-0x3f3f3f3f;
	for(int i=1;i<=n;i++)
	{
		int tmp=-0x3f3f3f3f;
		for(int j=i-1;j>=max(i-m,1);j--)
		{
			tmp=max(tmp,s[i]-s[j]); //a[j+1]+a[j+2]+...a[i] 
		}
		ans=max(tmp,ans);
	}
	*/

	cout<<ans<<endl;
	return 0; 
}

 

标签:12,21,int,mid,2024,tail,ans,dp,200005
From: https://www.cnblogs.com/yongshao/p/18621410

相关文章

  • JetBrains WebStorm 2024 破解教程附资源(亲测可用)
    1、下载安装包WebStorm20242、安装教程1、双击安装,弹窗安装对话框  2、更改安装目录至D盘,点击下一步 3、 都进行勾选,点击下一步 4、默认,点击安装 5、安装过程中,等待安装完成,选择之后重启,点击完成 6、激活,打开随行下载的文件夹,找到激活工具,双击执行  ......
  • 2024年华为OD机试真题-字符串变换最小字符串-C++-OD统一考试(E卷)
     最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。 题目描述࿱......
  • 21精灵图-光标显示-相对定位-固定定位
    一、认识精灵图CSSSprite什么是CSSSprite,是一种CSS图像合成技术,将各种小图片合并到一张图片上,然后利用CSS背景定位来显示对应的图片部分有人翻译为:CSS雪碧,CSS精灵使用CSSSprite的好处能够减少网页的http请求数量,加快网课响应速度,减轻服务器压力减小图片总大小解决了图片......
  • 记录我的 oi 生涯(2018.9~2024.11)
    写在最前面现在想来,貌似我第一次听说并接触dev-c++可能是在小学二年级的时候。那时候我在上一个机器人搭建兴趣课,老师(好像姓陈?)给我们展示了有关于编程的软件,并向我们许诺会在四年级的时候教学。不过我在三升四的那个暑假就已经不上那个课了,也不知道他后来真的教了没有。接下......
  • 【专题】2024年中国新能源汽车用车研究报告汇总PDF洞察(附原数据表)
    原文链接: https://tecdat.cn/?p=38564本年度,国家及地方政府持续发力,推出诸多政策组合拳,全力推动汽车产业向更高质量转型升级,积极鼓励消费升级,并大力推行以旧换新等惠民生、促发展举措。尤为引人注目的是,在新能源汽车领域,补贴力度空前提升,在原有税费减免政策基础上,购置补贴标准一......
  • 【专题】大模型时代的具身智能2024报告汇总PDF洞察(附原数据表)
    原文链接: https://tecdat.cn/?p=38597在当今科技飞速发展的时代,大模型的崛起如同一股强劲的浪潮,席卷了整个科技领域,而具身智能则在这浪潮中崭露头角,成为人工智能领域备受瞩目的前沿方向。随着数据的海量增长与计算能力的迅猛提升,大模型为具身智能注入了强大的智慧源泉,使其能够以......
  • 2024-12-16:使数组中所有元素相等的最小开销。用go语言,给定一个整数数组 nums 以及两个
    2024-12-16:使数组中所有元素相等的最小开销。用go语言,给定一个整数数组nums以及两个整数cost1和cost2,你可以进行以下两种操作多次:1.选择数组中的某个元素的下标i,将nums[i]增加1,花费为cost1。2.同时选择数组中两个不同的下标i和j,将nums[i]和nums[j]都增加......
  • 2024-12-21:从魔法师身上吸取的最大能量。用go语言,在一个神秘的地牢里,有 n 名魔法师排
    2024-12-21:从魔法师身上吸取的最大能量。用go语言,在一个神秘的地牢里,有n名魔法师排成一列。每位魔法师都有一个能量属性,有的提供正能量,而有的则会消耗你的能量。你被施加了一种诅咒,吸收来自第i位魔法师的能量后,你会立即被传送到第(i+k)位魔法师。在这个过程中,你会......
  • 1221
    成都的冬天,是带着厚重眼镜的,挂着风干鼻涕的历史系学生,可能强于一具新鲜的尸体。痛苦是我的血,我切开静脉,看她们提着长裙从容走出我身外,向阳台上的两只刚刚飞走的麻雀微笑执意。致敬!我永远的朋友,她们竟慷慨地愿意分享我的脏话。致敬!我本以为她们人数不多,但现在看来她们游行的队伍浩......
  • 2024 EC Final 前集训记录
    ECF23LinkC.EqualSums记值域为\(w\)并认为\(n,m\)同阶,直接背包的话和的值域能够达到\(O(nw)\),统计每个答案的复杂度也是\(O(nw)\),于是总复杂度是\(O(n^3w)\)。注意到最后需要维护的信息仅仅是\(\sumx_i=\sumy_j\Leftrightarrow\sumx_i-\sumy_j=0\),记这......