AtCoder Beginner Contest 340

前面两道阅读理解直接跳过

C - Divide and Divide

大意

黑板上有一个数n

执行下列操作,直到黑板上的数全为1:

  • 选择一个不小于2的整数x,擦掉。
  • 写下\lfloor \frac{x}{2} \rfloor\lceil \frac{x}{2} \rceil
  • 需要x的代价。

当不能继续操作时,总代价是多少?

思路

定义dp_i表示黑板上初始出现数字i的代价,则有dp_i=dp_{\lfloor \frac{x}{2}\rfloor}+dp_{\lceil \frac{x}{2}\rceil} + x

但是数很大,不能递推,需要记忆化搜索(有用的总状态数不会超过2\log n)。

使用map进行记忆化即可。

代码

#include <iostream>
#include <unordered_map>
using namespace std;

typedef long long ll;
unordered_map<ll, ll> dp;

ll dfs(ll x) {
    if (x < 2) return 0;
    if (dp.count(x)) return dp[x];
    return dp[x] = x + dfs(x / 2) + dfs((x + 1) / 2);
}

int main() {
    ll n;
    cin >> n;
    cout << dfs(n) << endl;
    return 0;
}

D - Super Takahashi Bros.

大意

n个关卡,初始只能玩第1关。

对于第i关卡,有两种通关方式:

  • 花费A_i时间打完,跳到第i+1关。
  • 花费B_i时间打完,跳到第X_i关。

思路

转化为有向图,对于第i关卡,

  • 在点i和点i+1之间,建一条权值为A_i的边。
  • 在点i和点X_i之间,建一条权值为B_i的边。

最后跑一遍从1n的最短路即可。

代码

#include <iostream>
#include <queue>
#include <utility>
#include <cstring>
using namespace std;

const int N = 2e5 + 9;
typedef long long ll;
typedef pair<ll, ll> pll;
ll n, a[N], b[N], x[N], dis[N];
bool vis[N];
priority_queue<pll, vector<pll>, greater<pll>> q;

int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n;
    for (ll i = 1; i <= n - 1; i++) cin >> a[i] >> b[i] >> x[i];
    memset(dis, 0x3f, sizeof dis);
    dis[1] = 0;
    q.push({ 0, 1 });
    while (q.size()) {
        auto t = q.top();
        q.pop();
        ll u = t.second;
        if (vis[u]) continue;
        vis[u] = true;

        ll v = u + 1;
        if (dis[v] > dis[u] + a[u]) {
            dis[v] = dis[u] + a[u];
            q.push({ dis[v], v });
        }
        v = x[u];
        if (dis[v] > dis[u] + b[u]) {
            dis[v] = dis[u] + b[u];
            q.push({ dis[v], v });
        }
    }
    cout << dis[n] << endl;
    return 0;
}

E - Mancala 2

大意

n个盒子,第i个盒子有A_i个球。

依次执行以下操作共m次:

  • i次操作,将第B_i个盒子的所有球均分,多余的球从第B_i+1个盒子开始依次放一个。
  • 如果处理到最后一个盒子还没放完,从第1个盒子开始继续放。

问最后每个盒子的球数量。

思路

假设被取出球的盒子为x,取出了y个球,则放球时相当于:

  • 先给每个盒子\lfloor \frac{y}{n} \rfloor个球
  • 把剩下y \mod n个球依次放入对应盒子。(注意分成两个部分算)

这是一个单点查询单点修改区间修改的操作,使用树状数组+差分维护即可。

代码

#include<iostream>
#include<vector>
using namespace std;
#define int long long

template<class T>
struct fenwick{
    vector<T> tr;
    int n;
    fenwick(int _n): n(_n){
        tr.resize(n + 1);
    }

    void add(int a, T b){
        while(a <= n){
            tr[a] += b;
            a += (a & -a);
        }
    }

    T ask(int a){
        T res{};
        while(a){
            res += tr[a];
            a -= (a & -a);
        }
        return res;
    }
};


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

    int n, m;
    cin >> n >> m;
    fenwick<int> fwk(n + 1);
    for(int i = 1; i <= n; i++){
        int x; cin >> x;
        fwk.add(i, x);
        fwk.add(i + 1, -x);
    }
    while(m--){
        int x; cin >> x; x++;
		int y = fwk.ask(x);
		fwk.add(x, -y), fwk.add(x + 1, y);
		fwk.add(1, y / n), fwk.add(n + 1, -y / n);
		fwk.add(x + 1, 1), fwk.add(min(n, x + y % n) + 1, -1);
		if(x + y % n > n) fwk.add(1, 1), fwk.add(y % n - (n - x) + 1, -1);
    }
    for(int i = 1; i <= n; i++) cout << fwk.ask(i) << " ";
    return 0;
}

F - S = 1

大意

给定点(x,y),求一整数点(a,b),使得(0,0),(a,b),(x,y)形成的三角形的面积为1

思路

画一张图:

明显这个三角形面积等于这个长方形的面积减去周边三个小三角形的面积。

S=ay-\dfrac{ab}{2}-\dfrac{xy}{2}-\dfrac{(a-x)(y-b)}{2}

化简可得S=\dfrac{ay-bx}{2},但由于要考虑第二象限,所以S应为|\dfrac{ay-bx}{2}|

使用扩展欧几里德求|ay-bx|=2的一组特解即可。

无解情况:如果2 \mod \gcd(a,b) \ne 0,那么无解。

代码

#include<iostream>
using namespace std;
#define int long long

int exgcd(int a, int b, int &x, int &y){
    if (!b){
        x = 1; y = 0;
        return a;
    }
    int d = exgcd(b, a % b, y, x);
    y -= (a / b) * x;
    return d;
}


signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int x, y, a, b;
    cin >> a >> b;
    int d = exgcd(a, b, y, x);
    x = -x;
    if(2 % d) cout << -1 << endl;
    else{
        x = x * (2 / d);
        y = y * (2 / d);
        cout << x << ' ' << y << endl;
    }
    return 0;
}

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

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

相关文章

nacos配置mysql(windows)

nacos默认是使用的内置数据库derby ,可通过配置修改成mysql,修改成mysql之后&#xff0c;之前配置在derby的数据会丢失 本文使用mysql版本为8.0.22 nacos版本为2.3.1 在mysql里面先创建一个数据库test(名称自定义&#xff0c;和后面配置文件里面的一样就好了) 在上面创建的数据…

6.SpringBoot 日志文件

文章目录 1.日志概述2.日志作用3.使用和观察日志3.1如何观察日志3.2使用日志3.3日志级别3.4日志持久化3.5日志分割 4.日志框架4.1门面模式(外观模式)4.2 SLF4J框架介绍4.3 日志格式的说明4.3.1日志名称 5.日志颜色设置6.总结 大家好&#xff0c;我是晓星航。今天为大家带来的是…

C# 开源SDK 工业相机库 调用海康相机 大恒相机

C# MG.CamCtrl 工业相机库 介绍一、使用案例二、使用介绍1、工厂模式创建实例2、枚举设备&#xff0c;初始化3、启动相机4、取图5、注销相机 三、接口1、相机操作2、启动方式3、取图4、设置/获取参数 介绍 c# 相机库&#xff0c;含海康、大恒品牌2D相机的常用功能。 底层采用回…

去除图像周围的0像素,调整大小

在做分割任务时&#xff0c;经常需要处理图像&#xff0c;如果图像周围有一圈0像素&#xff0c;需要去除掉&#xff0c;重新调整大小 数组的处理 如果图像的最外一圈为0&#xff0c;我们将图像最外圈的图像0去除掉。 import numpy as npdef remove_outer_zeros(arr):# 获取数…

电脑缺失d3dcompiler_43.dll如何修复?多种修复dll问题的有效方法分享

当用户尝试在个人计算机上运行特定的软件游戏时&#xff0c;系统弹出了一条错误提示信息&#xff0c;明确指出“d3dcompiler_43.dll”文件缺失。这个动态链接库文件(dll)是Direct3D编译器的重要组成部分&#xff0c;对于许多基于Windows操作系统的应用程序&#xff0c;尤其是那…

数据库mysql提权四种烧姿势--UDF反弹启动项MOF

免责声明:本问仅做技术交流与学习,请知法守法,不要乱搞等等 目录 前提条件 如何获取最高权限的密码? 一.UDF提权 利用条件: 信息收集 1-看有无plugin目录 2-开启外链 3-开启外连后,MSF启动~ 4-navicat--利用导出的.dll执行命令 利用原理: 执行命令: 二.反弹提权 …

B2024 输出浮点数 洛谷题单

首选需要进行了解的就是%a.bf所代表的含义就行了&#xff0c;直接莽了&#xff0c;没啥解释的笑脸&#x1f644; 在 Python 中&#xff0c;%a.bf 中的参数 a 和 b 是用来格式化浮点数的输出的&#xff0c;具体含义如下&#xff1a; a 表示总输出宽度&#xff0c;包括小数点、…

Pytorch入门实战: 06-VGG-16算法-Pytorch实现人脸识别

第P6周&#xff1a;VGG-16算法-Pytorch实现人脸识别 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 &#x1f3e1; 我的环境&#xff1a; 语言环境&#xff1a;Python3.8 编译器&#xff1a;Jupyter La…

​​​​​​​iOS配置隐私清单文件App Privacy Configuration

推送到TestFlight后邮件收到警告信息如下&#xff0c;主要关于新的隐私政策需要补充&#xff1a; Hello, We noticed one or more issues with a recent submission for TestFlight review for the following app: AABBCC Version 10.10.10 Build 10 Although submission for …

堆的概念、堆的向下调整算法、堆的向上调整算法、堆的基本功能实现

目录 堆的介绍 堆的概念 堆的性质 堆的结构 堆的向下调整算法 基本思想&#xff08;以建小堆为例&#xff09; 代码 堆的向上调整算法 基本思想&#xff08;以建小堆为例&#xff09; 代码 堆功能的实现 堆的初始化 HeapInit 销毁堆 HeapDestroy 打印堆 HeapPrint …

Linux配置腾讯云yum源(保姆级教学)

1. 备份原有的 yum 源配置文件 例如&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 下载腾讯云的 yum 源配置文件 例如&#xff1a; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/…

28.组件事件配合v-model使用

组件事件配合v-model使用 如果是用户输入&#xff0c;我们希望在获取数据的同时发送数据配合v-model来使用 <template><div><h3>ComponentA</h3><ComponentB some-event"getHandle" /><p>ComponentA接受的数据&#xff1a;{{ m…

【Linux文件系统开发】认知篇

【Linux文件系统开发】认知篇 文章目录 【Linux文件系统开发】认知篇一、文件系统的概念二、文件系统的种类&#xff08;文件管理系统的方法&#xff09;三、分区四、文件系统目录结构五、虚拟文件系统&#xff08;Virtual File System&#xff09;1.概念2.原因3.作用4.总结 一…

排序 “叁” 之交换排序

目录 1. 基本思想 2.冒泡排序 2.1 基本思想 2.2 代码示例 2.3 冒泡排序的特性总结 3.快速排序 3.1 基本思想 &#x1f335;hoare版本 &#x1f335;挖坑法 ​编辑 &#x1f335;前后指针版本 ​编辑 3.2 快速排序优化 &#x1f33b;三数取中法选key 3.4 快速排序…

HAL STM32 SSI/SPI方式读取MT6701磁编码器获取角度例程

HAL STM32 SSI/SPI方式读取MT6701磁编码器获取角度例程 &#x1f4cd;相关篇《HAL STM32 I2C方式读取MT6701磁编码器获取角度例程》&#x1f4cc;当前最新MT6701数据手册&#xff1a;https://www.magntek.com.cn/upload/MT6701_Rev.1.8.pdf&#x1f4dc;SSI协议读角度&#xff…

flutter 实现表单的封装包含下拉框和输入框

一、表单封装组件实现效果 //表单组件 Widget buildFormWidget(List<InputModel> formList,{required GlobalKey<FormState> formKey}) {return Form(key: formKey,child: Column(children: formList.map((item) {return Column(crossAxisAlignment: CrossAxisAlig…

4月21日Linux运维用户相关的添加,分组,修改权限等shell脚本开发第一天

4月21日运维用户相关的添加&#xff0c;分组&#xff0c;修改权限等shell脚本开发第一天 第一天主要实现前2个功能 ​ 主要卡在了&#xff1a; 正确的写法如下&#xff0c;注意[]中的空格&#xff0c;要求很严格&#xff01;&#xff01;&#xff01; #!/bin/bash # 先查看已…

LIUNX系统编程:文件系统

目录 1.创建文件的本质 1.1目录本身也是一个文件&#xff0c;也有他自己的inode 1.2LINUX创建文件&#xff0c;一定是在目录中创建文件。 2.重谈文件的增删查改 2.1为什目录没有写权限&#xff0c;就不能新建文件。 2.2.文件的查找 3.路径 3.1挂载 3.2如何理解挂载 1.创…

【QT学习】8.qt事件处理机制,事件过滤器,自定义事件

1.qt事件处理机制 事件处理&#xff1a; 当用户移动鼠标的时候 &#xff0c;创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去&#xff0c;事件管理器 从队列中 取出事件&#xff0c;然后 调用其对应的事件处理函数。 多态机制&#xff1a; &#x…

2023年图灵奖颁发给艾维·维格森(Avi Wigderson),浅谈其计算复杂性理论方面做出的重要贡献

Avi Wigderson是一位以色列计算机科学家&#xff0c;他在计算复杂性理论方面做出了重要的贡献&#xff0c;并对现代计算产生了深远的影响。 Wigderson的主要贡献之一是在证明计算复杂性理论中的基本问题的困难性方面。他证明了许多经典问题的困难性&#xff0c;如图论中的图同构…