当前位置: 首页 > news >正文

Codeforces Round 1010 (Div. 2, Unrated)

A. Binary Matrix

题目大意

给你一个01矩阵,如果矩阵的所有行列异或和都是0则是好矩阵,问要让矩阵变好的最小操作次数

解题思路

行的总修改次数和列的总修改次数二者取大即可

代码实现

#include <bits/stdc++.h>using i64 = long long;
const int MOD = 1e9 + 7;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int tt;std::cin >> tt;while (tt--) {int n, m;std::cin >> n >> m;std::vector<std::string> g(n);for (int i = 0; i < n; i++) {std::cin >> g[i];}int ans1 = 0, ans2 = 0;for (int i = 0; i < n; i++) {int cnt = 0;for (int j = 0; j < m; j++) {cnt += g[i][j] == '1';}ans1 += cnt % 2;}for (int j = 0; j < m; j++) {int cnt = 0;for (int i = 0; i < n; i++) {cnt += g[i][j] == '1';}ans2 += cnt % 2;}std::cout << std::max(ans1, ans2) << "\n";}
}

B. Floor or Ceil

题目大意

给你一个数x,可以执行n次/2向下取整和m次/2向上取整,问操作完之后可能的最大最小值

解题思路

因为每次操作都会导致变小两倍左右,所以中间穿插向上取整操作是没有意义的,因此只需要把两个操作分开执行完,按照先后顺序就能得到最大最小值

代码实现

#include <bits/stdc++.h>using i64 = long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int tt;std::cin >> tt;while (tt--) {int x, n, m;std::cin >> x >> n >> m;int x1 = x, n1 = n, m1 = m;while (m1-- && x1 > 1) {x1++;x1 >>= 1;}while (n1-- && x1) {x1 >>= 1;}int x2 = x, n2 = n, m2 = m;while (n2-- && x2) {x2 >>= 1;}while (m2-- && x2 > 1) {x2++;x2 >>= 1;}std::cout << x1 << " " << x2 << "\n";}
}

C. Math Division

题目大意

给你一个数x,等概率随机执行/2向下取整和/2向上取整,问把x变成1的期望是多少,对答案模1e9+7

解题思路

首先去掉最高位,最高位一定是1,并且可以贡献基础操作次数n-1。接着考虑x的奇偶性,当x是偶数的时候,向上向下是等价的,直接/2即可,当二进制数是奇数的时候最低位的1会导致额外的期望次数,可以通过累加每一位的影响来计算

代码实现

#include <bits/stdc++.h>using i64 = long long;
const int MOD = 1e9 + 7;
const int inv2 = 5e8 + 4;int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int tt;std::cin >> tt;while (tt--) {int n;std::cin >> n;std::string s;std::cin >> s;std::reverse(s.begin(), s.end());s.pop_back();i64 ans = 0;for (auto ch : s) {ans = (ans + (ch == '1')) * inv2 % MOD;}std::cout << (ans + n - 1) % MOD << "\n";}
}
http://www.dtcms.com/a/315330.html

相关文章:

  • 8.4IO进程线程——进程
  • MySQL 基本操作入门指南
  • 代码随想录day55图论5
  • 通往L4之路:构建自我进化的智能驾驶决策大脑
  • Dubbo 3.x源码(32)—Dubbo Provider处理服务调用请求源码
  • CSS 安卓应用卸载碎片化动画效果
  • pyqt5-tools/pyqt6-tools 安装失败,解决办法
  • 【秋招笔试】2025.08.03虾皮秋招笔试-第三题
  • 7.2 I/O接口 (答案见原书 P305)
  • 大模型部署、nvidia-smi、token数
  • Java项目:基于SSM框架实现的商铺租赁管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告+任务书+远程部署】
  • pytorch 学习笔记3-利用框架内网络训练糖尿病数据集
  • Linux 使用 firewalld :开放端口与常用操作指南
  • Endpoint(端点)详解
  • ROS2机器人编程新书推荐-2025-精通ROS 2机器人编程:使用ROS 2进行复杂机器人的设计、构建、仿真与原型开发(第四版)
  • 16_OpenCV_漫水填充(floodFill)
  • 【web应用】若依框架:基础篇18-二次开发-菜品管理
  • VGMP(VRRP Group Management Protocol)VRRP组管理协议
  • 知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 KL散度公式变化
  • Demo-LangGraph构建Agent
  • Assistant API——构建基于大语言模型的智能体应用
  • 通义万相国际版wan2.2开源第6天:主题运动
  • 二值图针对内部轮廓腐蚀膨胀
  • 李宏毅深度学习教程 第10-11章 自监督学习self-supervised learning+自编码器
  • FFmpeg02:常用命令实战
  • 【LeetCode 热题 100】215. 数组中的第K个最大元素——(解法一)快速选择
  • CentOS卸载、安装MySQL8(yum操作)
  • 肾上腺疾病AI诊疗一体化系统应用方向探析
  • 智能图书馆管理系统开发实战系列(七):CMake构建系统与持续集成
  • 【Node.js从 0 到 1:入门实战与项目驱动】1.2 Node.js 的核心优势(非阻塞 I/O、事件驱动、单线程模型)