Codeforces Round 871 (Div. 4)【A、B、C、D、E、F、G、H】

news2024/11/16 16:02:04

文章目录

  • A. Love Story(模拟)
  • B. Blank Space(模拟)
  • C. Mr. Perfectly Fine(模拟)
  • D. Gold Rush(小思维)
  • E. The Lakes(DFS)
  • F. Forever Winter(简单的图)
  • G. Hits Different(二维前缀和)
  • H. Don't Blame Me(状态压缩dp)

传送门

A. Love Story(模拟)

题意:比较字符串

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 105;
string o = "codeforces";
void solve() {
	string s;
	cin >> s;
	int cnt = 0;
	for (int i = 0; i < 10; i++) if (s[i] != o[i]) cnt++;
	cout << cnt << '\n';
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

B. Blank Space(模拟)

题意:求出最长连续的0,典中典

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 105;
int a[N];
void solve() {
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> a[i];
	int cnt = 0, ans = 0;
	for (int i = 1; i <= n; i++) {
		if (!a[i]) cnt++;
		else ans = max(cnt, ans), cnt = 0;
	}
	ans = max(cnt, ans);//注意这个
	cout << ans << '\n';
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

C. Mr. Perfectly Fine(模拟)

题意:给出花费和01串,让你找到,这些串异或和为11的最小花费。
思路:00是无用书,只需求出01 10 11的最小花费,如果没有11而且,01 10缺一个就是做不到,其余两种求最小即可。

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 105;
void solve() {
	int a = inf, b = inf, c = inf;
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int x;
		cin >> x;
		string s;
		cin >> s;
		if (s == "00") continue;
		if (s == "10") a = min(a, x);
		if (s == "01") b = min(b, x);
		if (s == "11") c = min(c, x);
	}
	if (c == inf && (a == inf || b == inf)) {
		cout << -1 << '\n';
		return;
	} 
	cout << min(a + b, c) << '\n';
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

D. Gold Rush(小思维)

题意:给你两个整数m,n,你每次可以把一个数拆成两份,大份的恰好是小份两倍,你可以在产生的新的数继续这样操作,问你是否能够从m中拆出n。
思路:我们可以知道 n/m= 1/3 * 2/3.。。。的乘积,因为每次都是取大份,或者取小份。化简分式后,统计分母是不是只有3,分子是不是只有2,而且2的数目小于3的数目即可。

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 105;
void solve() {
	int n, m;
	cin >> n >> m;
	int gcd = __gcd(n, m);
	n /= gcd, m /= gcd;
	int cnt1 = 0, cnt2 = 0;
	while (n % 3 == 0) n /= 3, cnt1++;
	while (m % 2 == 0) m /= 2, cnt2++;
	if (n == 1 && m == 1 && cnt1 >= cnt2) {
		cout << "YES\n";
	} else cout << "NO\n";
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

E. The Lakes(DFS)

题意:给你一个非负矩阵,让你求出最大的正数联通块的权值和。
思路:标准的DFS,思路一定要清晰,主要起始点能否开始,出发出的标记一定要打好。

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 1005;
int mp[N][N], vis[N][N], n, m;
int cnt, go[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};//方向数组
void dfs(int x, int y) {
	for (int i = 0; i < 4; i++) {
		int nx = x + go[i][0], ny = y + go[i][1];
		if (nx < 1 || nx > n || ny < 1 || ny > m || vis[nx][ny] || !mp[nx][ny]) continue;//顺序有讲究,先看越界。如果有标记,或者是0的话无法搜索。
		vis[nx][ny] = 1;
		cnt += mp[nx][ny];//统计一下
		dfs(nx, ny);
	}
}
void solve() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> mp[i][j];
			vis[i][j] = 0;
		}
	}
	int ans = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (vis[i][j] || !mp[i][j]) continue;//如果是0或者是有标记的正数
			cnt = mp[i][j];
			vis[i][j] = 1;//别忘记!!!不然会寄
			dfs(i, j);
			ans = max(ans, cnt);
		}
	}
	cout << ans << '\n';
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

