Codeforces Round 871 (Div. 4)(A~H)

news2024/11/16 11:32:17

比赛链接

Dashboard - Codeforces Round 871 (Div. 4) - Codeforces

A. Love Story

找到与codeforces 有多少个不同的字符。

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;
string s = "codeforces";
void solve() {
    string st;
    cin >> st;
    int ans = 0;
    for (int i = 0; i < st.size(); i++)
    {
        if (st[i] != s[i])ans++;
    }
    cout << ans << "\n";
    
}
signed main() {

    ios;
    TEST
    solve();
    return 0;
}

B. Blank Space

找连续最长的0.

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;

void solve() {
    int n;
    cin >> n;
    int cnt = 0, ans = 0;
    for (int i = 1; i <= n; i++)
    {
        int x;
        cin >> x;
        if (x == 0) cnt++;
        else
        {
            ans = max(ans, cnt);
            cnt = 0;
        }
    }
    ans = max(ans, cnt);
    cout << ans << "\n";
}
signed main() {

    ios;
    TEST
    solve();
    return 0;
}

C. Mr. Perfectly Fine

分成01、10、11的三种情况,找全部的最小值,前面两个的最小值相加与第三个的最小值比较出最小值。

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;

void solve() {
    int n;
    cin >> n;
    int c1 = 1e9, c2 = 1e9, c3 = 1e9;
    for (int i = 1; i <= n; i++)
    {
        int t;
        cin >> t;
        string s;
        cin >> s;
        if (s == "01") c2 = min(c2, t);
        if (s == "10") c1 = min(c1, t);
        if (s == "11") c3 = min(c3, t);
    }
    int res = min(c1 + c2, c3);
    if (res != 1e9)
        cout << min(c1 + c2, c3) << "\n";
    else cout << "-1\n";
}
signed main() {

    ios;
    TEST
    solve();
    return 0;
}

D. Gold Rush

按照题意可以将一堆分成三堆,看看目标是否出现即可,搜索。

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;

void solve() {
    int n, m;
    cin >> n >> m;
    if (m > n)
    {
        cout << "NO\n";
        return;
    }
    if (n == m)
    {
        cout << "YES\n";
        return;
    }
    queue<int>q;
    q.push(n);
    while (q.size())
    {
        int k = q.front();
        q.pop();
        if (k == m)
        {
            cout << "YES\n";
            return;
        }
        if (k < m|| k % 3 != 0) continue;
        int t=k / 3;
        q.push(t);
        q.push(t * 2);
        
    }
    cout << "NO\n";
}
    
signed main() {

    ios;
    TEST
    solve();
    return 0;
}

E. The Lakes

dfs染色法。

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;
int vis[1001][1001];
int a[1001][1001];
int q[N];
int dx[] = { 1,0,-1,0 };
int dy[] = { 0,1,0,-1 };
int n, m;
int sum = 0;
int ans = 0;
void dfs(int x, int y, int tag)
{
    vis[x][y] = tag;
    sum += a[x][y];
    ans = max(ans, sum);
    for (int i = 0; i < 4; i++)
    {
        int tx = x + dx[i];
        int ty = y + dy[i];
        if (tx<1 || ty<1 || tx>n || ty>m) continue;
        if (a[tx][ty] == 0) continue;
        if (vis[tx][ty]) continue;
        dfs(tx, ty, tag);
    }
}
void solve() {
   
    cin >> n >> m;
    ans = 0;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin >> a[i][j];
        }
    }
    int cnt = 0;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            if (a[i][j] == 0) continue;
            if (vis[i][j]) continue;
            sum = 0;
            ++cnt;
            dfs(i, j, cnt);
        }
    }
    cout << ans << "\n";
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            vis[i][j] = 0;
        }
    }
}
    
signed main() {

    ios;
    TEST
    solve();
    return 0;
}

F. Forever Winter

模拟一下,与出入度为1的点连接的就是与主节点连接的点,输出他们的出入度即可,与主节点连接的点,出入度需要减一。

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;
void solve() {
    int n, m;
    cin >> n >> m;
    vector<vector<int>>f(n + 1);
    for (int i = 1; i <= m; i++)
    {
        int u, v;
        cin >> u >> v;
        f[u].push_back(v);
        f[v].push_back(u);
    }
    set<int>q;
    for (int i = 1; i <= n; i++)
    {
        if (f[i].size() == 1)
        {
            q.insert(f[i][0]);
        }
    }
    int ans1;
    for (auto x : q)
    {
        ans1 = f[x].size() - 1;
        break;
    }
    int ans2;
    for (int i = 1; i <= n; i++)
    {
        set<int>tt;
        for (auto x : f[i]) tt.insert(x);
        if (tt == q)
        {
            ans2 = f[i].size();
            break;
        }
    }
    cout << ans2 << ' ' << ans1 << "\n";
}

