补题篇--codeforces

news2024/11/14 16:23:49

传送门:Problem - G - Codeforces

题意:

思路:

注意:

n 的范围很小,大概率考察状态压缩

 因此这个题可以考虑用 状压dp

f[i][j] 表示状态为 i 的选法,以第 j 首歌为结尾的播放列表中的歌曲总数

f[ i | 1 << k ][k] = max( f[ i | 1 << k ][k] , f[i][j] + 1 );

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
const int N = 17;
int f[1 << N][N];
void solve()
{
    int n;
    map<string , int> mp;
    cin >> n;
    vector<int> a( n ) , b ( n );
    int cnt = 0;
    for( int i = 0 ; i < n; i++)
    {
        string x , y; cin >> x >> y;
        if( !mp.count(x) ) mp[x] = ++cnt;
        if( !mp.count(y) ) mp[y] = ++cnt;
        a[i] = mp[x];
        b[i] = mp[y];
    }
    for( int i = 0 ; i < 1 << n; i++)
    {
        for( int j = 0 ; j < n; j++)
        {
            f[i][j] = -2e18;
        }
    }
    for( int i = 0 ; i < 1 << n; i++)
        for( int j = 0 ; j < n ;j++)
            if( i >> j & 1 ) f[i][j] = 1;
    // 初始化
    for( int i = 0 ; i < 1 << n; i++)
    {
        for( int j = 0 ; j < n ;j++)
        {
            if( i >> j & 1 )
            {
                for( int k = 0 ; k < n; k++)
                {
                    if( !(i >> k & 1) && ( a[j] == a[k] || b[j] == b[k] ) )
                        f[i | 1ll << k ][k] = max( f[i | 1ll << k][k] , f[i][j] + 1 );
                }
            }
        }
    }
    int ans = 0;
    for( int i = 0 ; i < n ; i++)
    {
        ans = max( ans , f[(1ll << n) - 1][i] );
    }
    cout << n - ans << endl;
}
signed main()
{
    int tt;cin >> tt;
    while(tt--)solve();
    return 0;
}

传送门:Problem - B - Codeforces

题意:

思路:

转换 a[i-1] = a[i-1] - 1 ; a[i] = a[i] - 2 ;  a[i+1] = a[i+1] - 1 等价为 a[i] = a[i] - 1 ; a[i+1] = a[i+1] - 2; a[i+2] = a[i+2] - 1;

操作a[i] 时 , 会影响a[i + 1] , a[i + 2]的值,当a[ i + 1 ] < 0 或 a[i + 2] < 0  不符合题意

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
    int n;
    cin >> n;
    vector<int> a( n + 1 );
    for( int i = 1; i <= n;i++) cin >> a[i];
    for( int i = 1; i <= n - 2 ; i++)
    {
        if( a[i] < 0 ) {
            puts("NO"); return;
        }
        
        a[i + 1] -= 2 * a[i];
        a[i + 2] -= a[i]; a[i] = 0;
    }
    bool flag = true;
    for( int i = 1 ; i <= n; i++)
    {
        if( a[i] )flag = false;
    }
    if( flag ){
        puts("YES");
    }
    else puts("NO");
}
signed main()
{
    int tt;cin >> tt;
    while(tt--)solve();
    return 0;
}

 传送门:Problem - C - Codeforces

题意:

思路:

如果遇到 map 时 去掉 'a' , pie 时 去掉 'i' 

此时有个及其特殊的测试用例:mapie 这种情况需要特判(打比赛的时候就要小心这种特殊的测试用例,并且要会枚举)

AC代码:

#include<bits/stdc++.h>
using namespace std;
void solve()
{
    int n;cin >> n;
    string s;
    cin >> s;
    s = " " + s;
    int ans = 0;
    for( int i = 2 ; i <= n - 1; i++)
    {
        if( s[i] == 'i'&& s[i-1] == 'p' && s[i + 1] == 'e' ){
            if( i >= 4 ) {
                if( s[i-2] == 'a' && s[i-3] == 'm' ) continue;
            }
            ans++;
        }
        else if( s[i] == 'a' && s[i - 1] == 'm' && s[i + 1] == 'p' )ans++ , i++;
    }
    cout << ans << endl;
}
signed main()
{
    int tt;cin >> tt;
    while(tt--)solve();
    return 0;
}

传送门:Problem - C - Codeforces

题意:

思路:

假设 a > b

要求最小值 -> a ^ x 要变小 &&  b ^ x 要变大

