马蹄集oj赛(双周赛第二十三次)

目录

数列分割

小码哥的地毯

小码哥的三色墙

palace

高数考试

新全排列

黑白双煞

等差

数三角形

区间修改

相对马高

小码哥剪绳子


数列分割


难度:黄金 时间限制:1秒巴 占用内存:64 M
小码哥给你一个长度为n的数列,求将该数列分割成两个左右两个部分且两个部分内数字的和相等的方案数。
格式
输入格式:给定一整数n;
接下来有 n 个数 a[i]。
其中:1≤n≤ 105,ai]的绝对值不大于 10000。
输出格式:输出一行表示答案。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
long long n,a[N],sum [N],ans;

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        sum[i] = sum[i - 1] + a[i];
    }
    for (int i = 2; i <= n; i++) {
        if (sum[n] - sum[i - 1] == sum[i - 1])
            ans++;
    }
    cout << ans;
    return 0;
}

小码哥的地毯


少 难度:黄金·时间限制:1秒四占用内存:128M
小码哥的房间要铺上地毯。房间大小为几*几,小码哥有m 块矩形地毯,给出每块地毯放置的两个对角的坐标。问每个点被多少个地毯覆盖
格式
输入格式:今第一行,两个整数n,m;接下来 m 行,每行两个坐标(1,y)和(2,y) 代表一块地毯,左上角是(1,y),右下角是(2,y2)。
输出格式:输出n行,每行几个整数;

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
#define N 1005
int n,m;
int a[N][N],sub[N][N];
int main(){
    cin >>n >>m;
    for(int i=1;i<=m;++i){
            int x1,y1,x2,y2;
    cin >>x1 >>y1 >>x2 >>y2;
    sub[x1][y1] += 1;
    sub[x1][y2+1] -= 1;
    sub[x2+1][y1] -= 1;
    sub[x2+1][y2+1] += 1;
}
for (int i=1;i<=n;++i){
for (int j=1;j <= n;++j){
a[i][j]=sub[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
        cout <<a[i][j]<<" ";
}
puts("");
}
return 0;
}

小码哥的三色墙


难度:黄金时间限制:1秒巴 占用内存:128 M
小码哥的房间墙要重新刷漆。墙面大小可以看成几*m个小方块,每个方块初始颜色为W,B或R,小码哥对于刷漆的要求是:
1.从最上方若干行(至少一行)的格子全部是W色的;
2.接下来若干行(至少一行)的格子全部是B色的;
3.剩下的行(至少一行)全部是 色的。
小码哥想要更改最少的格子数来满足要求。请你帮他算算最少的更改数。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
#define N 1005
int n,m,w[N],b[N],r[N];
int ans = 0x3f3f3f3f;
string s;
int cal(char c) {
//某一行全部刷成某种颜色的代价
    int t = 0;
    for (int i = 0; i < m; ++i)
        if (s[i] != c)
            t++;
    return t;
}
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; ++i) {
        cin >> s;
        w[i] = w[i - 1] + cal('W');
        b[i] = b[i - 1] + cal('B');
        r[i] = r[i - 1] + cal('R');
    }
    for (int i = 1; i < n - 1; ++i)
        for (int j = i + 1; j < n; ++j)
            ans = min(ans, w[i] + b[j] - b[i] + r[n] - r[j]);
    cout << ans;
    return 0;
}

palace


难度:钻石时间限制:1秒巴 占用内存:128 M。
小码哥准备给自己盖一座很华丽的宫殿。于是,他看中了一块NxM 的矩形空地。
空地中每个格子都有自己的海拔高度。小码哥想让他的宫殿的平均海拔在海平面之上(假设海平面的高度是0,平均数都会算吧?)。而且,小码哥希望他的宫殿尽量大,能够容纳更多的人来膜拜他。请问小码哥的宫殿最后会有多大?
格式
输入格式:第一行两个整数 n,m;
之后 n 行,每行 m 个数,描述的空地的海拔。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 210;
int n,m,a[N][N],sum [N][N],ans;

