当前位置: 首页 > article >正文

蓝桥杯备赛 Day9 构造

构造

1.要点

考察总结归纳能力,没有固定解法

2.题目

2023平方差

(1)找到规律先存到set里面,然后要考虑最大开到1e6,然后暴力能得70分
(2)再观察规律,y为奇数或者偶数,z为奇数或者偶数,可以得到满足条件的为奇数和4的倍数,但是遍历会超时,可以类似于前缀和思想,求[1,r]满足条件总和-[1,l-1]满足条件总和,奇数个数为(x+1)/2(例如1,3,5,7,x=7+1=8/2=4,x=8+1=9/2=4),4的倍数个数为x/4(例如4,8,x=8/4=2,x=9/4=2)
代码;

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
ll l,r;

ll get_num(ll x){ //输入和输出都为ll
	return (x+1)/2+x/4;
}

int main(){
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>l>>r;
	ll cnt=get_num(r)-get_num(l-1);
	cout<<cnt;
	return 0;
} 
2018倍数问题

学习:
(1)先暴力,不过要尽可能加多一点break条件,避免超时

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const int N=1e5+10;
ll a[N],n,K,i,j,k,maxn;

int main(){
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>n>>K;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n);
	for(i=n-1;i>=2;i--){
		j=i-1,k=i-2;
		if(a[i]+a[j]+a[k]<maxn)	break; //break
		for(j=i-1;j>=1;j--){
			k=j-1;
			if(a[i]+a[j]+a[k]<maxn)	break;  //break
			for(int k=j-1;k>=0;k--){
				if((a[i]+a[j]+a[k])%K==0){
					maxn=max(maxn,a[i]+a[j]+a[k]);
				}
				if(a[i]+a[j]+a[k]<maxn)	break; //break
			}
		}	
	}
	cout<<maxn;
	return 0;
}

http://www.kler.cn/a/563601.html

相关文章:

  • 数据结构与算法面试专题——桶排序
  • Remainder Problem CF1207F
  • 【PHP】Zend JIT(Just-In-Time)编译
  • 第2章_保护您的第一个应用程序
  • 深度学习中卷积层(Conv)、BN层(Batch Normalization)和 ReLU层(Rectified Linear Unit)的详细介绍
  • 初识XML
  • Unity XR-XR Interaction Toolkit开发使用方法(七)组件配置(XR Ray Interactor)
  • C++ STL(一)std::vector std::array
  • 玩机日记 15 使用Lucky申请半永久的ssl证书,并且替换阿里云的自签名证书
  • 集合与反射
  • 算法平台的开源框架
  • PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 TIFF
  • 网页五子棋——项目测试
  • HarmonyOS Design 介绍
  • 基于ffmpeg+openGL ES实现的视频编辑工具-添加背景音乐(十)
  • vue+element-dialog:修改关闭icon / 遮罩层不能挡住弹窗 / 遮罩层不能遮挡元素
  • miqiu的分布式(三):JVM本地锁失效的三大典型场景
  • Java集合设计模式面试题
  • 5 分钟用满血 DeepSeek R1 搭建个人 AI 知识库(含本地部署)
  • 十一、大数据治理平台总体功能架构