若 a :  1101101

     b :  1100011

           若通过异或 使 a 减小 , b 增大,并且操作后的 a < b,其实是重复的,无需改变第一位不同的

           若改变第五位,a减小,b增大,并且操作后的 a > b,改变第五位 .......

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
void solve()
{
    int a , b , r;
    cin >> a >> b >> r;
    if( a < b ) swap(a , b);
    int ans = 0;
    int arr[62] , brr[62];
    // 一般long long 用62个即可
    for( int i = 0 ; i < 62 ; i++)
    {
        if( a >> i & 1 ) arr[i] = 1;
        else arr[i] = 0;
        if( b >> i & 1 ) brr[i] = 1;
        else brr[i] = 0;
    }
    bool flag = true;
    for( int i = 61 ; i >= 0 ; i-- )
    {
        if( arr[i] != brr[i] )
        {
            if( flag ) flag = false;
            else {
                if( brr[i] == 0 )
                {
                    int temp = 1ll << i;
                    if( ans + temp <= r ) ans += temp;
                }
            }
        }
    }
    cout << (a - ans) - ( b + ans ) << endl;
}
signed main()
{
    int tt;cin >> tt;
    while(tt--)solve();
    return 0;
}

传送门:Problem - G - Codeforces

思路:一个数组 ( n >= 2 ) 经过任意次 + - 操作,所得到的新数组可以由 gcd( a[1] , a[2] ... , a[n] )

表示

设 d = gcd( a[1] , a[2] ... a[n] )

解决此问题 肯定要使数组尽可能小,则就表示为 { 0 * d , 1 * d , 2 * d , ( n - 1 ) * d }

任意两个元素中间的值 为 d - 1 个数不存在,0 ,( n - 1 ) * d 中间不存在的元素一共有 ( n - 1 ) * ( d - 1 ),若 k > ( n - 1 ) * ( d - 1 ) 则答案大于 (  n - 1 )  * d ,也就是 ( n - 1 ) * d + ( k - ( n - 1 ) * ( d - 1 ) ) ,若k <= ( n - 1 ) * ( d - 1 ) ,则可以举一个测试得答案

AC代码:


#include<bits/stdc++.h>
using namespace std;
#define int long long
int gcd(int a, int  b)
{
    return b ? gcd(b, a % b) : a;
}
void solve()
{
    int n, k;
    cin >> n >> k;
    vector<int> a(n + 1);
    int d = 0;
    for (int i = 1; i <= n; i++) cin >> a[i], d = gcd(d, a[i]);
    if (n == 1)
    {
        if (k > a[1]) cout << k << endl;
        else cout << k - 1 << endl;
        return;
    }
    int t = (n - 1) * (d - 1);
    if (k > t)
    {
        k -= t;
        cout << (n - 1) * d + k << endl;
    }
    else {
        if (k % (d - 1) == 0)
            cout << k / (d - 1) * d - 1 << endl;
        else cout << k / (d - 1) * d + k % (d - 1) << endl;
    }
}
signed main()
{
    int tt; cin >> tt;
    while (tt--)solve();
    return 0;
}

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

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

相关文章

生活方式对人健康影响非常大 第三篇

身体健康因素中 生活方式占到60% 赶紧去调整自己哪错了 上游的生活方式管理 是药三分毒 药物会影响身体肝肾功能,代谢 所以你要去找上游到底是我哪错了 短板越多 个健康状态越差 饮食管理是生活方式管理中难度最大的 原则1:与基因相对应相平衡 只吃素 会导致大脑萎…

【书生大模型实战营】进阶岛 第6关 MindSearch 快速部署

文章目录 【书生大模型实战营】进阶岛 第6关 MindSearch 快速部署MindSearch 部署到Github Codespace 和 Hugging Face Space创建开发机 & 环境配置MindSearch下载及环境配置获取硅基流动API Key作业 - 基础任务在Github codespaces 启动 MindSearch通过 Github Codespace …

spring框架4 - bean加载

本节内容&#xff1a;beanFactory.getBean("user"); Testvoid testGetBean() {Gun gun beanFactory.getBean("m416", Gun.class);log.info("gun{}", gun);} public <T> T getBean(String name, Class<T> requiredType) throws Bea…

2024年威胁暴露管理两大新趋势

文章目录 前言一、威胁暴露管理的两大新类别二、EAP:减少对CVSS的依赖三、AEV:锁定现实威胁四、CTEM实施面临的挑战与应对策略五、主动风险管理的新时代前言 2024年,安全运营(SecOps)领域迎来重大变革。根据Gartner最新发布的《安全运营技术成熟度曲线》报告,持续威胁暴…

一款人脸识别的芯片内部

三年前在一家3D人脸识别的芯片公司&#xff0c;先后做过两个稍具规模的芯片项目&#xff0c;因为各种原因&#xff0c;这些最终都没有上市&#xff0c;成为沉寂在实验室的产物。但是这些芯片的总体设计都颇具匠心&#xff0c;自己在当时也很有触动&#xff0c;现在拿出一点来供…

揭秘难以复现Bug的解决之道:堆栈分析实战

目录 引言 友情提示难以复现的Bug之痛 寄存器(SP、LR)详解 SP寄存器&#xff1a;堆栈的指路明灯LR寄存器&#xff1a;函数调用与异常处理的桥梁 问题分析与解决流程揭秘 保存现场分析堆栈数据 堆栈结构入栈顺序 案例 J-Link工具 常用命令保存RAM数据到本地 分析栈基本信息 分…

