7.16做题总结

news2024/11/9 3:55:08

今日也是让我看到了繁神的ACM历程,确实,我觉得繁神的历程里面确实有一句很好

不想打算法竞赛了。这是因为有别的事情要做,不是因为我打不动。
  
不想打比赛凌晨两点才睡了。因为我会困。
  
不想在群里和高水平选手水群了,因为我想独处。
  
不想去打区域赛,和 ICPC 选手多交流什么了,因为感觉中国选手都没几个好好打的。
  
不想出题了,一是因为我菜,二是因为我没有时间。
  
不想一年拉着队友训练三百场,因为我更想读读论文。
  
不想把过多意义投入到比赛中,因为这不是我想看到自己的样子,也不会让我成为我想看到的未来自己的样子。

 好了,话不多说,进入正题

P4653 [CEOI2017] Sure Bet

 题意:就是说给你a,b两组灯泡,然后问你什么时候才有最大的最小可能收益

思路:先从大到小排序,因为你价值越大,你的最小可能收益才会越大,因此,我们排序之后,先将,L指针指向a数组,R指针指向b数组,然后,我们现将b数组的最大值加进来,然后如果a的总价值小于b,然后就加进来一个a的灯泡,然后依次让指针往后走,然后找出这个过程中的最大的最小权值即可,灰常的简单

#include<bits/stdc++.h>
using namespace std;
#define int long long

int n;
double a[100005];
double b[100005];
double suma,sumb;
int l,r;
double ans;
bool cmp(double a,double b)
{
	return a>b;
}

double Max(double a,double b)
{
	return a>b?a:b;
}

double Min(double a,double b)
{
	return a<b?a:b;
}

signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i]>>b[i];
	}
	sort(a+1,a+1+n,cmp);
	sort(b+1,b+1+n,cmp);
	for(r=1;r<=n;r++)
	{
		sumb+=b[r];
		ans=Max(ans,Min(sumb-l-r,suma-l-r));
		while(suma<sumb&&l<=n)
		{
			suma+=a[++l];
			ans=Max(ans,Min(sumb-l-r,suma-l-r));
		}
	}
	printf("%.4lf\n",ans);
	return 0;
}

P2216 [HAOI2007] 理想的正方形

题意:就是说给你一个矩阵,然后问你找出一个n*n的矩阵,然后找出每块矩阵的最大值和最小的差的小值

思路:二维单调队列秒了,先用单调递增队列先对行进行求单调递增队列,然后再对已经变换过的行的数组再对列进行求最大值,反正就是先对行变化,再对列变换

最小值同理,二维单调队列就解决了

#include<bits/stdc++.h>
using namespace std;
#define int long long

int n,m,k;
int a[1005][1005];
deque<int> q;
int premax_x[1005][1005];
int premax_y[1005][1005];
int premin_x[1005][1005];
int premin_y[1005][1005];

signed main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
		}
	}
	//先求极大值
	//先在行求最大值 
	for(int i=1;i<=n;i++)
	{
		q.clear();
		for(int j=1;j<=m;j++)
		{
			if(!q.empty()&&j-q.front()>=k)
			{
				q.pop_front();
			}
			while(!q.empty()&&a[i][j]>a[i][q.back()])
			{
				q.pop_back();
			}
			q.push_back(j);
			if(j>=k)
			{
				premax_x[i][j]=a[i][q.front()];
			}
		}
	}
	
	//列也求最大值
	for(int i=1;i<=m;i++)
	{
		q.clear();
		for(int j=1;j<=n;j++)
		{
			if(!q.empty()&&j-q.front()>=k)
			{
				q.pop_front();
			}
			while(!q.empty()&&premax_x[j][i]>premax_x[q.back()][i])
			{
				q.pop_back();
			}
			q.push_back(j);
			if(j>=k)
			{
				premax_y[j][i]=premax_x[q.front()][i];
			}
		}
	} 
	
	//再求极小值 
	//先在行求最小值 
	for(int i=1;i<=n;i++)
	{
		q.clear();
		for(int j=1;j<=m;j++)
		{
			if(!q.empty()&&j-q.front()>=k)
			{
				q.pop_front();
			}
			while(!q.empty()&&a[i][j]<a[i][q.back()])
			{
				q.pop_back();
			}
			q.push_back(j);
			if(j>=k)
			{
				premin_x[i][j]=a[i][q.front()];
			}
		}
	}
	
	//列也求最小值
	for(int i=1;i<=m;i++)
	{
		q.clear();
		for(int j=1;j<=n;j++)
		{
			if(!q.empty()&&j-q.front()>=k)
			{
				q.pop_front();
			}
			while(!q.empty()&&premin_x[j][i]<premin_x[q.back()][i])
			{
				q.pop_back();
			}
			q.push_back(j);
			if(j>=k)
			{
				premin_y[j][i]=premin_x[q.front()][i];
			}
		}
	} 
	int ans=0x3f3f3f3f;
	for(int i=k;i<=n;i++)
	{
		for(int j=k;j<=m;j++)
		{
			ans=min(ans,premax_y[i][j]-premin_y[i][j]);
		}
	}
	cout<<ans;
	return 0;
}

 P1725 琪露诺