int main(){
    cin >>n >>m;
    for (int i=1;i <=n;i++)
        for (int j =1;j <=m;j++) {
            cin >> a[i][j];
            sum[i][j] =
                    sum[i - 1][j] + sum[i][j - 1] + a[i][j] - sum[i - 1][j - 1];
        }
    for (int i=1;i<=n;i++)
        for (int j =1;j <= m;j++)
            for (int k=i;k <= n;k++)
                for (int l=j;l <= m;l++) {
                    int tmp = (k - i + 1) * (l - j + 1);
                    int tmp2 = sum[k][l] - sum[i - 1][l] - sum[k][j - 1] +
                               sum[i - 1][j - 1];
                    if (tmp > ans && tmp2 > 0)
                        ans = tmp;
                }
    cout << ans;
    return 0;
}

高数考试


黄金!巴 占用内存:128 M子难度:时间限制:1秒
高数考完了,又到了数学老师难办的时候。数学老师想捞同学一把,她总是要一遍遍地给某些同学增加分数(均为正整数),又要注意最低分是多少。由于工作量很大,你能帮帮她吗?
格式
输入格式:第一行有两个整数n,p,代表学生数与增加分数的次数第二行有 n 个数,a1~ an ,代表各个学生的初始成绩;接下来p行,每行有三个数 ,y,z,代表给第  个到第y个学生每人增加z分。

/*
    MT2068 高数考试 
*/

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

const int MAX = 5e6+5;
int ary[MAX], sub[MAX];

int main( )
{
    // 录入数据 
    int n,p,x,y,z,minScore=MAX; 
	cin>>n>>p; 

    // 录入分数时同时记录差分数组 
    for(int i=1;i<=n;i++){
        cin>>ary[i];
        sub[i] = ary[i] - ary[i-1];
	}

	// 录入操作时只需要对差分数组进行修改 
    while(p--){
        cin>>x>>y>>z;
        sub[x] += z;
        sub[y+1] -=z;
	}

    // 还原数组并找出最小值 
    for(int i=1;i<=n;i++){
        ary[i] = ary[i-1] + sub[i];
        minScore = min(minScore, ary[i]);
	}

    // 输出最低分数 
	cout<<minScore<<endl;

    return 0;
}

新全排列


 时间限制:2秒难度:钻石四:占用内存:256 M
列数组 P1,P2,?3,..,?n 被称作一个全排列当且仅当1到n所有数都出现一次。现有一个n的全排列 p1,p2,p3,·..,pn ,仅知道 q1,q2,3,·..,qn-1的序列,其中 qi=pi+1-Pi。
要求求出原序列。
格式
输入格式:第一行输入 n(2 <n<2*105)原序列长度;第二行输入 q1, 92, q3,·..,qn-1(-n < qi< n)。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N =2e5+ 7;

int n,p[N],q[N],tmp[N];
bool flag;
int main() {
    cin >> n;
    for (int i = 1; i <= n - 1; i++)
        cin >>q[i];//差分数组前缀和就是原数组
    int minn = 0;

    for (int i=2;i<=n;i++){
        p[i]=p[i-1]+q[i-1];
    if (p[i] < minn)
    minn = p[i];
}
for (int i=1;i<=n;i++) {
    p[i] = p[i] - minn + 1;
    tmp[i] = p[i];
    if (tmp[i] > n || tmp[i] < 1) {
        cout << -1;
        return 0;
    }
}
sort(tmp + 1,tmp +n + 1);
for (int i=1;i<=n-1;i++)
if (tmp[i]==tmp[i + 1]){
    cout<<-1;
    return 0;
}
    for (int i=1;i<=n;i++)
        cout << p[i] <<" ";
    return 0;
}

黑白双煞


难度:钻石时间限制:1秒巴:占用内存:128 M
小码哥现在手里一个环(首尾相连),环上有(2<n<100000)个点,每个点必定是两种颜色之一(黑色或白色)。
现在他想请你进行一些操作,每次交换两个点的位置,求最少操作次数使得黑白色的几个点分离成两个部分,每个部分只含一种颜色。
格式
输入格式:第-行-个正整数n(2≤n≤ 100000);
接下来一行一个字符串 S ,长度为 n ,第讠位为 H 则表示黑点,T 则表示白点。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N=1e5 + 10;
int a[N << 1],sum[N << 1];
int n,cnt,ans;//cnt表示黑色的个数,ans表示cnt长的区间内,最多多少个黑色
char ch;
int main(){
    cin >> n;
    for (int i=1;i<=n;i++) {
        cin >> ch;
        if (ch == 'H')//黑色为1
            a[i + n] = a[i] = 1, cnt++;
    }
        for (int i=1;i<=n * 2;i++)
        sum[i]=sum[i-1]+a[i];//前缀和,前面有多少个黑色
        
        for (int i=1;i <=n;i++)
            ans = max(ans,sum[i+cnt - 1] - sum[i-1]);
        
        cout <<cnt - ans;
        return 0;
    }

