ABC341 A-F

Toyota Programming Contest 2024#2(AtCoder Beginner Contest 341) - AtCoder

B读不懂题卡了,F读假题卡了,开题开慢了rank++了

A - Print 341

题意:

打印一串交替出现的包含N个0,N+1个1的01串

代码:

void solve()
{
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i)
        printf("10");
    printf("1");
}

B - Foreign Exchange

题意:

有N个国家的货币,每个国家的货币初始有Ai个,国家 i 的货币可以换为国家 i + 1 的货币,比例为Si : Ti,问最多能拥有多少国家N的货币

题解:

从前往后尽量换完换即可

LL a[N];
void solve()
{
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i)
        scanf("%lld", &a[i]);
    for (int i = 1; i < n; ++i)
    {
        LL s, t;
        scanf("%lld%lld", &s, &t);
        t *= a[i] / s;
        a[i + 1] += t;
    }
    printf("%lld\n", a[n]);
}

C - Takahashi Gets Lost

题意:

给出N行M列的图,'.'表示可以经过的格子,'#'表示不能经过的格子,给出一串指令集,包含LRUD四种指令(分别表示往左右上下走,具体解释见原题),问有多少个初始位置能满足执行以上一串指令时不经过'#'

题解:

500^3暴力即可

char op[N], mp[N][N];
int check(int x, int y)
{
    int i = 1;
    while (op[i])
    {
        if (mp[x][y] == '#')return 0;
        if (op[i] == 'L')y -= 1;
        if (op[i] == 'R')y += 1;
        if (op[i] == 'U')x -= 1;
        if (op[i] == 'D')x += 1;
        ++i;
    }
    return mp[x][y] == '.';
}
void solve()
{
    int n, m, t;
    scanf("%d%d%d%s", &n, &m, &t, op + 1);
    for (int i = 0; i <= n + 1; ++i)
    {
        for (int j = 0; j <= m + 1; ++j)
            mp[i][j] = '#';
    }
    for (int i = 1; i <= n; ++i)
    {
        getchar();
        for (int j = 1; j <= m; ++j)
            mp[i][j] = getchar();
    }
    int ans = 0;
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 1; j <= m; ++j)
            ans += check(i, j);
    }
    printf("%d\n", ans);
}

D - Only one of two

题意:

找出第k个是n的倍数或者是m的倍数切不同时是n,m的倍数的数

题解:

关于x是第几个数可以直接通过容斥求得:f(x) = x / n + x / m - 2 * (x / lcm(n, m)),然后二分答案即可

LL n, m, k, lcm;
LL gcd(LL x, LL y)
{
    return y ? gcd(y, x % y) : x;
}
LL check(LL x)
{
    return x / n + x / m - 2 * (x / lcm);
}
void solve()
{
    scanf("%lld%lld%lld", &n, &m, &k);
    lcm = n * m / gcd(n, m);
    LL l = 0, r = 2e18;
    while (l < r)
    {
        LL mid = l + r >> 1;
        if (check(mid) < k)
            l = mid + 1;
        else
            r = mid;
    }
    printf("%lld\n", l);
}

E - Alternating String

题意:

给出一个长度为n的01串,当一个01串被称为好的必须符合以下条件:任意相邻数字不同(01交替出现)。你需要对这个01串进行m次询问,询问分为两种

1 L R:反转区间L到R内的元素(0变成1,1变成0)

2 L R:查询L到R的子串是否是好的

题解:

我们可以仅考虑对于每对相邻元素是否相同,不考虑具体每个元素是0还是1,对于修改操作仅会使得(l - 1, l)与(r, r + 1)这两对相邻元素是否相同的性质反转,我们可以用一个set存所有不相同的相邻元素位置(如存左边的元素下标)。对于修改操作我们仅需查询set内是否已经存在l - 1,若存在则删除,不存在则加入,右边同理,这样维护这个集合。对于查询操作我们仅需查询set中是否不存在l, r - 1范围的元素即可

char ch[N];
set<int>st;
void solve()
{
    int n, m;
    scanf("%d%d%s", &n, &m, ch + 1);
    for (int i = 1; i < n; ++i)
    {
        if (ch[i] == ch[i + 1])
            st.insert(i);
    }
    while (m--)
    {
        int op, l, r;
        scanf("%d%d%d", &op, &l, &r);
        if (op == 1)
        {
            if (st.find(l - 1) != st.end())
                st.erase(l - 1);
            else
                st.insert(l - 1);
            if (st.find(r) != st.end())
                st.erase(r);
            else
                st.insert(r);
        }
        else
        {
            auto it = st.lower_bound(l);
            if (it == st.end() || *it >= r)
                printf("Yes\n");
            else
                printf("No\n");
        }
    }
}

F - Breakdown

题意:

给出一张n个点m条边的无向简单图,每个点都有一个权值Wi,初始每个点上面都放有Ai个棋子,你需要进行以下操作直至棋盘上没有棋子:

选择一个棋子,删除它,记改棋子所在点的编号为x,选择一个点集S,需要使得集合内的所有点与点x相邻,且\sum _{y\in S}W_{y}<W_{x},并在每个属于点集S的点放上一颗棋子

求最大的操作次数

应该也可以线段树做(可能能写类似于维护最大区段和的写法),但上面做法更简单就懒得想了

题解:

背包DP,我们可以对每个点求一个 Si 表示在这个点上放一个棋子最多能进行多少次操作,与它相连的 x 个点看为 x 个物品,每个物品 j 的重量为 wj ,价值为 sj ,当前节点的容量为 wi - 1 ,显然这是一个01背包问题。

其次我们需要按 Wi 的值从小到大依次求每个点的 Si ,因为当我们求 i 点的 Si 时只会用到 Wj < Wi 的点做背包,只有当所有 Wj < Wi 的点的 Sj 才能求 Si

int w[N];
PII t[N];
vector<int>e[N];
LL s[N];
void solve()
{
    int n, m;
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= m; ++i)
    {
        int u, v;
        scanf("%d%d", &u, &v);
        e[u].push_back(v);
        e[v].push_back(u);
    }
    for (int i = 1; i <= n; ++i)
    {
        scanf("%d", &w[i]);
        t[i] = { w[i],i };
    }
    sort(t + 1, t + 1 + n);
    for (int i = 1; i <= n; ++i)
    {
        int u = t[i].second;
        vector<LL>dp(w[u]);
        for (auto v : e[u])
        {
            for (int j = w[u] - 1; j >= w[v]; --j)
                dp[j] = max(dp[j], dp[j - w[v]] + s[v]);
        }
        for (auto j : dp)
            s[u] = max(s[u], j + 1);
    }
    LL ans = 0;
    for (int i = 1, x; i <= n; ++i)
        scanf("%d", &x), ans += x * s[i];
    printf("%lld\n", ans);
}

G - Highest Ratio

赛时不会做,赛后看群友说的:

记 Si 为前 i 个元素的前缀和,在平面上放N个点(i, Si),第 x 个点到第 y 个点连线的斜率即为区间(x + 1, y)的平均值(平均值 = (Sy - Sx) / (y - x) = 斜率),在这个图上求凸包即可,代码下次再补()

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

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

相关文章

【案例8】用户中心实现涉及内容和过程

图1 如图1是用盒子模型内容实现的&#xff0c;但是需要了解一些内容。 一.内容知识引入 1.内边距属性&#xff08;padding&#xff09; 为了调整盒子在网页中的显示位置&#xff0c;常常需要为元素设置内边距。内边距也被称为内填充&#xff0c;是指元素内容和边框之间的距离…

Windows程序互斥锁 - 一个程序同时仅允许运行一个实例

Windows程序互斥锁 - 一个程序同时仅允许运行一个实例 前言 鉴于应用逻辑需要&#xff0c;有些Windows应用同时只能运行一个实例。例如&#xff1a;一个电脑只能同时运行一个微信&#xff08;手速快了当我没说&#xff0c;不信你去试试&#xff09;。 怎么实现呢&#xff1f…

Unity 减低GC和优化

文章目录 在Unity中&#xff0c;垃圾收集&#xff08;Garbage Collection, GC&#xff09;是一项重要的内存管理机制&#xff0c;但过度的GC活动可能会导致性能瓶颈。优化Unity项目中的GC涉及减少不必要的对象分配和生命周期管理。以下列举了五个实例来详细说明如何降低GC负担并…

前端工程化面试题 | 11.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

基于ORB-SLAM2与YOLOv8剔除动态特征点

基于ORB-SLAM2与YOLOv8剔除动态特征点 以下方法以https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download#freiburg3_walking_xyz数据集进行实验测试APE 首先在不剔除动态特征点的情况下进行测试&#xff1a; 方法1:segment坐标点集合逐一排查剔除 利用YOLOv8的segm…

Python如何实现定时发送qq消息

因为生活中老是忘记各种事情&#xff0c;刚好又在学python&#xff0c;便突发奇想通过python实现提醒任务的功能&#xff08;尽管TIM有定时功能&#xff09;&#xff0c;也可定时给好友、群、讨论组发送qq消息。其工作流程是&#xff1a;访问数据库提取最近计划——>根据数据…

旅游出门千万别忘带这些!花的不多,享受翻倍!随身wifi看这篇,高性价比高口碑随身wifi推荐

春节长假&#xff0c;大家都去哪儿玩了呢&#xff1f;我反正带着我的小背包&#xff0c;走遍了祖国的大好河山&#xff01; 得益于之前几次长假出行的经验&#xff0c;这次出行体验十分完美。除了详细完备的出行攻略&#xff0c;还有就是一些出行好物&#xff0c;虽然不起眼&am…

第三百四十八回

文章目录 1. 概念介绍2. 使用方法2.1 List2.2 Map2.3 Set 3. 示例代码4. 内容总结 我们在上一章回中介绍了"convert包"相关的内容&#xff0c;本章回中将介绍collection.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的内容是col…

Slider滑动输入条(antd-design组件库)简单使用

1.Slider滑动输入条 滑动型输入器&#xff0c;展示当前值和可选范围。 2.何时使用 当用户需要在数值区间/自定义区间内进行选择时&#xff0c;可为连续或离散值。 组件代码来自&#xff1a; 滑动输入条 Slider - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-de…

【leetcode994】腐烂的橘子(BFS)

文章目录 一、题目二、思路三、代码 一、题目 二、思路 首先将所有烂橘子入队&#xff0c;然后常规BFS遍历&#xff0c;注意while的截止条件除了队列为空&#xff0c;新鲜橘子数量大于0&#xff08;没新鲜橘子也没必要继续遍历&#xff0c;保证时间计算的正确性&#xff09;&a…

linux内核模块__module_address()函数详解--01

亲爱的粉丝朋友们大家好&#xff0c;为了更好的服务大家&#xff0c;提升分析问题和解决问题的能力&#xff0c;先针对Linux内核里面的API函数进行详细分析&#xff0c;并利用案例进行说明&#xff0c;加强对内核API函数的认识。 第一&#xff1a;函数原型 //函数原型struct m…

【半监督图像分割 2023 】BHPC

【半监督图像分割 2023 】BHPC 论文题目&#xff1a;Semi-supervised medical image segmentation via hard positives oriented contrastive learning 中文题目&#xff1a;通过面向硬阳性的对比学习进行半监督医学图像分割 论文链接&#xff1a; 论文代码&#xff1a;https:/…

C#开源免费的Windows右键菜单管理工具

前言 今天分享一个C#开源、免费、纯粹的Windows右键菜单管理工具&#xff1a;ContextMenuManager。 工具主要功能 程序支持国际化多语言显示。启用或禁用文件、文件夹、新建、发送到、打开方式、自定义文件格式、IE浏览器、WinX等右键菜单项目。对上述场景右键菜单项目进行修…

量子算法入门——3.狄拉克符号与量子态(1)

参考资料&#xff1a; 【【零基础入门量子计算-第04讲】狄拉克符号与量子态】 来自b站up&#xff1a;溴锑锑跃迁 建议关注他的更多高质量文章&#xff1a;CSDN&#xff1a;【溴锑锑跃迁】 1. 狄拉克符号 从生活实例引导到狄拉克符号狄拉克符号 注意这里ket是| >(右矢)&a…

[力扣 Hot100]Day28 两数相加

题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都…

基于JAVA的新能源电池回收系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…

如何使用python 挑战将ai生成的概念图制作成2d游戏

要使用Python将AI生成的概念图制作成2D游戏,你可以遵循以下步骤: 生成概念图: 使用AI图像生成工具(如DALL-E、DeepArt等)来创建你的游戏概念图。保存生成的图像文件,通常为PNG或JPEG格式。选择游戏引擎: 对于Python,一个流行的游戏开发库是Pygame(pygame.org)。安装P…

Mamba详解

深度学习新架构Mamba 论文介绍 Mamba: Linear-Time Sequence Modeling with Selective State Spaces 关注微信公众号: DeepGoAI 项目地址&#xff1a;https://github.com/state-spaces/mamba &#xff08;已经6.3k&#xff09; 论文地址&#xff1a;https://arxiv.org/abs/…

【Java多线程进阶】JUC常见类以及CAS机制

1. Callable的用法 之前已经接触过了Runnable接口&#xff0c;即我们可以使用实现Runnable接口的方式创建一个线程&#xff0c;而Callable也是一个interface&#xff0c;我们也可以用Callable来创建一个线程。 Callable是一个带有泛型的interface实现Callable接口必须重写cal…

GEE使用 Sentinel-1 SAR影像 和 Otsu 方法绘制洪水地图

洪水是世界上最常见、破坏性最大的自然灾害之一,造成了巨大的生命和财产损失。此外,随着气候变化的影响,近年来,洪灾变得更加频繁和不可预测。为了最大限度地减少生命和财产损失,必须迅速发现洪水蔓延的情况,并及时采取必要的干预措施。洪水蔓延探测大多使用光学传感器或…