signed main() {

    ios;
    TEST
        solve();
    return 0;
}

G. Hits Different

一开始用搜索,优化半天还是超时,正解是二位数组前缀和dp。

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;
int a[1500][1500];
int cnt=1;
int ans[N];
void solve() {
    int n;
    cin >> n;
    cout << ans[n] << "\n";
}
    
signed main() {


    for (int i = 1; i < 1500; i++)
    {
        for (int j = i - 1; j >= 1; j--)
        {
            a[j][i - j] = a[j - 1][i - j] + a[j][i - j - 1] - a[j - 1][i - j - 1] + cnt * cnt;
            ans[cnt] = a[j][i - j];
            cnt++;
        }
    }
    ios;
    TEST
    solve();
    return 0;
}

H. Don't Blame Me

找子序列所有元素的与和的二进制里1的个数等于k,数位dp。

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define pll pair<int,int>
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 1e9 + 7;
using namespace std;
int dp[N][64];
int a[N];
void solve()
{
	int n, k;
	cin >> n >> k;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	for (int i = 1; i <= n; i++)
	{
		dp[i][a[i]] = 1;
		for (int j = 0; j <= 63; j++)
		{
			dp[i][j] = (dp[i][j] + dp[i - 1][j]) % mod;
			dp[i][j & a[i]] = (dp[i][j & a[i]] + dp[i - 1][j]) % mod;
		}
	}
	int ans = 0;
	for (int i = 0; i <= 63; i++)
	{
		int cnt = 0;
		for (int j = 0; j < 6; j++)
		{
			if ((i >> j) & 1)
			{
				cnt++;
			}
		}
		if (cnt == k)
		{
			ans = (ans + dp[n][i]) % mod;
		}
	}
	cout << ans << "\n";

	for (int i = 1; i <= n; i++)
	{
		for (int j = 0; j <= 63; j++)
		{
			dp[i][j] = 0;
		}
	}
}
signed main() {

    ios;
    TEST
        solve();
    return 0;
}

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

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

相关文章

人大金仓安装图文

1.下载 通过百度网盘分享的文件&#xff1a;人大金仓安装图文 链接&#xff1a;https://pan.baidu.com/s/1imt0KsyVXQALp_icEMoDpQ 提取码&#xff1a;zwef --来自百度网盘超级会员V3的分享 2.安装

CTFHub~RCE远程代码执行

0X01eval执行 # 进来我们直接看到了代码&#xff0c;大致意思就是传入一个参数cmd# 所以我们直接使用蚁剑进行连接&#xff0c;看一下能否成功# 接下来我们直接找出flag0X02文件包含 # 打开页面发现一大堆代码 大体意思是如果file中没有flag字符串就执行下面的include $_GET[…

【linux深入剖析】线程控制 | 多线程

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. 创建线程2. POSIX线程…

基于Kubernetes v1.25.0和Docker部署高可用集群(说明篇)

目录描述 Kubernetes组件说明 特定接口CRI、CNI、CSI Kubernetes v1.25集群创建方案选择 一、Kubernetes组件说明 Docker 的运行机制 运行机制详解&#xff1a; docker client&#xff1a;命令行输入的docker命令就是一个docker客户端 docker Engine&#xff1a;Engine也…

Java: 死锁问题详解(5000字)

文章目录 死锁的出现场景1. 一个线程一把锁,这个线程针对这把锁,连续加锁了两次2. 两个线程,两把锁3. N个线程 , M个锁4. 内存可见性为什么会出现内存可见性问题呢?解决方法 volatile关键字 总结synchronized:死锁的四个必要条件(缺一不可)[重点]:内存可见性问题: 死锁的出现场…

PCL安装与配置(PCL1.9.1+MSVC2017)

为了和我的VS的版本VS 2017对应&#xff0c;PCL下载的也是msvc_2017,PCL msvc2017最新的则是1.901版本&#xff0c;我们就以PCL 1.9.1为例了。&#xff08;如果你的vs是2019和2022&#xff0c;一定要注意PCL的版本&#xff09;。 一、下载PCL 我们打开PCL的github下载地址&am…

GDB调试器

GDB调试器 GDB的主要功能 常见命令 3、实战 1、生成能调试的执行文件&#xff08;一定要加-g&#xff09; 第一个是不能调试的 第二个这样加了-g才能进行调试 如果没加-g 执行gdb 执行文件&#xff08;会报下面这个 &#xff09; 像这样才是正常的 执行 gdb a_yes_g 这…

