Educational Codeforces Round 173 (Rated for Div. 2)

题目链接:Dashboard - Educational Codeforces Round 173 (Rated for Div. 2) - Codeforces
总结:翻译插件用不了了,B题题意一直没看懂,C题出思路了好久才写出来,评价为太久没打了。

A. Coin Transformation

tag:模拟

B. Digits

tag:思维

Description:给定两个数 n , d n, d n,d,写成一个数 d d d d d . . . ddddd... ddddd...,由 n ! n! n! d d d拼接而成。判断 1 − 9 1-9 19中的奇数有哪些数是它的除数。

Solution: 1 1 1显然是;当 n > = 3 n >= 3 n>=3,此时 n ! n! n! 3 3 3的倍数;当d == 5时,5是;7:当n == 3时, 111111 111111 111111是7的倍数。当 n > = 4 n>=4 n>=4时,均为 111111 111111 111111的倍数,因此是7的倍数;9和3相同使用数位和判断。

  • 长度为x的一连串的数是d的倍数,那么长度为nx的一连串数也一定是d的倍数。

C. Sums on Segments

tag:思维

Description:给定一个数组,里面的元素只有一个元素不是-1或1,其余全是-1或1,求所有不同子数组的和。n <= 1e5

Solution:先考虑不含特殊数字,那么能够得到的数是一个连续的区间,范围为[min, max];用特殊数字将其分隔为左右两个区间。

  • 包含特殊数字的变化区间为,从该数字往左右两端扩展到最大值和最小值。
void solve(){
    int n;
    cin >> n;
    vector<int> a(n);
    int idx = 0;
    for (int i = 0; i < n; i ++){
        cin >> a[i];
        if (a[i] != 1 && a[i] != -1){
            idx = i;
        }
    }

    int ri = 0, ra = 0;
    int mi = 0, ma = 0;
    int ans = 0;
    int li = 0, la = 0;
    if (idx != -1){
        for (int i = idx + 1, t = 0; i < n; i ++){
            t += a[i];
            ri = min(ri, t);
            ra = max(ra, t);
        }
        
        for (int i = idx - 1, t = 0; i >= 0; i --){
            t += a[i];
            li = min(li, t);
            la = max(la, t);
        }
    }
    
    int rri = 0, rra = 0;
    int ti = 0, ta = 0;
    for (int i = idx + 1; i < n; i ++){
        ti += a[i];
        ta += a[i];
        if (ti > 0){
            ti = 0;
        }
        if (ta < 0){
            ta = 0;
        }
        rri = min(rri, ti);
        rra = max(rra, ta);
    }

    int lli = 0, lla = 0;
    ti = ta = 0;
    for (int i = idx - 1; i >= 0; i --){
        ti += a[i];
        ta += a[i];
        if (ti > 0){
            ti = 0;
        }
        if (ta < 0){
            ta = 0;
        }
        lli = min(lli, ti);
        lla = max(lla, ta);
    }
    set<int> st;
    for (int i = lli; i <= lla; i ++)
        st.insert(i);
    for (int i = rri; i <= rra; i ++)
        st.insert(i);
    for (int i = li + ri; i <= la + ra; i ++)
        st.insert(i + a[idx]);
    st.insert(0);
    cout << st.size() << endl;
    for (auto i : st){
        cout << i <<  " ";
    }
    cout << endl;

}

D. Problem about GCD

tag:数学

Description:给定三个数l, r, G,需要求出a, b满足l <= a <= b <= r, gcd(a, b) == G,满足|a - b|最大,当有多对答案时,输出a最小的一对,否则输出-1 -11 <= l <= r <= 1e18, 1 <= G <= 1e18

Solution:当G == 1时,等价于找出两个互质的数,两个互质的数之间的差距不会太大,直接暴力枚举即可;当G != 1时,先处于G即可。

trick:两个互质的数之间的差距不会太大,枚举的复杂度大概为 l o g 2 log^2 log2

void solve(){
    int l, r, g;
    cin >> l >> r >> g;
    l = (l + g - 1) / g;
    r = r / g;

    for (int len = r - l; len >= 0; len --)
        for (int i = l; i + len <= r; i ++){
            int j = i + len;
            if (gcd(i, j) == 1){
                cout << i * g << " " << j * g << endl;
                return;
            }
        }
    
    cout << "-1 -1\n";
}

E. Matrix Transformation

tag:按位思考

Description:给定两个n * m的矩阵a,b,可以对a矩阵执行任意顺序、任意次数的以下两种操作。

  • 对第i行的所有元素,按位与上x;
  • 对第j列的所有元素,按位或上x;