【最新华为OD机试E卷】最大报酬(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

【Python】企业排名、地域分布与词云分析可视化

目录 数据处理 Pyecharts 各国数量 分布地图 数量占比 城市分布 营业收入 利润转化 数据处理 2021世界五百强企业数据&#xff0c;包含公司名称、公司链接、营业收入(百万美元)、利润(百万美元)、国家等信息。数据集下载&#xff1a;Python企业排名、地域分布与词云分…

opencv-python 图像增强十七:泊松图像融合

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、概述二&#xff0c;实现&#xff1a; 前言 在深入探讨图像处理与计算机视觉领域的过程中&#xff0c;我们不禁对图像融合技术的精妙与实用性感到着迷。图像…

物联网之云平台架构

一&#xff0c;一个典型的物联网云平台 一个典型的物联网&#xff08;IoT&#xff09;云平台需要实现多个功能&#xff0c;以支持物联网设备的接入、数据处理、设备管理、实时控制等需求。 &#xff08;一&#xff09;核心功能 1&#xff0c;设备接入与管理&#xff1a; - 设…

【达梦数据库】DBeaver连接达梦数据库

打开 DBeaver&#xff0c;新建驱动管理器 新建驱动管理器&#xff0c;配置信息如下 添加库文件&#xff0c;jar包使用项目上使用的jdbc驱动包即可&#xff0c;找到本地maven仓库jar位置进行添加。 <dependency><groupId>com.dameng</groupId><artifact…

打开配置好的gee的jupyter Lab环境

目录 打开anconda 打开箭头下的cmd环境&#xff0c;输入jupyter lab

Spring MVC 八股文

目录 重点 SpringMVC的工作原理 Spring MVC 拦截器 Spring MVC 的拦截器和 Filter 过滤器有什么差别&#xff1f; 基础 什么是SpringMVC SpringMVC的优点 Spring MVC的核心组件 Spring MVC的常用注解由有哪些 Controller 注解有什么用 重点 SpringMVC的工作原理 1、客…

人脸静态活体检测(高精度版) API 对接说明

人脸静态活体检测&#xff08;高精度版&#xff09; API 对接说明 本文将介绍人脸静态活体检测&#xff08;高精度版&#xff09;API 对接说明&#xff0c;它可用于对用户上传的静态图片进行防翻拍活体检测&#xff0c;以判断是否是翻拍图片。 接下来介绍下 人脸静态活体检测…

浅谈sizeof() 函数在Arduino中的使用

下面浅谈 sizeof() 函数在Arduino中的使用 注意&#xff1a;这里用sizeof(str[2])&#xff0c;sizeof(str[0])&#xff0c;sizeof(str[1])都是一样的 String str[6]{"abc","defg","hijk","lm","n"}; int num; void setup…

C++项目详细分析_WebServer

前言 项目地址 项目介绍 源码详细分析 项目路径如下&#xff1a; 1.webserver.cpp 头文件和构造函数 #include "webserver.h"WebServer::WebServer() {// http_conn类对象users new http_conn[MAX_FD];// root文件夹路径char server_path[200];getcwd(server…

【C++】N卡无法录制,如何下载C++

N卡无法录制&#xff0c;如何下载C C 官方下载路径&#xff1a; https://www.microsoft.com/zh-cn/download/details.aspx?id48145&134b2bb0-86c1-fe9f-d523-281faef416951&751be11f-ede8-5a0c-058c-2ee190a24fa6True 第一步 检查N卡驱动是不是最新版本 第二步 下载…

拓扑结构_替代SN6505推挽式低噪声隔离变压驱动器输出功率1-3W

PC6505 是一款专门为小体积、低待机功耗微功率隔离电源而设计的推挽式变压器驱动器&#xff0c;其外围只需匹配简单的输入输出滤波电容、隔离变压器和整流电路&#xff0c;即可实现 3.3V 或 5V 输入、3.3V~24V 输出、输出功率 1~3W 的隔离电源。 PC6505 芯片内部集成振荡器&am…

简单的棒棒图绘制教程

原文教程链接&#xff1a;R 语言绘图 | GO、KEGG等富集棒棒图 往期部分文章 1. 最全WGCNA教程&#xff08;替换数据即可出全部结果与图形&#xff09; WGCNA分析 | 全流程分析代码 | 代码一 WGCNA分析 | 全流程分析代码 | 代码二 WGCNA分析 | 全流程代码分享 | 代码三 WGC…

stun和trun

在 WebRTC 中&#xff0c;STUN&#xff08;Session Traversal Utilities for NAT&#xff09;和 TURN&#xff08;Traversal Using Relays around NAT&#xff09;是用于NAT穿透的两种不同的技术&#xff0c;它们解决的问题不同&#xff0c;因此在某些情况下需要同时使用。 ST…