【题解】2024牛客多校第5场

news2024/9/20 1:04:40

E 安

https://ac.nowcoder.com/acm/contest/81600/E

分析

简单博弈 / 思维题。

ai > bi 时,当前骑士一定存活。

ai < bi 时,当前骑士一定死亡。

为了使得自己存活的骑士尽可能多,若存在 ai = bi 的情况,一定会选择令该骑士去攻击对方,并且双方均会轮流优先选择此类骑士。

因此,记 ai > bi 的个数为aa,ai = bi 的个数为bb,则最终存活的棋子即为

a a + ⌈ b b 2 ⌉ aa + \lceil\frac{bb} {2} \rceil aa+2bb

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long long ll;
const ll mod = 998244353;
const int N = 1e5 + 7;

int n;
int a[N],b[N];

void solve(){
    cin >> n;
    for(int i = 1;i <= n;i++) cin >> a[i];
    for(int i = 1;i <= n;i++) cin >> b[i];

    int aa = 0,bb = 0;
    for(int i = 1;i <= n;i++){
        if(a[i] > b[i]) aa++;
        else if(a[i] == b[i]) bb++;
    }

    cout << aa + (bb + 1) / 2 << '\n';
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int T;
    cin >> T;
    while (T--)
    {
        solve();
    }

    return 0;
}

B 珑

https://ac.nowcoder.com/acm/contest/81600/B

分析

多米诺骨牌经典问题。

在这里插入图片描述

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long long ll;
const ll mod = 998244353;
const int N = 1e5 + 7;

int n,m,a,b;

void solve(){
    cin >> n >> m >> a >> b;

    if((n == 1 && m == 2) || (n == 2 && m == 1)){
        cout << "Yes\n";
        return ;
    }

    if((n & 1) && (m & 1)) cout << "No\n";
    else if(b == 1){
        if(a == 1) cout << "Yes\n";
        else if(n == 1 || m == 1) cout << "No\n";
        else cout << "Yes\n";
    } 
    else if(a == 1){
        if(n == 1 && m % 2 == 0) cout << "Yes\n";
        else if(m == 1 && n % 2 == 0) cout << "Yes\n";
        else cout << "No\n";
    }else{
        if(n == 1 && m == 2) cout << "Yes\n";
        else if(n == 2 && m == 1) cout << "Yes\n";
        else cout << "No\n";
    }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int T;
    cin >> T;
    while (T--)
    {
        solve();
    }

    return 0;
}

L 知

https://ac.nowcoder.com/acm/contest/81600/L

分析

最终答案即为求 a1 * a2 * a3 * … * an 的最大值。

平均分配原则。

ai < ai+1,则给 ai 增加 1,给 ai+1 减少 1,则答案一定不会变劣。

维护前缀和数组c,对于每个ai,计算出[i,i],[i,i+1],[i,i+2]…[i,n]的平均数的最大值s,
若ai < s,则将ai变为s即可。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long long ll;
const ll mod = 998244353;
const int N = 1e7 + 7;
ll a[N];
ll c[N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int T;
    cin >> T;
    while (T--)
    {
        int n;
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
        }
        c[n + 1] = 0;
        for (int i = 1; i <= n; i++)
        {
            c[i] = c[i - 1] + a[i];
        }
        for (int i = 1; i < n; i++)
        {
            ll s = 0;
            for (int j = i + 1; j <= n; j++)
            {
                s = max(s, (a[i] + c[j] - c[i]) / (j - i + 1));
            }
            if (a[i] < s)
            {
                s-=a[i];
                a[i] += s;
                a[i + 1] -= s;
            }
        }
        ll res = 1;
        for (int i = 1; i <= n; i++)
        {
            res *= a[i];
            res %= mod;
           // cout << a[i] << ' ';
        }
        cout << res << '\n';
    }

    return 0;
}

H 入

https://ac.nowcoder.com/acm/contest/81600/H

分析

考虑若每个点只连了一条边,那么最终的方案数只有1个,即走完这条链。

若每个点连了两条边或者更多,每个点连的所有边只有一条会起作用,因此实际起作用的点不用超过n/2,所以直接爆搜,状态数也不会超过2^20约1e6。

注意爆搜时进行记忆化,可以结合状压dp来写,总时间复杂度约 O ( n ∗ 2 n ) O(n * 2^n) O(n2n)

