蓝桥杯第四场双周赛(1~6)

news2024/11/29 0:39:41

1、水题

2、模拟题,写个函数即可

#define pb push_back
#define x first
#define y second 
#define int long long
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f;
const LL llinf = 5e18;

typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){
	return b > 0 ? gcd(b , a % b) : a;
}

LL lcm(LL a , LL b){
	return a / gcd(a , b) * b;
}
int n , m;
int a[N];
void init(int n){
	for(int i = 0 ; i <= n ; i ++){
		a[i] = 0;
	}
}
int qc(int a, int b , int c){
	return (a + b + c)/2;
}
int alg(int a , int b , int c){
	int cc = qc(a , b , c);
	return (cc * (cc - a) * (cc - b) * (cc - c));
}
void solve() 
{
	int a , b , c;
	cin >> a >> b >> c;
  if(a + b <= c || a + c <= b || b + c <= a){
    cout << -1;
  }
  else
	  cout << alg(a , b , c);
}            
signed main() 
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cout.precision(10);
    int t=1;
//	cin>>t;
    while(t--)
    {
    	solve();
    }
    return 0;
}

3、模拟题,找规律,第一行和最后一行只有两个数,其余行都是三个数。

     第一行特殊处理,其余行:  (x + 1) / 3 + 1 就是当前所在行rx - ((r - 1) * 3 - 1)就是所在行第s个数 , 每行第一个数是r - 1, 因此所在列就是r - 1 + s。

        

#include <iostream>
using namespace std;
int main()
{
  long long n , m;
  cin >> n >> m;
  for(int i = 0 ; i < m ; i ++){
    long long x;
    cin >> x;
    if(x <= 1){
      cout << 1 << " " << x + 1 << endl;
    }
    else{
      long long r = (x + 1) / 3 + 1;
      long long st = x - ((r - 1) * 3 - 1);
      long long dc = r - 1 + st;
      cout << r << " " << dc << endl;
    }

  }
  return 0;
}

4、考虑找到x^a , y^b , z^c的所有可能取值,取值上界应该为10^{12} * 10^5 = 10^{17}。由于2^{64}>10^{18},因此每个肯定不超过64种取值。用三重循环找到所有  x^a + y^b + z^c的所有取值,复杂度为O(64^3)。注意x^a*x<inf判断可能会爆long long , 所以在判断是否到达上界需要用x^a < inf/x。用数组或者set去存每种取值,然后从小到大排序。按照题目条件对每个询问搜索即可(二分/暴力)。整体复杂度O(q * 64^3)/O(q*log(64^3))

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f;
const LL llinf = 2e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){
	return b > 0 ? gcd(b , a % b) : a;
}

LL lcm(LL a , LL b){
	return a / gcd(a , b) * b;
}
int n , m;
LL a , b , c;
set<LL>st;
void solve() 
{
	cin >> a >> b >> c;
	vector<LL>aa , bb , cc;
	aa.pb(1);
	bb.pb(1);
	cc.pb(1);
	LL x = 1;
	while(a != 1 && x < llinf / a){
		x *= a;
		aa.pb(x);
	}
	LL y = 1;
	while(b != 1 && y < llinf / b){
		y *= b;
		bb.pb(y);
	}
	LL z = 1;
	while(c != 1 && z < llinf / c){
		z *= c;
		cc.pb(z);
	}
	for(int i = 0 ; i < aa.size() ; i ++){
		for(int j = 0 ; j < bb.size() ; j ++){
			for(int z = 0 ; z < cc.size() ; z ++){
				st.insert(aa[i] + bb[j] + cc[z]);
			}
		}
	}
	int m;
	cin >> m;
	for(int i = 0 ; i < m ; i ++){
		LL que;
		cin >> que;
		auto it = st.upper_bound(que);
		while(*it - que == 1){
			que = *it;
			it = st.upper_bound(que);
		}
		cout << que + 1 << " " << (*it - que - 1) << endl;
	}
}            
int main() 
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cout.precision(10);
    int t=1;
//	cin>>t;
    while(t--)
    {
    	solve();
    }
    return 0;
}

5、 方法很多,大体思路为将类型一样的宝石放到一起,将他们的作用区间进行合并,然后对整个数组进行区间修改。

        区间合并:将所有区间按照左端点排序,遍历区间,若当前左端点与前一个区间右端点有重合部分,则将他们合并成一个区间,否则将前一个区间存下来,当前区间为一个新的区间。

        区间修改:差分/树状数组/线段树。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){
	return b > 0 ? gcd(b , a % b) : a;
}

