牛客小白月赛56

news2024/10/7 18:23:24

今天无聊vp了一下

A.省略

B.最优肯定是全部都是1

C.直接统计每个余数下可以填多少个数,然后排序从小到大的排序输出即可

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
using namespace std;
const int N = 2e5+10,M=1e7+10;
int n,m,k;
int a[N];
int sum[N];
void solve()
{
    cin>>n;
    vector<int> cnt(15,0);
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        cnt[i%10]++;
    }
    vector<vector<int>> g(15);
    sort(a+1,a+1+n);
    int idx=1;
    for(int i=0;i<=10;i++)
    {
        for(int j=1;j<=cnt[i];j++)
            {
                g[i].push_back(a[idx]);
                idx++;
            }
    }
    int now=0;
    for(int i=1;i<=n;i++)
    {
        cout<<g[i%10][now]<<" ";
        if(i%10==0) now++;
    }
}
signed main()
{
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
}

D:

直接把1e7里面的质数筛出来就行,数组最多20w,大于20w的质数根本用不上

然后用个set维护就行了预处理出答案

 E贪心,让每个相邻的ZZ在一起,每个ZZ在一起要除掉中间的z,所以

直接统计中间z的个数,每次取最小即可,贡献是4

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
using namespace std;
const int N = 2e5+10,M=1e7+10;
#define int long long
int n,m,k;
int a[N];
int sum[N];
void solve()
{
    string s;
    cin>>n>>k>>s;
    s="?"+s;
    int cnt=0;
    long long res=0,mx=1;
    for(int i=1;i<=n;i++)
    {
        if(s[i]=='z'){
            a[i]=0;
        }
        else a[i]=2;
    }  
    int last=-1;
    priority_queue<int,vector<int>,greater<int>> q;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==2&&last==-1){
            last=i;
            continue;
        }
        if(a[i]==2)
        {
            q.push(i-last-1);
            last=i;
        }
    }
    while(k>0&&q.size())
    {
        if(k<q.top())
        {
            break;
        }    
        res+=4;
        k-=q.top();
        q.pop();
    }
    cout<<res<<"\n";
    
}
signed main()
{
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
}

F.

这个题其实是板子题我觉得,首先肯定是用优先队列的因为边权不同

然后分析状态n个点,每个点用没用过魔法,其他点已经受影响的次数

首先用了两次等于没用过,所以状态就是n*2*2

复杂度mlog(n*2*2)

我这里的state代表在这个有没有用过魔法,

staten是其他点有没有受到影响

如果state变成1,那么其他点要全部改变,所以也要变化

判断的时候,t点用魔法是不改变自己的,所以t加上全局影响即可

但是j点是会受到t魔法的,所以不仅要加上全局影响,还要加上t影响

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
using namespace std;
const int N = 2e5+10,M=1e7+10;
#define int long long
typedef pair<int, int> PII;
using node=tuple<int,int,int,int>;
int n,m,k;
int w[N],dist[N][3][3];
int x,y,z;
vector<int> g[N];
int bfs(){
    memset(dist,-1,sizeof(dist));
    priority_queue<node,vector<node>,greater<node>> q;
    q.push({0,1,0,0});
    while(q.size())
    {
        auto [d,t,state,staten]=q.top();
        q.pop();
        if(t==n) return d;
        if(dist[t][state][staten]!=-1) continue;
        dist[t][state][staten]=d;
        if(dist[t][state^1][staten^1]==-1)
        {
            q.push({d+z,t,state^1,staten^1});
        }
        for(auto&j:g[t])
        {
            if((w[j]^staten^state)==(w[t]^staten))
            {
                q.push({d+x,j,0,staten});
            }
            else{
                q.push({d+y,j,0,staten});
            }
        }
    }
    return 0;
}
void solve()
{
    cin>>n>>m;
    cin>>x>>y>>z;
    for(int i=1;i<=n;i++) cin>>w[i];
    for(int i=1;i<=m;i++)
    {
        int a,b;
        cin>>a>>b;
        g[a].push_back(b);
        g[b].push_back(a);
    }
    cout<<bfs()<<"\n";
}
signed main()
{
    cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
}

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

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