代码

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N = 42;
struct stu1{
    int y,nex;
}e[N*N];
int n,m,lin[N],cnt,ans;
void work(int x,int y){
    e[++cnt]=(stu1){y,lin[x]}; lin[x]=cnt;
}
unordered_map<LL,int> mp[N];
void Get(int dq){
    for(int i=0;i<n;i++) cout<<((dq>>i)&1);
    cout<<endl;
}
int dfs(LL dq1,int x){

    if(mp[x][dq1]) return max(mp[x][dq1],0);

    LL dq2=dq1;
    for(int i=lin[x];i;i=e[i].nex){
        int y=e[i].y;
       
        if(((dq1>>y-1)&1)==0){
            
            dq2|=(1ll<<y-1);
        }
    } //zouguoqu

    for(int i=lin[x];i;i=e[i].nex){
        int y=e[i].y;
        if(((dq1>>y-1)&1)==0){
            //if(x==6) cout<<y<<endl;
            mp[x][dq1]=max(mp[x][dq1],dfs(dq2,y)+1);
        }
    } //zouguoqu
   // Get(dq1); Get(dq2);
    //cout<<mp[dq1]<<' '<<x<<' '<<dq1<<endl;
    if(!mp[x][dq1]) mp[x][dq1]=-1;
    return max(mp[x][dq1],0);
}
int main()
{  
   scanf("%d%d",&n,&m);
    int x,y;
    for(int i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        work(x,y);
        work(y,x);
    }
    for(int i=1;i<=n;i++) ans=max(ans,dfs((1ll<<i-1),i)+1);
    printf("%d",ans);
}

场上就写出来了这4道,持续补题中…

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

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

相关文章

XXE-lab-master靶场:PHP_xxe

目录 有回显 测试回显位置 构建payload 无回显数据外带 构建payload 漏洞修复 XXE-lab是一个一个包含php,java,python,C#等各种语言版本的XXE漏洞靶场。 下载地址&#xff1a;https://github.com/c0ny1/xxe-lab 将PHPStudy的中间件与版本信息调制为 php-5.4.29Apache 以…

【测试】博客系统的测试报告

项目背景 个人博客系统采用了 SSM 框架与 Redis 缓存技术的组合 &#xff0c;为用户提供了一个功能丰富、性能优越的博客平台。 在技术架构上 &#xff0c;SSM 框架确保了系统的稳定性和可扩展性。Spring 负责管理项目的各种组件 &#xff0c;Spring MVC 实现了清晰的请求处理…

【Linux系统】POSIX信号量 线程池

PISIX信号量 概念 POSIX信号量和SystemV信号量作用相同&#xff0c;都是用于同步操作&#xff0c;达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。 引入环形队列的概念 环形队列&#xff1a;当队列为空||为满时 head end&#xff0c;我们发现这样无法区分为空…

Springboot2.6.13整合flowable6.8.1

背景 项目上需要使用到工作流相关内容&#xff0c;比对了好久采用flowable实现&#xff0c;该插件和activiti等很相似&#xff0c;基本上可以直接移植 代码如下 <!-- 父引用用--><parent><groupId>org.springframework.boot</groupId><artifactI…

LLM的训练与推断

LLM的训练与推断 目前比较流行的大模型一般都是自回归模型。在推理时&#xff0c;它类似于RNN&#xff0c;每次计算下一个token的概率。也就是说&#xff0c;如果除去最开始的输入情况下&#xff0c;最终推理长度为n的话&#xff0c;就需要计算n次。但是训练却是并行化的。 在…

你想活出怎样的人生?我只活一次,所以想做自己

你好&#xff0c;我是腾阳。 在这纷繁复杂的世界中&#xff0c;我们每个人都像是一颗颗星星&#xff0c;闪烁着自己的光芒。 然而&#xff0c;在这光芒背后&#xff0c;有多少人真正了解自己&#xff0c;又有多少人敢于追随内心的声音&#xff0c;去追寻那些看似遥不可及的梦…

arduino程序-程序函数2(led电路及相关函数)(基础知识)

arduino程序-程序函数2&#xff08;led电路及相关函数&#xff09;&#xff08;基础知识&#xff09; 1-9 程序函数2&#xff08;led电路及相关函数&#xff09;点亮LED需要Blink程序PinMode(LED_BUTTIN,OUTPUT)DigitalWrite(LED_BUILTIN,HIGH)第一个参数(13/LED_BUILTIN)第二个…

由浅入深的了解进程(1)

进程 1、冯诺依曼体系结构(硬件)2、操作系统(软件)2、1、概念2、2、结构示意图(简略版)3、3、尝试理解操作系统 1、冯诺依曼体系结构(硬件) 大多数常见的计算机&#xff0c;类似笔记本或者是台式电脑&#xff0c;包括不常见的计算机&#xff0c;类似服务器&#xff0c;大多遵循…