等差


难度:钻石时间限制:1秒四: 占用内存:256 M
学完等差数列的小码哥神清气爽,他想在一长串数中找到等差的部分。
他给你一个整数数组nums,要求该数组中所有为等差数组的子数组个数(等差数组子数组,指的是至少3个数的连续数组成等差数列)。
格式
输入格式:一个整数数组。
输出格式:返回一个非负整数。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 5010;
int nums [N],sub[N],n,ans;

int main(){
    int x;
    while (cin >>x){
        n++;
        nums[n] = x;
        sub[n] = nums[n] - nums[n - 1];
    }
    for (int i=2;i<n;i++){
        int tmp = sub[i],index = i+1,t=0;
        while (sub [index]==tmp) {
            t++;
            index++;
        }
            ans +=t;
        }
        cout <<ans;
        return 0;
    }

数三角形


时间限制:1秒难度:钻石巴: 占用内存:128 M
给出四个整数 A, B,C,D ,其中 1< A≤B<C<D<5.105
求三边长分别为 æ, y,z(㎡,y,z为整数)并且満足 A≤æ≤B≤y≤C≤z≤D 的非退化三角形(三顶点不共线)的个数。
格式
输入格式:第一行为 A,B,C,D
输出格式:输出一个整数为答案。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N=5e5 +5;
long long a[N],sum[N],A,B,C,D,ans;
int main(){
    cin >>A >>B>>C>>D;
    for (int i=A;i<=B;i++)
        for (int j=B;j<=C;j++)
            a[i+j]++;
    for (int i=A+B;i <= B+C;i++)
        sum[i] = sum[i -1] + a[i];
    for(int i=C;i <= min(D,B+C);i++)
        ans += sum[B + C] - sum[i];
    cout <<ans;
    return 0;
}

区间修改


难度:黄金
时间限制:1秒巴:占用内存:128 M
小码哥有几个手下,他们的编号为1,n。小码哥想要给他们发放工资,用一个长度为n的数列ai,表示编号为i的手下初始收到的工资,但发工资时没有计算好,导致每个人到手的工资不-样,为了使他们的工资相同,现在小码哥可以使得编号在区间,中的手下,收到1或上交1的工资。即工资+1或工资-1;
求至少需要多少次操作才能使所有人的工资相同都一样?
工资可以暂时为负数,小码哥可以压榨他的手下,让手下暂时垫付部分钱,之后再还;小码哥也可以多付一些钱给手下,也可以少给一些(自己贪污一点),即工资总数不要求一定是初始手下的工资之和。只要他们每个人的工资一样就可以。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n,a[N],sub[N],num1,num2;
int main(){
    int ans =0,buf =0;
    cin >>n;
    for (int i=1;i<=n;i++)
        cin >>a[i];
    for (int i=2;i<=n;i++){
        sub[i] = a[i]-a[i-1];
        if (sub[i] > 0)
        num1 += sub[i];
        else 
        num2 += sub[i];
    }
    cout <<max(num1,-num2);
    return 0;
}

相对马高


少难度:黄金时间限制:1秒四: 占用内存:128 M
小码哥有几头马,他们站作一排,由于马的身高不同,如果马A和B能够相互看见,那么,在(a,b)区间的马的身高都小于 a,b马。
现在给出最高的马的身高h。之后小码哥将给出f组数据,表示马A,B可以相互看见,请你推出小码哥的马们的最大的可能的身高,由于小码哥工作向来随性,马的区间顺序关系可能写错(数据不确保 a<b)。
格式
输入格式:第 1 行输入 n,h,f;
第 2 行到第 f+1 行 输入两个数据 a,b,以空格分隔

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
int n,h,f,g[N],sub[N],a,b;
int main() {
    cin >> n >> h >> f;
    sub[1] = h;
    while (f--) {
        cin >> a >> b;
        if (a == b)
            continue;
        if (a > b)
            swap(a, b);
        sub[a + 1] -= 1;
        sub[b] += 1;
    }
    for (int i = 1; i <= n; i++) {
        g[i] = g[i - 1] + sub[i];
        cout << g[i] << endl;
    }
    return 0;
}