SSM计算机组成原理课程平台-计算机毕设定制-附项目源码(可白嫖)50168

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

金融行业到底该选择什么样的FTP替代方案?

2018年以来&#xff0c;受“华为、中兴事件”影响&#xff0c;我国科技尤其是上游核心技术受制于人的现状对我 国经济发展提出了严峻考验。在全球产业从工业经济向数字经济升级的关键时期&#xff0c;中国明确 “数字中国”建设战略&#xff0c; 抢占数字经济产业链制高点。 在…

Python开发工具PyCharm入门指南 - 用户界面主题更改

JetBrains PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 界面主题定义了窗口、对话框、按钮和用户界面的所有可视元素的外观…

vscode开发avalonia

安装 安装.net 8 安装avalonia模板 dotnet new install Avalonia.Templates创建项目 dotnet new avalonia.app -o GetStartedApp安装c# dev kit插件和Avalonia for VSCode Community dotnet run运行 修改代码 MainWindow.axaml <Window xmlns"https://githu…

企业层面经济政策不确定性感知数据(2001-2023年)

1.指标介绍 企业经济政策不确定性感知指的是企业在面对政府经济政策变动时所感受到的风险和不确定性程度&#xff0c;这种感知会影响企业的投资决策、生产计划和市场策略 文章根据上市公司披露的MD&A文本&#xff0c;提取指标衡量企业个体面临的经济政策不确定性。 2.参…

了解线性回归、岭回归和套索回归

逐步对 Linear、Ridge 和 Lasso 回归进行数学理解。 ​ LASSO&#xff08;左&#xff09;和岭回归&#xff08;右&#xff09;的约束区域 一、说明 在本文中&#xff0c;我们将深入探讨机器学习中两种基本正则化技术的基础和应用&#xff1a;Ridge 回归和 Lasso 回归。这些方…

脊髓损伤小伙伴的活力重启秘籍! 让我们一起动起来,拥抱不一样的精彩生活✨

Hey小伙伴们~&#x1f44b; 今天咱们来聊聊一个超级重要又温暖的话题——脊髓损伤后的锻炼大法来啦&#xff01;&#x1f389; 记住&#xff0c;无论遇到什么挑战&#xff0c;我们都要像打不死的小强一样&#xff0c;活力满满地面对每一天&#xff01;&#x1f4aa; 首先&#…

基础进阶-搭建pxe网络安装环境实现服务器自动部署

目录 原理解释 ​编辑 开机界面解释 搭建步骤 下载环境需要用到的基本程序 查看帮助 帮助内容解释 环境搭建 修改 DHCP 修改 default 文件 测试 原理解释 开机界面解释 在开机界面中&#xff0c;圈起来的部分显示的就是光盘&#xff0c;我们需要将光盘转换成网络的 在…

.NET内网实战:模拟Installer关闭Defender

01基本介绍 02编码实现 原理上通过Windows API函数将当前进程的权限提升至TrustedInstaller&#xff0c;从而实现了对Windows Defender服务的控制。通常可以利用Windows API中的OpenSCManager、OpenProcessToken、ImpersonateLoggedOnUser以及ControlService等函数协同工作&am…

Modbus-Ascii详解

目录 Modbus-Ascii详解 Modbus-Ascii帧结构 LRC效验 将数据字节转成ASCII 将返回帧转为数据字节 Modbus-Ascii的实现 使用NModbus4实现Modbus-Ascii 实例 Modbus-Ascii详解 Modbus ASCII是一种将二进制数据转换为可打印的ASCII字符的通信协议&#xff0c;‌每个8位数据需要两…

WPF学习(4)- VirtualizingStackPanel (虚拟化元素)+Canvas控件(绝对布局)

VirtualizingStackPanel虚拟化元素 VirtualizingStackPanel 类&#xff08;虚拟化元素&#xff09;和StackPanel 类在用法上几乎差不多。其作用是在水平或垂直的一行中排列并显示内容。它继承于一个叫VirtualizingPanel的抽象类&#xff0c;而这个VirtualizingPanel抽象类继承…

AI基础架构-NVLink 技术详解

AI Infra 基础知识 - NVLink 入门 NVLink&#xff0c;一种专有互连硬件&#xff0c;实现Nvidia GPU与CPU之间的高效、一致数据和控制传输&#xff0c;提升多GPU系统性能。 概述 NVLink 于 2014 年初发布&#xff0c;旨在作为 PCI Express 的替代解决方案&#xff0c;具有更…

Java零基础之多线程篇:线程同步

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…