F. Forever Winter(简单的图)

题意:给你一个雪花图的联通关系,让你判断雪花的第一分支数和第二分支数。
思路:本题并不需要什么高深的东西,只需要统计一下每个点的度数即可。首先,如果说这里有三种度数,1 1 1 x x x x y 那么唯一的y度数必定是第一分支数,多个x必定是第二分支数(注意这里xy均大于1),1是叶子,无妨。如果说这里是两种度数的话 1 1 1 x x x那么第一分支数就是x 的数目 -1,第二分支数x - 1.

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 105;
int in[N];
void solve() {
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) in[i] = 0;
	for (int i = 0; i < m; i++) {
		int u, v;
		cin >> u >> v;
		in[u]++;
		in[v]++; 
	}
	map<int, int> mp;
	for (int i = 1; i <= n; i++) {
		mp[in[i]]++;
	}
	int x = -1, y;
	for (auto i : mp) {
		if (i.second == 1) x = i.first;//唯一的度数是第一分支数
		if (i.first != 1 && i.second != 1) y = i.first - 1;//度数 - 1(来自中心的一度)
	}
	if (x == -1) x = y + 1;//恢复原来的度数
	cout << x << ' ' << y << '\n';
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

G. Hits Different(二维前缀和)

题意:求出矩阵的和。
思路:
在这里插入图片描述