小码哥剪绳子


时间限制:1秒巴 占用内存:128 M了 难度:黄金
马上就要到文化节了,小码哥身为学生会的一员需要参与到道具制作。
由于被分配到趣味拔河,小码哥需要切绳子,有N 条绳子,它们的长度分别为,n。
如果从它们中切割出 K 条长度相同的绳子,这条绳子每条最长能有多长?
格式
输入格式:第一行两个整数 N 和K;
接下来 N 行,每行一个整数代表每条绳子的长度 工。

//
// Created by abner on 2024/3/22.
//
#include <bits/stdc++.h>
using namespace std;
const int M = 1e5 + 10;
int L[M],N,K,l,r,mid,ans;

bool check(int num){
    int tmp =0;
    for (int i =1;i<=N;i++) {
        tmp += L[i] / num;
    }
        if (tmp >=K)
            return true;
        else
            return false;
    }
    int main(){
        cin >>N>>K;
        for (int i=1;i<=N;i++) {
            cin >> L[i];
            r = max(r, L[i]);
        }
            while (l <=r){
                mid = l+(r-l)/2;
                if (check(mid))
                    l=mid + 1,ans = mid;
                else
                r = mid - 1;
            }
        cout <<ans;
        return 0;
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型学习笔记七:LLM应用

文章目录 一、维护生产级别的LLM应用,需要做的事二、符合需求的LLM App维护平台三、LangFuse1)替换OpenAI客户端(把跟OpenAI交互记录到LangFuse)1.1)几个基本概念2)通过LangChain的回调函数触发记录(上面用的原生OpenAI接口,下面是调用LangChain的接口)3)构建一个实际…

打开snipaste软件的界面后,上次的截图无法销毁?

现象&#xff1a; 鼠标放上去&#xff0c;如图会有1个圆圈&#xff0c;无法消除一直显示在电脑桌面上&#xff0c;无法使图片消失 解决办法&#xff1a; 你应该是点到了空格&#xff0c;开启了编辑模式&#xff0c;然后又选中了其中一个功能例如橡皮檫导致无法移动和销毁&…

Linux线程补充1

十、多线程中线程间的"独立" ​ 1.线程在代码段通过执行不同的函数&#xff0c;实现代码段的独立&#xff1b; ​ 2.新线程通过在共享区划分不同的管理属性和不同的栈空间&#xff0c;实现栈的独立&#xff0c;而主线程使用的是栈空间&#xff1b; ​ 3.线程通过获…

计算机二级大题

题目来源&#xff1a;计算机二级Python半个月抱佛脚大法&#xff08;内呈上真题版&#xff09; - 知乎 1.大题1 注意csv文件读取的处理 ls[] for line in f: ls.append(line.strip(\n).split(,)) 2. 大题2 第一问&#xff1a; #计算有效票张数 fopen("vote.txt",…

微服务鉴权的几种实现方案

1.Token 1.1 Token透传&#xff08;不推荐&#xff09; 刚开始接触微服务时网上给的方案大都数是通过透传Token做鉴权&#xff0c;但我认为这种方式不是很妥当。接着往下看&#xff1a; 这种方式通过透传Token使得各微服务都能获取到当前登录人信息&#xff0c;在代码编写上确…

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

面试算法-78-两两交换链表中的节点

题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff…

NLP 笔记:LDA(训练篇)

1 前言&#xff1a;吉布斯采样 吉布斯采样的基本思想是&#xff0c;通过迭代的方式&#xff0c;逐个维度地更新所有变量的状态 1.1 举例 收拾东西 假设我们现在有一个很乱的屋子&#xff0c;我们不知道东西应该放在哪里&#xff08;绝对位置&#xff09;&#xff0c;但知道哪…

汉字之美,拼音之韵

