| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Codeforces Round #769 (Div. 2) C D -> 正文阅读 |
|
[数据结构与算法]Codeforces Round #769 (Div. 2) C D |
传送门: C题意:跟你两个数a,b满足a<b,现在有三种操作: 操作一:a++ 操作二:b++ 操作三:a|=b 求使得a=b的最小操作次数。 分析:首先看看操作三是什么: 1.操作三会使得a变大(+0)。 2.完成操作三之后,a>=b。此时要使得a=b,只能进行操作二。 3.要使得操作次数最少,操作三最多使用一次。 我们分类讨论: 1.如果不用操作三:那么操作次数即为b-a。 2.如果用操作三:我们可以在a1,b1(a1>=a,b1>=b)等于任意值时操作。操作次数为a1-a+b1-b+1+(a1|b1)-b1=a1+(a1|b1)+1-a-b,其中1-a-b是常数,我们需要最小化a1+(a1|b1)。考虑枚举a1,b1按a1和b的位分类讨论(以下b1,a1,b均为从高到低的当前位): b=1,a1=1,b1=1 b=1,a1=0,b1=1 b=0,a1=0,b1=0 b=0,a1=1,b1=1,break; 代码:
D题意:定义bad区间为gcd[l,r]==r-l+1,要使得区间内没有bad子区间,最少需要将几个数变为其他任何数。 分析:首先对于区间gcd有:对于固定左端点L,向右移动右端点R的区间[L,R],区间gcd是非递增的。故对于左端点为L的区间来说,bad区间至多有一个。对于此题,我们可以固定R(遍历R),对L,R用双指针来做。 代码:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 17:21:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |