Codeforces practice C++ 2024/9/11 - 2024/9/13

news2025/1/11 10:17:27

D. Mathematical Problem

Codeforces Round 954 (Div. 3)

原题链接:https://codeforces.com/contest/1986/problem/D

题目标签分类:brute force,dp,greedy,implementation,math,two pointers

题目难度:1400

题目大意:

输入:

输出:

题目做法:

AC代码 :

#include<bits/stdc++.h>
//#define int long long
//#define int __int128
#define loop(i, n) for(int i = 0; i < n; i++)
#define repeat(i, start, end, step) for(int i = start; i < end; i += step)
#define FastIO ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

using namespace std;
using ll = long long;
using bigint = __int128;

const int maxn = 2e5 + 10;
const int modi = 1e9 + 7;

int n, inips = 0, news[20];
string s, str[20];
int tonum(string t) {
    int res = 0;
    for(int i = 0; i < t.length(); i++) {
        res *= 10;
        res += t[i] - '0';
    }
    return res;
}
int construct(int x = -1, int y = -1) {
    inips = 0;
    for(int i = 0; i < n; i++) str[i] = s[i];
    for(int i = 0; i < n; i++) {
        if(i == x || i == y) {
            str[i + 1] = str[i] + s[i + 1];
            str[i] = "-";
        }
    }
    for(int i = 0; i < n; i++) if(str[i] != "-") news[inips++] = tonum(str[i]);
    int dp[20][2];
    dp[0][0] = dp[0][1] = news[0];
    for(int i = 1; i < inips; i++) {
        dp[i][0] = min(dp[i - 1][1] + news[i], dp[i - 1][0] + news[i]);
        dp[i][1] = min({dp[i][0], dp[i - 1][1] * news[i], dp[i - 1][0] * news[i]});
    }
    return dp[inips - 1][1];
}
void solve() {
    cin >> n >> s;
    int res = 1e9 + 10;
    if(n == 2) {
        cout << construct(0) << '\n';
        return ;
    }
    for(int i = 0; i < n - 1; i++) res = min(res, construct(i));
    cout << res << '\n';
}

signed main() {
    FastIO
    int TestCase = 1;
    cin >> TestCase;
    while(TestCase--) solve();
}

事后ps:Dp比较好像也很好写,就两种状态,预处理也不是很难。

D. Maximize the Root 

Educational Codeforces Round 168 (Rated for Div. 2)

原题链接:https://codeforces.com/problemset/problem/1997/D

题目标签分类:binary search,dfs and similar,dp,greedy,trees

题目难度:1500

题目大意:

给一颗树,规定编号为1的节点为根节点,每个节点上初始会有一个值,你每次可以进行操作,这个操作是选定一个非叶子节点的节点,给此节点上的值加一,此节点除了该节点外的子树种的节点上的值均减去1。规定每次操作后树上所有节点的值非负。

输入:

共 t 组输入数据。

每组数据有三行,第一行输入一个变量 n,代表这棵树有 n 个节点,第二行有 n 个变量 ai 分别代表初始的时候每个节点上的值,第三行有 n - 1 个变量代表树上每个节点的父节点,n - 1 是因为从下标从2开始,1号节点默认为根节点。

输出:

进行不限次数的合法调整过后根节点上的最大值。

题目做法:

如果根节点上的值确定了,那么这棵树的所有节点上的最小数值也就决定了。

因为结果显然是呈线性变化的,所以可以对答案进行二分,满足则往更大里搜索答案,反之往更小搜索,check 函数的写法应该是 dfs 一整颗树来检测当前二分的答案是否满足。dfs的时间复杂度是 n,二分的复杂度是 log\left ( n \right ),所以总复杂度是 O\left ( nlogn \right ) 。

AC代码 :

#include<bits/stdc++.h>
#define int long long
//#define int __int128
#define pb push_back
#define loop(i, n) for(int i = 0; i < n; i++)
#define rep(i, start, end, step) for(int i = start; i <= end; i += step)
#define FastIO ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

using namespace std;
using ll = long long;
using bigint = __int128;

const int maxn = 2e5 + 10;
const int modi = 1e9 + 7;

int a[maxn] ,tval;
vector<int> tr[maxn];
bool check(int now, int val) {
    bool judge = 1;
    if(val < 0 || val >= 1e18 + 10) return 0;
    if(tr[now].size() == 0) return (max((ll)0, val - a[now]) <= 0);
    for(auto it:tr[now]) {
        judge &= check(it,val * (now != 1) + max((ll)0, val - a[now]));
    }
    return judge;
}

void solve() {
    int n, l = 0, r = 1e18 + 10, ans = 0 ,t;
    cin >> n;
    loop(i, n) cin >> a[i + 1], tr[i + 1].clear();
    rep(i, 2, n, 1) cin >> t, tr[t].pb(i);
    while(l <= r) {
        int mid = (l + r) / 2;
        if(check(1, mid)) {
            ans = max(ans, mid);
            l = mid + 1;
        }
        else r = mid - 1;
    }
    cout << ans << '\n';
}

signed main() {
    FastIO int TestCase = 1;
    cin >> TestCase;
    while(TestCase--) solve();
}

事后ps:分析整体情况后还是比较容易想到二分答案的,dfs的时候有细节需要注意可能会爆long long,我二分写得挺烂的,还是按板子来比较稳妥。

A. Distanced Coloring

​​​​​​EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2)

原题链接:https://codeforces.com/problemset/problem/2002/A

题目标签分类:constructive algorithms,implementation,math

题目难度:800

题目大意:

给出 n * m 的网格和一个 k ,满足如下条件的两个点为同一颜色,求填满网格的最小颜色数目。

条件:

题目做法:

在一行上最多就用k个颜色就能填满,如果k小于n的话,k大于n的话就用n个。在同一列上同理。这样最小,还是比较好像的,因为等于k的时候间距最小。

AC代码 :

#include<bits/stdc++.h>
//#define int long long
//#define int __int128
#define pb push_back
#define loop(i, n) for(int i = 0; i < n; i++)
#define rep(i, start, end, step) for(int i = start; i <= end; i += step)
#define FastIO ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

using namespace std;
using ll = long long;
using bigint = __int128;

const int maxn = 2e5 + 10;
const int modi = 1e9 + 7;

void solve() {
    int n, m, k;
    cin >> n >> m >> k;
    cout << min(n, k) * min(m, k) << '\n';
}

signed main() {
    FastIO int TestCase = 1;
    cin >> TestCase;
    while(TestCase--) solve();
}

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

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

相关文章

威雅学校:解锁新学期!与威雅共赴秋实之约

【常州威雅】 九月的风&#xff0c;轻拂过青春的扉页; 新学期的篇章&#xff0c;正待你我提笔书写。 常州威雅再度迎来开学季&#xff0c;我们已准备好为威雅学子们提供一个充满活力与挑战的学习环境。在这里&#xff0c;新的故事将被书写&#xff0c;新的梦想将被点燃&#xf…

Van-ZYL算法

系统模型&#xff1a;由于观测散射矩阵一定是对称的&#xff08;系统压缩后的测量结果&#xff09;&#xff0c;且原S矩阵是互易的。此时系统由R T转置 Shv Svh 目标的互易 Ohv Ovh 接收数据的固有属性 R T转置 目标互易接收数据固有属性推导 本文串扰模型有两种理解。 1、…

这个桌面日历真不错 笔记 提醒 生日记录 打卡 翻译都有 真的太方便了!

这个桌面日历真不错 笔记 提醒 生日记录 打卡 翻译都有 真的太方便了&#xff01;日历产品非常的多&#xff0c;如何选择一个合适自己的桌面日历&#xff0c;这个很重要&#xff0c;今天小编给大家介绍这个芝麻日历&#xff0c;一起看下它有些什么功能&#xff0c;是不是你需要…

RFID射频模块(MFRC522 STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 MFRC522.h文件 MFRC522.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 RC522 RFID射频模块是一款广泛应用于非接触式RFID系统中的核心组件&#xff0c;由NXP&…

大一新生以此篇开启你的算法之路

各位大一计算机萌新们&#xff0c;你们好&#xff0c;本篇博客会带领大家进行算法入门&#xff0c;给各位大一萌新答疑解惑。博客文章略长&#xff0c;可根据自己的需要观看&#xff0c;在博客中会有给大一萌新问题的解答&#xff0c;请不要错过。 入门简介&#xff1a; 算法…

STM32项目分享:智能风扇系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.com/video/BV1xw4m1Y7sA…

node解析dxf文件

1、dxf数据说明 DXF是一种开放的矢量数据格式&#xff0c;可以分为两类&#xff1a;ASCII格式和二进制格式&#xff1b;ASCII具有可读性好的特点&#xff0c;但占用的空间较大&#xff1b;二进制格式则占用的空间小、读取速度快。由于AutoCAD是最流行的CAD系统&#xff0c;DXF也…

基于python+django+vue的视频点播管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的视…

如何在Django中创建新的模型实例

在 Django 中&#xff0c;创建新的模型实例可以通过以下几个步骤进行&#xff0c;通常包括定义模型、创建模型实例、保存数据到数据库&#xff0c;以及访问和操作这些实例。 1、问题背景 在 Django 中&#xff0c;可以使用 models.Model 类来创建模型&#xff0c;并使用 creat…

一种多策略改进小龙虾智能优化算法MSCOA 改进策略:种群混沌映射初始化+透镜成像反向学习+黄金正弦变异策略

一种多策略改进小龙虾智能优化算法MSCOA 改进策略&#xff1a;种群初始化精英反向透镜成像反向学习黄金正弦变异策略 文章目录 一、小龙虾COA基本原理二、改进策略2.1种群初始化 映射2.2 透镜成像反向学习2.3 黄金正弦变异策略 三、实验结果四、核心代码五、代码获取六、总结 一…

Python库Plotly学习笔记

Plotly是一个用于创建交互式图形的Python库。它提供了丰富的图表类型&#xff0c;包括散点图、线图、柱状图、热力图、饼图等&#xff0c;以及高级的可视化功能&#xff0c;如动画、交互、数据缩放和拖动等。 Plotly库的主要特点&#xff1a; 交互式图表&#xff1a;Plotly创…

栈和队列的算法题目(C语言)

1. 括号匹配问题 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 利用栈后入先出的特性解题 1.判断字符串是否为空 为空返回 2.创建栈&#xff0c;遍历字符串 第一个字符是左括号的情况&#xff1a;入栈->继续遍历下一个字符 第一个字符是右括号的情况&#xf…

Caffenie配合Redis做两级缓存,Redis发布订阅实现缓存一致更新

一、什么是两级缓存 在项目中。一级缓存用Caffeine&#xff0c;二级缓存用Redis&#xff0c;查询数据时首先查本地的Caffeine缓存&#xff0c;没有命中再通过网络去访问Redis缓存&#xff0c;还是没有命中再查数据库。具体流程如下 二、简单的二级缓存实现-v1 目录结构 2…

手写排班日历

手写排班日历&#xff1a; 效果图&#xff1a; vue代码如下&#xff1a; <template><div class"YSPB"><div class"title">排班日历</div><div class"banner"><span classiconfont icon-youjiantou click&qu…

【机器学习】分类与回归——掌握两大核心算法的区别与应用

【机器学习】分类与回归——掌握两大核心算法的区别与应用 1. 引言 在机器学习中&#xff0c;分类和回归是两大核心算法。它们广泛应用于不同类型的预测问题。分类用于离散的输出&#xff0c;如预测图像中的对象类型&#xff0c;而回归则用于连续输出&#xff0c;如预测房价。…

.net core 通过Sqlsugar生成实体

通过替换字符串的方式生成代码&#xff0c;其他代码也可以通这种方式生成 直接上代码 设置模板 将这几个模板文件设置为&#xff1a;嵌入资源 模板内容&#xff1a; using SqlSugar;namespace {Namespace}.Domain.Admin.{ModelName}; /// <summary> /// {TableDisplay…

浪潮光纤交换机FS8500、FS8600、FS8900端口数量授权扩容方法

浪潮光纤交换机FS8500、FS8600、FS8900系列是OEM博通G610、G620、G630光纤交换机&#xff0c;激活方法也是和博通一样的 获取设备License id 登录光纤交换机&#xff0c;可以使用Console线&#xff0c;也可以使用网线ssh登录默认ip&#xff1a;10.77.77.77&#xff0c;这里推…

【北京迅为】《STM32MP157开发板使用手册》- 第二十六章Cortex-M4 GPIO_蜂鸣器实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

浅谈电动汽车公共充电桩布局设计及解决方案

摘要&#xff1a;随着社会现代化的深入推进&#xff0c;环境保护和资源利用可持续化发展的重要性愈发显著。电动汽车因其在节能、效率、环保等方面的突出优势&#xff0c;开始越来越多的进入城市交通系统。然而目前充电桩等相关配套设施缺乏合理的设置依据&#xff0c;不利于电…

【区块链通用服务平台及组件】中金数据云链平台 | FISCO BCOS应用案例

近年来&#xff0c;湖北省、武汉市区块链产业加快发展&#xff0c;在供应链管理、产品溯源等诸多领域逐步落地&#xff0c;形成了良好创新 创业氛围。2022 年 8 月&#xff0c;武汉市正式获批建设国家区块链发展先导区。中金数据&#xff08;武汉&#xff09;超算技术有限公司以…