相关文章

Linux yum常用命令

Linux服务器安装成功后&#xff0c;我们会经常使用yum安装rpm包以满足使用的需要。使用yum源安装rpm包有两种方式&#xff1a; 方式一&#xff1a; 搭建本地yum源环境&#xff0c;进行rpm包的安装&#xff0c;具体搭建方式&#xff0c;参考(chapter-5)&#xff1a; Linux常规…

Android12之如何查看hidl服务(一百五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

关闭网络钓鱼攻击 - 类型、方法、检测、预防清单

在当今互联互通的世界中&#xff0c;数字通信和交易占主导地位&#xff0c;网络钓鱼攻击已成为一种无处不在的威胁。 通过伪装成可信赖的实体&#xff0c;网络钓鱼攻击欺骗用户和组织泄露敏感信息&#xff0c;例如密码、财务数据和个人详细信息。 网络钓鱼攻击是网络罪犯使用…

【SpringCloud入门】-- 认识SpringCloudAlibabaNacos服务注册和配置中心

目录 1.Nacos是什么&#xff1f; 2.Nacos能干什么&#xff1f; 3. 各种服务注册中心比较 4.Nacos安装与运行 5.介绍一下Nacos图形化界面 6.NameSpace&#xff0c;Group&#xff0c;Data ID三者的关系&#xff1f;为什么这样设计&#xff1f; 7.Nacos集群和持久化配置 前…

MATLAB与自动化控制:控制系统设计、仿真和实现的应用和优化

章节一&#xff1a;介绍 自动化控制系统是现代工程中的关键组成部分&#xff0c;它在许多领域中发挥着重要作用&#xff0c;如机械工程、电气工程和航空航天工程等。在控制系统设计、仿真和实现过程中&#xff0c;MATLAB成为了一种强大的工具。本文将探讨MATLAB在自动化控制中…

用户模块封装数据模型层

数据模型层 数据模型层&#xff08;Data Model Layer&#xff09;是指在应用程序中用于表示和处理数据的模型层。这一层通常是应用程序的核心&#xff0c;因为它 负责从各种数据源获取数据并保证这些数据与应用程序的功能相匹配 。 在一个应用程序中&#xff0c;数据模型层通…

MidJourney使用教程:二 初识Prompts

最近AIGC这么火&#xff0c;除了chatGPT以外&#xff0c;这种图像类的产品也是非常有意思&#xff0c;其中就有MidJourney和Stable Diffusion这俩个比较出圈。这里我先选择MidJourney来体验并整理出一个教程。一方面MidJourney最简单&#xff0c;能当路Discord&#xff0c;注册…

正则替换的方式删除特定的内容

以前&#xff0c;公司网络限制&#xff0c;无法通过用户名密码登录某些网站&#xff0c;但是可以通过浏览器打开网站&#xff0c;而这些网站有个问题&#xff0c;非登录用户&#xff0c;不能复制博客中的代码&#xff0c;这个就有些麻烦了。 好在&#xff0c;这些代码是可以通过…

6.vue3医疗在线问诊项目 - _极速问诊-订单选择页面 ==> 问诊级别(普通/三甲)、科室选择(一级科室、二级科室)、病情描述、选择患者

6.vue3医疗在线问诊项目 - _极速问诊-订单选择页面 > 问诊级别&#xff08;普通/三甲&#xff09;、科室选择&#xff08;一级科室、二级科室&#xff09;、病情描述、选择患者 极速问诊-选择问诊级别-路由{#consult-change-type} 完成选择三甲还是普通问诊页面&#xff0c…

【Hadoop】大数据开发环境配置

【Hadoop】大数据开发环境配置 文章目录 【Hadoop】大数据开发环境配置1 设置静态ip2 设置主机名3 关闭防火墙4 ssh免密码登录5 JDK配置6 hadoop安装并配置6.1 集群节点之间时间同步6.2 SSH免密码登录完善6.3 hadoop配置 1 设置静态ip 进入ifcfg-ens33文件 vi /etc/sysconfig/n…

JAVA图形界面GUI

目录 一、窗口、窗格、按钮、标签 设置一个窗口JFrame 设置一个窗格JPanel和按钮JButton 设置一个标签JLabel 标准写法 二、监听器ActionListener 用内部类实现 用匿名内部类实现 用LAMADA表达式实现 三、文本域、复选框、下拉列表 JTextField单行文本域 JCheckBox复选…

智能算法终极大比拼,以CEC2017测试函数为例,十种智能算法直接打包带走,不含任何套路

包含人工蜂群(ABC)、灰狼(GWO)、差分进化(DE)、粒子群(PSO)、麻雀优化(SSA)、蜣螂优化(DBO)、白鲸优化(BWO)、遗传算法(GA)、粒子群算法(PSO)&#xff0c;基于反向动态学习的差分进化算法&#xff0c;共十种算法&#xff0c;直接一文全部搞定&#xff01; 其中基于反向动态学习…

Dalamud 插件开发白皮书 P1 - Getting started

文章目录 从哪里开始 How do I get started?Dalamud 插件例子Dalamud 底层探究XIVLauncher 启动器 在哪里寻找帮助 Where do I ask for help?如何热重载插件 How do I hot-reload my plugin?如何调试插件&#xff0c;甚至游戏&#xff1f;如何在编码过程中使用 How do I use…

国内几款强大的语言模型

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

STC15WProteus仿真红绿灯直行左右转紧急模式STC15W4K32S4-0041

STC15WProteus仿真红绿灯直行左右转紧急模式STC15W4K32S4-0041 Proteus仿真小实验&#xff1a; STC15WProteus仿真红绿灯直行左右转紧急模式STC15W4K32S4-0041 功能&#xff1a; 硬件组成&#xff1a;STC15W4K32S4单片机 2位数码管5个LED灯&#xff08;红 黄 ←绿 ↑绿 →绿…

《网络基础之socket理解》

【一】socket是什么 从字面上的意思来理解&#xff0c;这玩意的中文含义叫插座&#xff0c;对你想的没错&#xff0c;就是你家用来插电器的插座&#xff0c;只不过你家的插座是用来导电的&#xff0c;而网络里面的socket是用来传导信息的。 【二】网络socket传送数据流程 我们…

基于阻尼绕组起动同步电动机matlab完整程序分享

主要包含输出转速,感应转矩,磁场变化,感应电压,感应电流等6个参数变化曲线图!! 完整程序如下: clc; clear; close all; warning off; addpath(genpath(pwd)); %電機參數設定 r_stat_in=15;%stator內圈半徑 r_stat_out=17;%stator外圈半徑 width_rot=2;%rotor細部寬度 leng…

【瑞萨RA_FSP】DAC —— 输出正弦波

文章目录 一、DAC简介二、DAC的结构框图1. 参考电压2. 触发源3. DAC数据寄存器4. 转换的过程5. 同步转换 三、生成正弦波数据表四、DAC程序设计1. 硬件设计2. 软件设计①文件结构②FSP配置③DAC初始化函数④设置DAC输出电压函数⑤DAC输出正弦波⑥ hal_entry入口函数 一、DAC简介…

多用户商城软件有哪些开发方式?-加速度jsudo

电商时代之下&#xff0c;企业商家纷纷开始了b2b2c商城系统的搭建&#xff0c;以此来抢占电商市场&#xff0c;但由于大多企业商家并没有专业化的开发团队&#xff0c;所以大多会选择将网站建设外包给专业的商城系统开发公司&#xff0c;但就目前而言&#xff0c;b2b2c商城系统…

改进YOLOv8 | 损失函数篇 | YOLOv8 更换损失函数之 SIoU / EIoU / WIoU / Focal_xIoU 最全汇总版

文章目录 更换方式CIoUDIoUEIoUGIoUSIoUWIoUFocal_CIoUFocal_DIoUFocal_EIoUFocal_GIoUFocal_SIoU提示更换方式 第一步:将ultralytics/yolo/utils/metrics.py文件中的bbox_iou替换为如下的代码:class