Solution:将矩阵按位分隔为01矩阵,每一位都是独立的。那么两种操作等价于将一行全变为0,将一列全变为0;

  • 为了防止修改原数组,我们反过来操作矩阵b,如果一行全为0或一列全为1则进行标记;注意当一行被标记后,除了该行其余列为1的列需要标记
  • 判断未被标记的元素是否相等即可。
void solve(){
	int n, m;
	cin >> n >> m;
	vector a(n + 1, vector<int>(m + 1)), b(n + 1, vector<int>(m + 1));

	for (int i = 1; i <= n; i ++)
		for (int j = 1; j <= m; j ++)
			cin >> a[i][j];
	
	for (int i = 1; i <= n; i ++)
		for (int j = 1; j <= m; j ++)
			cin >> b[i][j];
	
	for (int bit = 0; bit <= 30; bit ++){  // 枚举每一位
		vector<int> row(n + 1), col(m + 1);
		while (1){
			auto trow = row, tcol = col;
			for (int i = 1; i <= n; i ++){
				bool flag = true;  // 每一位是否相同
				for (int j = 1; j <= m; j ++){
					if ((b[i][j] >> bit) & 1 == 1 && tcol[j] == 0){  // 一行全为0
						flag = false;
					}
				}
				if (flag){
					trow[i] = 1;;
				}
			}
	
			for (int i = 1; i <= m; i ++){
				bool flag = true;  
				for (int j = 1; j <= n; j ++){
					if (((b[j][i] >> bit) & 1) == 0 && trow[j] == 0){  // 一列全为1
						flag = false;
					}
				}
				if (flag){
					tcol[i] = 1;;
				}
			}

			if (row == trow && col == tcol){
				break;
			}
			row = trow;
			col = tcol;
		}
		
		for (int i = 1; i <= n; i ++){
			if (row[i])
				continue;
			for (int j = 1; j <= m; j ++){
				if (col[j])
					continue;
				if (((a[i][j] >> bit) & 1) != ((b[i][j] >> bit) & 1)){
					cout << "No\n";
					return;
				}
			}
		}
	}

	cout << "Yes\n";
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8086汇编(16位汇编)学习笔记05.asm基础语法和串操作

8086汇编(16位汇编)学习笔记05.asm基础语法和串操作-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net asm基础语法 1. 环境配置 xp环境配置 1.拷贝masm615到指定目录 2.将masm615目录添加进环境变量 3.在cmd中输入ml&#xff0c;可以识别即配置成功 dosbox…

C/C++ 数据结构与算法【树和二叉树】 树和二叉树,二叉树先中后序遍历详细解析【日常学习,考研必备】带图+详细代码

一、树介绍 1&#xff09;树的定义 树 (Tree) 是n(n≥0) 个结点的有限集。 若n 0&#xff0c;称为空树; 若n > 0&#xff0c;则它满足如下两个条件: &#xff08;1&#xff09;有且仅有一个特定的称为(Root)的结点; &#xff08;2&#xff09;其余结点可分为m(m≥0)个…

MVC架构模式

分析AccountTransferServlet类都负责了什么&#xff1f; 数据接收核心的业务处理数据库表中数据的crud操作负责了页面的数据展示做了很多 在不使用MVC架构模式的前提下&#xff0c;完成银行账户转账的缺点&#xff1a; 代码的复用性太差。因为没有进行职能分工&#xff0c;没有…

打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”

有AI无碍 钟科&#xff1a;被黑暗卡住的开发梦 提起视障群体的就业&#xff0c;绝大部分人可能只能想到盲人按摩。但你知道吗&#xff1f;视障人士也能写代码。 钟科&#xff0c;一个曾经“被黑暗困住”的人&#xff0c;他的世界&#xff0c;因为一场突如其来的疾病&#xff0c…

【RAG实战】语言模型基础

语言模型赋予了计算机理解和生成人类语言的能力。它结合了统计学原理和深度神经网络技术&#xff0c;通过对大量的样本数据进行复杂的概率分布分析来学习语言结构的内在模式和相关性。具体地&#xff0c;语言模型可根据上下文中已出现的词序列&#xff0c;使用概率推断来预测接…

48页PPT|2024智慧仓储解决方案解读

本文概述了智慧物流仓储建设方案的行业洞察、业务蓝图及建设方案。首先&#xff0c;从政策层面分析了2012年至2020年间国家发布的促进仓储业、物流业转型升级的政策&#xff0c;这些政策强调了自动化、标准化、信息化水平的提升&#xff0c;以及智能化立体仓库的建设&#xff0…

Matlab环形柱状图

数据准备&#xff1a; 名称 数值 Aa 21 Bb 23 Cc 35 Dd 47 保存为Excel文件后&#xff1a; % Load data from Excel file filename data.xlsx; % Ensure the file is in the current folder or provide full path dataTable readtable(filena…

flask后端开发(3):html模板渲染

目录 渲染模板html模板获取路由参数 gitcode地址&#xff1a; https://gitcode.com/qq_43920838/flask_project.git 渲染模板 这样就能够通过html文件来渲染前端&#xff0c;而不是通过return了 html模板获取路由参数

15 break和continue

while True: content input("请输入你要喷的内容") print("发送给下路",content) #上述的程序如果没有外力干扰&#xff1a;程序会一直进行输入下去 #break:就能让当前这个循环立即进行停止 while True: content input("请输入…

Python9-作业2

记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 python基础8-灵活运用顺序、选择、循环结构 作业2九九乘法表三种方式打印九九乘法表使用两个嵌套循环使用列表推导式和…

微信小程序 不同角色进入不同页面、呈现不同底部导航栏

遇到这个需求之前一直使用的小程序默认底部导航栏&#xff0c;且小程序默认入口页面为pages/index/index&#xff0c;要使不同角色呈现不同底部导航栏&#xff0c;必须要在不同页面引用不同的自定义导航栏。本篇将结合分包&#xff08;subPackages&#xff09;展开以下三步叙述…

表达式语句、复合语句和空语句

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;表达式语句、复合语句和空语句 发布时间&#xff1a;2024.12.26 隶属专栏&#xff1a;C语言 目录 1. 表达式语句定义作用常见类型赋值语句函数调用语句 2. 复合语句定义作用变量作用域 3. 空语句定义作用 1. 表达式…

Linux arm 编译安装glibc-2.29

重要的话说三遍&#xff1a; &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;不要轻易自己去安装glibc&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;不要轻易自己去安装glibc&a…

20241225在ubuntu22.04.5下使用smartmontools命令查看ssd的寿命

20241225在ubuntu22.04.5下使用smartmontools命令查看ssd的寿命 2024/12/25 15:10 rootrootrootroot-ThinkBook-16-G5-IRH:~$ sudo apt install smartmontools rootrootrootroot-ThinkBook-16-G5-IRH:~$ sudo fdisk -l Disk /dev/nvme0n1: 3.73 TiB, 4096805658624 bytes, 800…

大数据学习之Redis 缓存数据库二,Scala分布式语言一

一.Redis 缓存数据库二 26.Redis数据安全_AOF持久化机制 27.Redis数据安全_企业中该如何选择持久化机制 28.Redis集群_主从复制概念 29.Redis集群_主从复制搭建 30.Redis集群_主从复制原理剖析 31.Redis集群_哨兵监控概述 32.Redis集群_配置哨兵监控 33.Redis集群_哨兵监控原理…

Datawhale AI 冬令营学习笔记-零编程基础制作井字棋小游戏

井字棋小游戏是通过豆包MarsCode实现的&#xff0c;没有改动任何的代码&#xff0c;全部是通过对话让AI进行优化和改进。 开始进入正题&#xff1a;进入豆包MarsCode在线IDE&#xff0c;直接点击上方蓝字&#xff0c;或复制链接打开: 豆包 MarsCode - 编程助手。 IDE界面&…

vscode+编程AI配置、使用说明

文章目录 [toc]1、概述2、github copilot2.1 配置2.2 使用文档2.3 使用说明 3、文心快码&#xff08;Baidu Comate&#xff09;3.1 配置3.2 使用文档3.3 使用说明 4、豆包&#xff08;MarsCode&#xff09;4.1 配置4.2 使用文档4.3 使用说明 5、通义灵码&#xff08;TONGYI Lin…

Redis数据结构和内部编码以及单线程架构

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Redis数据结构和内部编码以及单线程架构 收录于专栏[redis] 本专栏旨在分享学习Redis的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 …

虚拟机Hyper-V,安装网络宝塔Docker

我下载的是centos-min大小1G&#xff0c;安装后没网络&#xff0c; 关闭防火墙&#xff0c;网络&#xff0c;修改onBootyes,这里需要看下network-Scripts下有什么文件。 然后就可以访问网络了 虚拟机的设置也是默认就好 网络需要设置允许共享-重要 urlhttps://download.bt.cn/i…

红魔电竞PadPro平板解BL+ROOT权限-KernelSU+LSPosed框架支持

红魔Padpro设备目前官方未开放解锁BL&#xff0c;也阉割了很多解锁BL指令&#xff0c;造成大家都不能自主玩机。此规则从红魔8开始&#xff0c;就一直延续下来&#xff0c;后续的机型大概率也是一样的情况。好在依旧有开发者进行适配研究&#xff0c;目前红魔PadPro平板&#x…