题意:就是说对于一个坐标i,他只能移动到i+L~i+R这个区间范围内,然后问你最大手机到的冰冻指数是多少

思路:一开始我以为这就是个简单的动态规划,因为

dp[i]=max(dp[i-k])+a[i]    (   L<=k<=R   )

然后枚举L到R里面找到最大的即可,我也想这个也配绿题,降成橙题感觉还差不多,果然四个T也是成功打脸了我的这种感觉,因为需要优化,但是维护区间的最值,我们可以想到哪些方法呢,一个是老朋友线段树,还有一个是老朋友单调队列,那么我们该用哪个方法呢?那肯定是单调队列啊

O(N)的时间复杂度,比线段树快多了,

因此此题就为单调队列优化dp

 

#include<bits/stdc++.h>
using namespace std;
#define int long long

int n,l,r;
int a[200005];
deque<int> que;
int dp[200005];
int ans=-0x3f3f3f3f;
signed main()
{
	cin>>n>>l>>r;
	int k=r-l+1;
	for(int i=0;i<=n;i++)
	{
		cin>>a[i];
	}
	memset(dp,128,sizeof(dp));
	dp[0]=0;
	for(int i=0;i<=n-l;i++)
	{
		if(!que.empty()&&i-que.front()>=k)
		{
			que.pop_front();
		}
		while(!que.empty()&&dp[que.back()]<dp[i])
		{
			que.pop_back();
		}
		que.push_back(i);
		dp[i+l]=dp[que.front()]+a[i+l];
	}
	for(int i=n-r+1;i<=n;i++)
	{
		ans=max(ans,dp[i]);
	}
	cout<<ans;
	return 0;
}

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

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

相关文章

BayesPrism(贝叶斯棱镜法)可提取单细胞数据去卷积后将信息映射至bulkRNA数据

贝叶斯棱镜法作为一种工具可以根据scRNA数据(作为先验模型)去推断bulkRNA数据中肿瘤微环境组成(不同免疫细胞组分/不同细胞群)和基因表达情况。 开发者展示的图片就很形象了&#xff0c;左边图展示了把标注了不同细胞类型的单细胞数据作为先验信息(prior info)的基因信息和bul…

【内网渗透】内网渗透学习之域渗透常规方法

域渗透常规方法和思路 1、域内信息收集1.1、获取当前用户信息1.1.1、获取当前用户与域 SID1.1.2、查询指定用户的详细信息 1.2、判断是否存在域1.2、查询域内所有计算机1.3、查询域内所有用户组列表1.4、查询所有域成员计算机列表1.5、获取域密码信息1.6、获取域信任信息1.7、查…

STM32智能环境监测系统教程

目录 引言环境准备智能环境监测系统基础代码实现&#xff1a;实现智能环境监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;环境监测与管理问题解决方案与优化收尾与总结 1. 引言 智能环境监测系统通…

Redis的配置优化、数据类型、消息队列

文章目录 一、Redis的配置优化redis主要配置项CONFIG 动态修改配置慢查询持久化RDB模式AOF模式 Redis多实例Redis命令相关 二、Redis数据类型字符串string列表list集合 set有序集合sorted set哈希hash 三、消息队列生产者消费者模式发布者订阅者模式 一、Redis的配置优化 redi…

OSI 七层模型与五层模型

OSI&#xff08;开放系统互连&#xff09;七层模型和五层模型是描述计算机网络协议的两种不同层次划分方法。两者用于帮助理解和设计网络协议&#xff0c;但它们在层次划分上有所不同。

手机数据恢复:适用于 Android 的 4 大数据恢复应用程序

没有人希望丢失设备上的重要数据。如果发生这种情况&#xff0c;请不要惊慌。以下是可帮助您恢复丢失或删除的数据的 Android 数据恢复应用程序列表。 有多种方法可以恢复已删除或丢失的 Android 数据&#xff0c;最简单、最快捷的方法是使用第三方恢复应用程序。这些应用程序会…

Redis 中String类型操作命令(命令演示,时间复杂度,返回值,注意事项)

String 类型 文章目录 String 类型set 命令get 命令mset 命令mget 命令get 和 mget 的区别incr 命令incrby 命令decr 命令decrby 命令incrbyfloat 命令append 命令getrange 命令setrange 命令 字符串类型是 Redis 中最基础的数据类型&#xff0c;在讲解命令之前&#xff0c;我们…

新增支持GIS地图、数据模型引擎升级、增强数据分析处理能力

为了帮助企业提升数据分析处理能力&#xff0c;Smartbi重点围绕产品易用性、用户体验、操作便捷性进行了更新迭代&#xff0c;同时重磅更新了体验中心。用更加匹配项目及业务需求的Smartbi&#xff0c;帮助企业真正发挥数据的价值&#xff0c;赋能决策经营与管理。 Smartbi用户…