title: 汉字之美&#xff0c;拼音之韵 date: 2024/3/23 18:41:56 updated: 2024/3/23 18:41:56 tags: 汉字拼音文化语言美学传承中文 1. 汉字之美 汉字作为中文的书写形式&#xff0c;承载着丰富的文化内涵。每一个汉字都蕴含着历史、传统和智慧&#xff0c;是中华文明的瑰宝…

关于Java发邮件提醒写周报实现(一)环境搭建

背景 由于公司每周都要写周报&#xff0c;而日常工作很忙&#xff0c;所以很容易忘记这件事件&#xff0c;因此开发一个写周报提醒的机器人&#xff0c;进行特定时间提醒是时候写周报了。 有一个大前提&#xff0c;本技术实现&#xff0c;本着不开通任何收费服务的态度去考察使…

JetBrains CLion 2022 for Windows:C++开发者的强大助手,引领编程新风尚

在数字化浪潮席卷全球的今天&#xff0c;编程语言的多样性和复杂性日益凸显。而在众多编程语言中&#xff0c;C以其独特的优势和广泛的应用领域&#xff0c;成为众多开发者的首选。JetBrains CLion 2022&#xff0c;作为一款专为C开发者打造的集成开发环境&#xff08;IDE&…

深度学习(二)安装tensorflow深度学习框架

0.前言 速度更新新的一期&#xff0c;快夸奖我。前情提要这是我在window10系统下完成的操作&#xff0c;并不是ubuntu&#xff0c;所以有相应的区别。 1.安装tensorflow和d2l 这里默认大家已经安装好了anconda或者miniconda并且以及创建了虚拟环境。 conda create -n huahuaji…

Cesium安装部署运行

目录 1.简介 2.Cesium项目下载 3.Cesium项目运行 4.cesium运行 1.简介 Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎。Cesium支持3D,2D,2.5D形式的地图展示&#xff0c;可以自行绘制图形&#xff0c;高亮区域&#xff0c;并提供良好的触摸支持&#xff0c;且支…

(一)基于IDEA的JAVA基础6

赋值运算符 int a10&#xff1b;是把10赋值给了变量a&#xff0c; 那这里有两组数值: int num11&#xff1b; int num22&#xff1b; 想把两个数值互关该怎么办呢&#xff0c; 理想状态我们直接num1num2&#xff1b;num2num1&#xff1b;看一下结果: 全变成了2&#xff0…

【计算机网络】常见面试题汇总

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么&#xff1f;1.2TCP/IP四层模型是什么&#xff1f;每一层的作用&#xff1f;1.2.1TCP四层模型&#xff1f;1.2.2为什么网络要分层&#xff1f; 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

如何查看局域网内所有的ip和对应的mac地址

1、windows下查看 方法一、 按快捷键“winr”打开运行界面&#xff0c;输入“CMD”回车: 输入以下命令&#xff1a; for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.0.%i 其中 192.168.0.%i 部分要使用要查询的网段&#xff0c;比如 192.168.1.%i 192.168.137.%i 172.16.2…

git 上传文件夹至远端仓库的方法

上传的远端git可以是gitlab、github、gitee、gitblit或者gitCode等等 以下以GitHub为例说明&#xff1a; 1、登录GitHub网站&#xff08;账户/密码&#xff09; 2、创建一个新的空白项目&#xff08;或者已有的项目&#xff09;hello-world 分支是master &#xff0c;这里默认即…

【c++初阶】C++入门(下)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

Spark与flink计算引擎工作原理

Spark是大批量分布式计算引擎框架&#xff0c;scale语言开发的&#xff0c;核心技术是弹性分布式数据集&#xff08;RDD&#xff09;可以快速在内存中对数据集进行多次迭代&#xff0c;支持复杂的数据挖掘算法及图形计算算法&#xff0c;spark与Hadoop区别主要是spark多个作业之…

试题E(求阶乘)

解题思路&#xff1a; 写不出来&#xff0c;看的题解。要想凑个10&#xff0c;就必须要有一个2和5&#xff0c;但是明显在一个阶乘里&#xff0c;因子为2的数量一定多余5的数量&#xff0c;所以计算5的数量。 解题代码&#xff1a; import java.util.Scanner; ​ public clas…