我借用了一下官方题解的图,红色的箭头是我遍历的方向。i枚举是第几斜层,j体现坐标变化。
二维前缀和比较简单。
在这里插入图片描述
俩红减去蓝色,加上新的数。
还有一个要注意的点是,这个是1 + 2 + 3 + 4 … 1000是不够的,还有就是小心RE,ans+5是不够的。

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 2e6 + 5;
ll ans[N], sum[1455][1455];
void init() {
	ll cur = 1;
	for (int i = 1; i <= 1450; i++) {
		for (int j = 0; j < i; j++) {
			sum[i - j][j + 1] = sum[i - j - 1][j + 1] + sum[i - j][j] - sum[i - j - 1][j] + cur * cur;
			ans[cur++] = sum[i - j][j + 1];
		}
	}
//	cout << cur << '\n';
}
void solve() {
	int n;
	cin >> n;
	cout << ans[n] << '\n';
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	init();
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

H. Don’t Blame Me(状态压缩dp)

题意:给你一个数组,让你求出所有元素按位与和的值的1的数目是k的方法数
思路:定义dp状态,表示在前i个数,子序列元素按位与和的值为j的方法数。
对于i的所有j的值的方法数,来源有三种,一种是前i - 1内部的方法数的贡献,一种是第i个数单独的贡献,一种是前i-1数和第i个数相互作用的贡献。__builtin_popcount()统计二进制数中1的数目。

#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define eps 1e-9
using namespace std;
const int N = 2e5 + 5, mod = 1e9 + 7;
ll f[N][70];
void solve() {
	int n, k;
	cin >> n >> k;
	for (int i = 0; i <= n; i++) {
		for (int j = 0; j < 64; j++) {
			f[i][j] = 0;
		}
	}
	for (int i = 1; i <= n; i++) {
		int x;
		cin >> x;
		for (int j = 0; j < 64; j++) {
			f[i][j] = (f[i][j] + f[i - 1][j]) % mod;
			f[i][j & x] = (f[i][j & x] + f[i][j]) % mod;
		}
		f[i][x] = (f[i][x] + 1) % mod;
	}
	ll ans = 0;
	for (int i = 0; i < 64; i++) {
		if (__builtin_popcount(i) == k) ans = (ans + f[n][i]) % mod;
	}
	cout << ans << '\n';
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

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

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

相关文章

视频文本检索之CLIP4Clip

论文&#xff1a;CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval GitHub&#xff1a;https://github.com/ArrowLuo/CLIP4Clip 论文基于图片-文本检索模型CLIP (Contrastive Language-Image Pretraining)提出了视频-文本检索模型CLIP4Clip (CLIP …

【开源硬件篇】STM32F103C8T6主控板

STM32F103C8T6主控板 文章目录 STM32F103C8T6主控板设计目标一、STM32F103C8T6核心板外围引脚电路1.1 原理图设计1.2 PCB设计用例 二、ISP一键下载电路设计2.1 原理图设计2.2 原理分析2.2.1 CH340电路选择2.2.2 ISP一键下载原理 2.3 PCB设计示例 三、串口通信电路3.1 原理图设计…

Jackson2JsonRedisSerializer使用及问题

1、使用 public static RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {lettuceConnectionFactory.setShareNativeConnection(false);RedisTemplate<String, Object> rt new RedisTemplate<>();// 设置…

嵌入式软考备考_6 嵌入式程序设计

嵌入式程序设计 开发流程 要想某个功能要用硬件还是软件实现&#xff08;硬件快&#xff0c;但是耗资源&#xff09;&#xff1f;BSP&#xff1f;裸机还是OS&#xff1f; 硬件的设计与实现-》设备驱动软件的设计与实现-》os的选择&#xff0c;移植&#xff0c;api接口函数的…

openGL 环境搭建

刚入坑&#xff0c;每个包、每个项目都得重新配一遍&#xff0c;实在烦人&#xff0c;由于网上已有很多教程&#xff0c;故在此只简要介绍。 比较通用的安装方法如下&#xff1a; 优先下载&#xff0c;对应vs版本&#xff0c;32位&#xff0c;已经编译好的库。如果下载的是源代…

2023 年Java经典面试题,基础篇02(持续更新)

本篇文章主要讲的是 2023 年Java最新面试题&#xff0c;持续更新中 原文地址&#xff1a;https://github.com/Snailclimb/JavaGuide 面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同&#xff1a; 面向过程把解决问题的过程拆成一个个方法&…

Git 配置多个SSH-Key

Git 全局配置 查看全局配置 git config --global --list git config --global user.name 删除全局配置 git config --global --unset user.name 1.生成ssh public key and private key open git base, 执行以下command&#xff0c;其中是keyname自己填&#xff1b;codeup…

java程序员容易被人误解?我来聊聊常见的三种情况

先说一下个人情况吧。21年来到深圳&#xff0c;现在马上工作满两年。我说程序员是一个容易被人误解的职业呢&#xff0c;可能在大部分人的印象里&#xff0c;程序员就是一个呆板、穿着格子衫、戴着厚厚的眼镜片、比较呆滞的一群人。其实这个印象可能是符合上个年代吧——程序员…

第二部分——长难句——第二章——复合句——第二节——定语从句

内容比较多&#xff0c;且比较重要 一&#xff0c;定语从句的概述 定语&#xff08;紧挨着名词&#xff09;礼让弱小&#xff0c;所以放在所修饰的名词后面。 法律是一种学科&#xff08;鼓励责任判定&#xff09;定语修饰 在翻译成中文的习惯&#xff0c;我们会把定语从句放…

倒计时|数字标准读书会—打破“信息孤岛”、拆除“数据烟囱”

业务与其他业务域间存在信息鸿沟&#xff0c;协作效率低下&#xff1b; 系统边界划分复杂混乱&#xff0c;技术标准不兼容&#xff1b; 新业务无法基于已有解决方案快速组装上线&#xff0c;迭代创新&#xff1b; …… 以上这些数字化转型痛点&#xff0c;你是否也遇到过&a…

家里网速越来越慢?路由器附近千万别放这几样东西

我们在日常生活中常常会使用到WiFi&#xff0c;当遇到网络卡顿、网速缓慢时往往感到疑惑&#xff0c;是不是自己的WiFi速度不够&#xff1f;其实除了无线路由器、终端等自身产品质量问题&#xff0c;还有许多外在因素。 在网络本身没有问题的情况下WiFi卡顿或不稳定&#xff0…

美国限制Unity和UE渲染引擎风险增加,数字孪生行业急需国产渲染引擎软件

数字孪生作为智能制造的关键技术之一&#xff0c;其应用已经从工业制造领域扩展到了城市规划、交通运输、农业等多个领域。然而&#xff0c;随着中美脱钩的持续进行&#xff0c;有关3D渲染引擎的“卡脖子”问题已经引起了行业的高度关注。 美国限制3D渲染引擎风险对数字孪生产…

linux中查看某个文件夹下文件的个数和大小

一、统计某个目录的文件和子目录的大小 1、stat指令 stat命令 主要用于显示文件或文件系统的详细信息&#xff0c;该命令的语法格式如下&#xff1a; -f  不显示文件本身的信息&#xff0c;显示文件所在文件系统的信息-L  显示符号链接-t  简洁模式&#xff0c;只显示…

强化学习p3-策略学习

Policy Network (策略网络) 我们无法知道策略函数 π \pi π所以要做函数近似&#xff0c;求一个近似的策略函数 使用策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 去近似策略函数 π ( a ∣ s ) \pi(a|s) π(a∣s) ∑ a ∈ A π ( a ∣ s ; θ ) 1 \sum_{a\in …

【Hive实战】数据仓库设计

数仓中的数据分层 文章目录 数仓中的数据分层维度模型维度建模下的主要概念维度表事实表 结合维度模型分析数据分层贴源层 &#xff08;Operation Data Store&#xff09;公共维度层 CDM&#xff08;Common Data Model&#xff09;数据细节层 DWD&#xff08;Data Warehouse De…

前端(移动端)学习笔记

PC端网页和移动端网页的区别&#xff1a; PC端屏幕大&#xff0c;网页固定版心移动端屏幕小&#xff0c;网页多数为100% 在谷歌浏览器中可以调试移动端网页的代码 屏幕尺寸&#xff1a; 屏幕尺寸指的是对角线的长度,一般用英寸来度量 分辨率&#xff1a; PC分辨率 1920*10…

31 - 买股票的最佳时机问题

文章目录 1. 买股票的最佳时机I2. 买股票的最佳时机II3. 最佳买卖股票时机4. 买股票的最佳时机III5. 买股票的最佳时机IV 1. 买股票的最佳时机I dp数组含义&#xff0c;本题两个状态&#xff1a;持有股票、不持有股票 dp[i][1] &#xff1a;表示第i天不持有股票所得最多现金dp…

最时髦的AI画画,一文包教包会

最时髦的AI画画&#xff0c;一文包教包会 大概半年前&#xff0c;AI 绘画工具 Disco Diffusion 从 Text-to-Image 开发社区和设计行业&#xff0c;火到了普通用户的视野中。即便它界面简陋&#xff0c;满屏英文和代码&#xff0c;也“劝退”不了人们。因为对那些没有任何美术功…

kali php无法执行,直接下载或显示php文件内容

问题描述&#xff1a; 开启apache或nginx&#xff0c;访问php文件要么直接显示php文件内容&#xff0c;要么直接下载&#xff0c;这都是php文件无法解析的问题&#xff0c;需要nginxphp-fpm解决 1、安装NGINX 查看是否安装&#xff0c;如下图则已安装 #apt-cache policy ngi…

Linux安装MinIO及springboot项目整合使用实战(详细)

以往的项目&#xff0c;用的比较多的OSS服务是腾讯云和阿里云的存储服务&#xff0c;不过从去年到今年&#xff0c;最近的几个项目&#xff0c;普遍要使用Minio,所以我在开发服务器和测试服务器上都装上了minio 一、首先minio的安装 MInIO的安装有很多方法、单实例的、集群分…