LL lcm(LL a , LL b){
	return a / gcd(a , b) * b;
}
int n , m;
int a[N];
void init(int n){
	for(int i = 0 ; i <= n ; i ++){
		a[i] = 0;
	}
}
struct BIT{//Binary indexed Tree(树状数组)
	int n;
	vector<int> tr;
	BIT(int n) : n(n) , tr(n + 1 , 0){
	}
	int lowbit(int x){
		return x & -x;
	}
	void modify(int x , int modify_number){
		for(int i = x ; i <= n ; i += lowbit(i)){
			tr[i] += modify_number;
		}
	}
	void modify(int l , int r , int modify_number){
		modify(l , modify_number);
		modify(r + 1 , -modify_number);
	}
	int query(int x){
		int res = 0;
		for(int i = x ; i ;  i -= lowbit(i))
			res += tr[i];
		return res;
	}
	int query(int x , int y){
		return query(y) - query(x);
	}
};
void solve() 
{
	int n , m , q;
	cin >> n >> m >> q;
	vector<int>len(m + 5);
	for(int i = 1 ; i <= m ; i++){
		cin >> len[i];
	}
	BIT bit(n);
	vector<pair<int,int>>que;
	for(int i = 0 ; i < q ; i ++){
		int x , y;
		cin >> x >> y;
		que.pb({x , y});
	}
	sort(que.begin() , que.end());
	int r = 0 , pos = 0;
	for(int i = 0 ;i < q ; i ++){
		if(que[i].x != pos){
			pos = que[i].x;
			r = 0;
		}
		bit.modify( max(r + 1, que[i].y) , min(que[i].y + len[pos] - 1 , n) , 1);
		r = min(que[i].y + len[pos] - 1 , n);
	}
	for(int i = 1 ; i <= n ; i ++){
		cout << bit.query(i)<<" ";
	}
}            
int main() 
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cout.precision(10);
    int t=1;
//	cin>>t;
    while(t--)
    {
    	solve();
    }
    return 0;
}

6、删除区间求中位数比较困难。相反,增加数求区间中位数就是一道对顶堆的板子题了。因此考虑逆着做题,先将所有会飘走的气球放弃,将其余气球加入对顶堆。然后再从后往前依次添加气球,维护对顶堆找答案即可(对顶堆网上一大堆模板)。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){
	return b > 0 ? gcd(b , a % b) : a;
}

LL lcm(LL a , LL b){
	return a / gcd(a , b) * b;
}
int n , m;
int a[N];
void init(int n){
	for(int i = 0 ; i <= n ; i ++){
		a[i] = 0;
	}
}
void solve() 
{
	cin >> n;
	for(int i = 1 ; i <= n ; i ++){
		cin >> a[i];
	}
	cin >> m;
	double ans[m + 5];
	int que[m + 5];
	int vis[n + 5];
	memset(vis,0,sizeof vis);
	for(int i = 1 ; i <= m ; i ++){
		cin >> que[i];
		vis[que[i]] = 1;
	}
	for(int i = 1 ;i <= n ; i ++){
		if(!vis[i]){
			ma.push(a[i]);
		}
	}
	while(ma.size() > mi.size()){
		mi.push(ma.top());
		ma.pop();
	}
	for(int i = m ; i > 0 ; i --){
		if((mi.size() + ma.size()) % 2 == 0){//偶数
			int x = mi.top();
			int y = ma.top();
			ans[i] = (double)(1.0 * x + y) / 2;
		}
		else{
			double x = mi.top();
			ans[i] = (double)(1.0 * x);
		}
		int yy = mi.top();
		if(a[que[i]] > yy){
			mi.push(a[que[i]]);
		}
		else{
			ma.push(a[que[i]]);
		}
		while(mi.size() > ma.size() + 1){
			ma.push(mi.top());
			mi.pop();
		}
		while(ma.size() > mi.size()){
			mi.push(ma.top());
			ma.pop();
		}
	}
	for(int i = 1 ; i <= m ; i++){
		printf("%.1f " , ans[i]);
	}
}            
int main() 
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cout.precision(10);
    int t=1;
//	cin>>t;
    while(t--)
    {
    	solve();
    }
    return 0;
}

        

7、边数据较小,网络流问题。

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

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

相关文章

java_基础_关键字

1.关键字的字母全部都是小写. 2.常用的代码编辑器(Notepad),针对关键字有特殊的颜色标记,非常的直观.

CleanMyMac X好不好用?有哪些优势

CleanMyMac X2024正是这一愿景和使命的体现。 作为一个团队&#xff0c;我们致力于采用令人过目不忘的设计来打造我们引以为豪的产品。 这是 UX/UI 设计已经成为我们核心价值的原因之一。 这也是我们不断完善它&#xff0c;从而为我们的用户创造最神奇体验的动力。 CleanMyMac …

基于springboot实现智慧党建系统项目【项目源码】

基于springboot实现智慧党建系统演示 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#xff0c;所以…

Drools Rule Language 学习笔记

Drools Rule Language 1 Packages in DRL 可以有多个packages但推荐只用一个packageexample&#xff1a; package org.mortgages; 2 Import statements in DRL 2.1 You specify the package and data object in the format packageName.objectName, with multiple imports …

野火霸天虎 STM32F407 学习笔记(六)系统时钟详解

STM32 中级 前言 仍然是学习自野火F407网课。 启动文件详解 作用&#xff1a; 初始化堆栈指针 SP_initial_sp初始化 PC 指针 Reset_Handler初始化中断向量表配置系统时钟调用 C 库函数 _main 初始化用户堆栈&#xff0c;从而最终调用 main 函数去到 C 的世界 栈&#xff…