安装python插件命令集合

安装python插件pyecharts库 pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple 安装python插件pandas库 pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple PyCharm 中安装步骤&#xff1a;

Linux安装TrueNAS(网络附加存储)教程 –第1部分

TrueNAS CORE&#xff08;原名FreeNAS&#xff09;是一款流行的存储系统&#xff0c;可帮助您构建自己的高质量存储设置&#xff0c;而无需支付软件费用。您可以将其安装在计算机硬件或虚拟机 (VM) 上&#xff0c;以获得开源存储的好处。 您可以在家中、办公室或数据中心使用T…

微信小程序云开发订单微信支付与小票和标签打印的完整高效流程

一个字“全”&#xff01;&#xff01;&#xff01; 前言一、流程设定1、如何开通云支付流程2、以订单下单为例的支付流程2.1 业务场景介绍2.2 业务场景流程图 二、代码与代码文件组成1、页面JS2、云函数payPre3、支付回调函数pay_cb3.1 准备条件3.2 必要认知3.3 pay_cb 完整函…

day03 3.文件IO 4.文件属性函数

作业 1> 使用文件IO完成&#xff0c;将源文件中的所有内容进行加密&#xff08;大写转小写、小写转大写&#xff09;后写入目标文件中 源文件内容不变 #include <myhead.h>int main(int argc, const char *argv[]) {if(argc ! 3) //判断打开的文件个数{printf(&quo…

【Python学习手册(第四版)】学习笔记10-语句编写的通用规则

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文较简单&#xff0c;5-10分钟即可阅读完成。介绍Python基本过程语句并讨论整体语法模型通用规则&#xff08;冒号、省略、终止、缩进、其他特殊情况&#xff0…

JavaFX布局-StackPane

JavaFX布局-StackPane 常用属性alignmentpadding 实现方式Java实现fxml实现 所有子节点堆叠在一起&#xff0c;通常最后一个添加的子节点会显示在最上面 常用属性 alignment 对齐方式 stackPane.setAlignment(Pos.CENTER_RIGHT); public enum Pos {/*** Represents positioni…

LeYOLO,一种用于目标检测的新型可扩展且高效的CNN架构

摘要 在目标检测中&#xff0c;深度神经网络的计算效率至关重要&#xff0c;尤其是随着新型模型越来越注重速度而非有效计算量&#xff08;FLOP&#xff09;。这一发展趋势在某种程度上忽视了嵌入式和面向移动设备的AI目标检测应用。在本文中&#xff0c;我们基于FLOP关注于高…

马斯克的Memphis AI超级计算中心:全球最强AI训练集群的诞生

引言 近期&#xff0c;马斯克宣布其最新的Memphis AI超级计算中心正式启动&#xff0c;这一新闻引发了科技界的广泛关注。该中心配备了10万块液冷H100 GPU&#xff0c;成为全球最强大的AI训练集群。本文将深入探讨Memphis AI超级计算中心的建设过程、技术细节、以及其对未来人…

Unity多客户端位置同步信息

书接上文&#xff0c;有了一个基本的网络同步消息的服务器&#xff0c;客户端这边其实要做的工作就简单许多。 如果对位置信息的保密程度没那么高的话&#xff0c;可以放在客户端处理这部分的逻辑。 即一个客户端移动的时候&#xff0c;另一个客户端跟着移动&#xff0c;基本…

在Java中利用GeoHash实现高效的‘附近xxx‘功能

GeoHash的介绍 GeoHash是一种高效的地理编码系统&#xff0c;它通过将地球表面划分为网格并用字母数字组合的字符串来表示每个区域。 这种编码方法将二维的经纬度坐标转换为一维的字符串&#xff0c;使得地理位置的存储和检索变得更加简单。GeoHash的核心原理是将经纬度坐标转…

后端开发工程师vue2初识的学习

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;JavaWeb关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 什么是Vue&#xff1f; Vue &#xff08;通常指 Vue.js&#xff09;是一个用…

权限管理的概述以及vue开发前端的路由、菜单、按钮权限控制实现方案

1. 权限管理概念 1.1 权限定义 权限管理是确保用户只能访问被授权资源的机制。在计算机系统中&#xff0c;权限通常指对特定数据或功能的访问权。权限的设置和控制对于保护数据安全和系统安全至关重要。 1.2 前端权限控制重要性 前端权限控制是用户与应用交互的第一道防线。…