昇思25天学习打卡营第7天 | 基于MindSpore的GPT2文本摘要

本次打卡基于gpt2的文本摘要 数据加载及预处理 from mindnlp.utils import http_get# download dataset url https://download.mindspore.cn/toolkits/mindnlp/dataset/text_generation/nlpcc2017/train_with_summ.txt path http_get(url, ./)from mindspore.dataset impor…

比华为、特斯拉更大的野心

作者 | 艾泊宇 最近百度自动驾驶的网约车萝卜快跑在武汉大规模上路了。 同样是做自动驾驶&#xff0c;你看百度、华为、特斯拉&#xff0c;他们三家的思路完全不同。 但是可以看出来&#xff0c;各自完全不同的用意和意图&#xff0c;以及格局的高低。 华为很稳&#xff0c;…

BernNet Learning Arbitrary Graph Spectral Filters via Bernstein Approximation

发表于:neurips21 推荐指数: #paper/⭐⭐ 设定:在本文中,h是过滤器. bernstein 多项式逼近(这个证明有点稀里糊涂的,反正我觉得一点点问题,可能因为我水平低) p K ( t ) : ∑ k 0 K θ k ⋅ b k K ( t ) ∑ k 0 K f ( k K ) ⋅ ( K k ) ( 1 − t ) K − k t k . p_K(t):…

太牛了!从来没想到加密软件这么好用

还在为无法保证重要信息安全烦恼吗&#xff1f;金刚钻信息网站&#xff0c;一个集数据防泄密系统、企业数据云盘存储为一身的多个安全产品网站&#xff0c;为企业文件保驾护航&#xff01; 一、全方位防护&#xff0c;无懈可击 数据防泄密系统从电脑内部&#xff0c;电脑外部多…

AV1 编码标准熵编码技术概述

AV1熵编码 AV1编码技术是一种开源的视频编解码标准&#xff0c;由开放媒体联盟&#xff08;AOMedia&#xff09;开发&#xff0c;旨在提供高效的视频压缩&#xff0c;同时避免复杂的专利授权问题。在熵编码方面&#xff0c;AV1采用了一种多符号上下文自适应算术编码技术&#x…

EMR 集群时钟同步问题及解决方案An error occurred (InvalidSignatureException)

目录 1. 问题描述2. 问题原因3. 解决过程4. 时钟同步的重要性5. Linux 系统中的时钟同步方式6. 检查 Linux 系统时钟同步状态7. EMR 集群中的时钟同步配置8. 时钟同步对大数据组件的影响9. 监控和告警策略10. 故障排除和最佳实践11. 自动化时钟同步管理12. 时钟同步与数据一致性…

每日复盘-20240715

20240715 六日涨幅最大: ------1--------300807--------- 天迈科技 五日涨幅最大: ------1--------300807--------- 天迈科技 四日涨幅最大: ------1--------300807--------- 天迈科技 三日涨幅最大: ------1--------300713--------- 英可瑞 二日涨幅最大: ------1--------3007…

AV1技术学习:Translational Motion Compensation

编码块根据运动矢量在参考帧中找到相应的预测块&#xff0c;如下图所示&#xff0c;当前块的左上角的位置为(x0, y0)&#xff0c;在参考帧中找到同样位置(x0, y0)的块&#xff0c;根据运动矢量移动到目标参考块&#xff08;左上角位置为&#xff1a;(x1, y1)&#xff09;。 AV1…

【java】力扣 买卖股票的最佳时机 动态规划

文章目录 题目链接题目描述思路代码 题目链接 121.买卖股票的最佳时机 题目描述 思路 本题主要用到了动态规划 1.先定义dp数组的含义 先定义一个二维数组dp 然后dp[i][0]来表示第i天持有股票的现金 dp[i][1]代表第i天不持有股票的现金 刚开始的现金为0&#xff0c;当第i天买…

mysql索引值

mysql 索引值生成规则 MySQL索引值是如何生成的取决于具体的数据类型和列的具体定义。对于大多数数据类型&#xff0c;MySQL会为索引键值使用原始的数据。对于字符串类型&#xff08;如VARCHAR, CHAR, TEXT&#xff09;&#xff0c;索引键值可能是字符串的前缀&#xff0c;这是…

二.1 信息存储(1.1-1.3)

大多数计算机使用8位的块&#xff0c;或者字节&#xff08;byte&#xff09;&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c;称为虚拟内存&#xff08;virtual memory&#xff09;。内存的…

Home Assistant在windows环境安装

Home Assistant是什么&#xff1f; Home Assistant 是一个开源的智能家居平台&#xff0c;旨在通过集成各种智能设备和服务&#xff0c;提供一个统一的、可自定义的家庭自动化解决方案。它可以允许用户监控、控制和自动化家中的各种设备&#xff0c;包括灯光、温度、安全系统、…