外观设计模式

package com.jmj.pattern.facade;public class Light {public void on(){System.out.println("打开电灯...");}public void off(){System.out.println("关闭电灯...");} }package com.jmj.pattern.facade;public class AirCondition {public void on(){S…

STM32入门学习(一):STM32 简介与软件安装

参考引用 STM32 入门教程-江科协 1. STM32 简介 1.1 STM32 套件介绍 1.2 STM32 简介 STM32 是 ST 公司基于 ARM Cortex-M 内核开发的 32 位微控制器 应用&#xff1a;嵌入式领域&#xff0c;如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等 1.3 ARM …

国内20个大模型中文场景测评及体验

中文场景能力测评 SuperCLUE排行榜 大模型及网站 公司&#xff08;大模型&#xff09; 智能程度 借鉴点 体验网站 备注 1 百度文心一言 高   文心一言   2 百川智能 高   百川大模型-汇聚世界知识 创作妙笔生花-百川智能   3 商汤商量SenseChat&#xff…

徕芬不是满分:自称超越戴森,用户称多次故障,品控仍是老大难?

撰稿|行星 来源|贝多财经 “双十一”购物节落下帷幕后&#xff0c;各大品牌纷纷公布“战报”。其中&#xff0c;高速吹风机品牌徕芬&#xff08;也称“徕芬科技”&#xff09;销售额超4.4亿元&#xff0c;全系产品销量超过80万台&#xff0c;高速吹风机系列单品(LF03、SE)销售…

基于springboot实现实习管理系统的设计与实现项目【项目源码+论文说明】

基于sprinmgboot实现实习管理系统的设计与实现演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;…

智能联系人管理Python代码

在PyCharm中运行《智能联系人管理》即可进入如图1所示的系统主界面。 图1 系统主界面 具体的操作步骤如下&#xff1a; &#xff08;1&#xff09;添加联系人。在主界面中&#xff0c;单击“添加”按钮&#xff0c;将打开添加联系人窗口&#xff0c;在该窗口中&#xff0c;单…

时间序列预测 — Informer实现多变量负荷预测(PyTorch)

目录 1 实验数据集 2 如何运行自己的数据集 3 报错分析 1 实验数据集 实验数据集采用数据集4&#xff1a;2016年电工数学建模竞赛负荷预测数据集&#xff08;下载链接&#xff09;&#xff0c;数据集包含日期、最高温度℃ 、最低温度℃、平均温度℃ 、相对湿度(平均) 、降雨…

学习笔记:如何分析财务报表

其实财务报表分析最核心的东西&#xff0c;是通过财务报表这个结果&#xff0c;由果推因&#xff0c;找出造成这个结果的原因。 会计是商业的语言 首先第一个问题是——会计是商业的语言&#xff0c;这是会计的根本。 什么叫“语言”&#xff0c;就是可以通过它进行交流。比如…

抖音视频怎么提取动图?手机视频转gif方法

抖音是人们休闲娱乐消遣时光必备的短视频软件&#xff0c;当我们想要把好玩有趣的抖音短视频转换成gif动画时&#xff0c;要怎么操作呢&#xff1f;通过使用gif动图制作&#xff08;https://www.gif.cn/&#xff09;网站-GIF中文网&#xff0c;手机自带浏览器&#xff0c;上传视…

手把手教你对禅道接口发起请求-基础版

本章一起来学习如何对禅道的接口发起请求。 &#x1f534;注&#xff1a;本章接口需要自己搭建本地禅道&#xff0c;部署之简单&#xff0c;百度一看就会。如下是官网地址&#xff0c;下载开源版本即可&#xff1a; https://www.zentao.net/ 接口文档 https://www.zentao.net/b…

iar如何全擦芯片内存

Project ->Download -> Erase memory

二年级 最少需要几个刻度?

娃二年级题目&#xff1a;请你设计一把尺子&#xff0c;用这把尺子一次能画出 1~8厘米八条不同长度的线段。最少需要几个刻度&#xff1f; 答&#xff1a;最少需要 5 个刻度&#xff1b; 方案有&#xff1a; 0, 1, 2, 5, 8 0, 1, 3, 7, 8 0, 1, 4, 6, 8 0, 1, 5, 6, 8 0, 1, 5…

burpsuite的大名早有耳闻,近日得见尊荣,倍感荣幸

问题&#xff1a; burpsuite中文乱码何解&#xff1f; burpsuite 与君初相识&#xff0c;犹如故人归。 burpsuite早有耳闻&#xff0c;近日得见真容&#xff0c;果然非同凡响。 Burp Suite is a comprehensive suite of tools for web application security testing. burp …

【教3妹学编程-算法题】统计子串中的唯一字符

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开发。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;阳光明媚、万里无云、秋高气爽&#xff0c;适合秋游。 2哥&#x…

最新AI创作系统ChatGPT系统运营源码+DALL-E3文生图+支持OpenAI-GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…