codeforces round976 div2

A find minimum operations

思路:将所给的n变成k进制数,答案就是n的k进制形式下的位数之和

代码:
 

#include <bits/stdc++.h>
using namespace std;typedef long long ll;ll n, k;void solve() {cin >> n >> k;ll cnt = 0;if(k == 1) cout << n << "\n";else {while(n) {cnt += n % k;n /= k;}cout << cnt << "\n";}
}int main() {int t;cin >> t;while(t -- ) solve();return 0;
}

B brightness begins

问题:

思路:
不难得到结论,只有当一个数的约数个数为偶数时,才可以保证灯处于on状态

模拟一组数据后发现,只有当该数为平方数时,约数个数才为偶数个

现在对于此结论给出证明:
将数x分解质因数可以得到以下形式:

x = {a_1}^{b1}{a_2}^{b2}{a_3}^{b3}...{a_n}^{bn}

由加法原理,乘法原理(其实就是排列组合)可知,x的约数个数与b有关

即约数个数n = ({b_1} + 1) ({b_2} + 1)({b_3} + 1)...({b_n} + 1)

不难发现,只有当b全部为偶数时,n才为偶数,因为在乘法中只要有一个乘数为偶数,结果就是偶数

现在得到结论,b均为偶数

那么有x = ({​{a_1}^{\frac{​{b_1}}{2}}{a_2}^{\frac{​{b_2}}{2}}{a_3}^{\frac{b_3}{2}}...{a_n}^{\frac{​{b_n}}{2}}})^2

即可证明x为平方数

并且数n以内的平方数有\sqrt{n}个,因此就可以用二分求解答案

代码:

#include <bits/stdc++.h>
using namespace std;typedef long long ll;void solve() {ll k;cin >> k;auto find = [&](ll x) {ll l = 0, r = 1e9;while(l < r) {ll mid = l + r + 1 >> 1;if(mid * mid <= x) l = mid;else r = mid - 1;}return l;};//cout << find(3) << " ";ll l = 0, r = 2e18;while(l < r) {ll mid = l + r >> 1;if(mid - find(mid) >= k) r = mid;else l = mid + 1;}cout << l << "\n";
}int main() {int t;cin >> t;while(t -- ) solve();return 0;
}

C bitwise balenced

问题:

思路:首先观察式子,是否存在进位借位关系

注意到a | b >= a   a & c <= a因此不存在借位关系,又因为是减法运算,所以也不会存在进位关系,那么这道题就是位独立的一道题,直接拆位讨论即可

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
typedef unsigned long long ull;void solve() {ll b, c, d;ull a = 0;cin >> b >> c >> d;for(int i = 0; i <= 60; i ++ ) {int u = d >> i & 1;if(u == 1) {if((b >> i & 1) == 1 && (c >> i & 1) == 1) {a += 0;} else if((b >> i & 1) == 1 && (c >> i & 1) == 0) {a += 0;} else if((b >> i & 1) == 0 && (c >> i & 1) == 1) {cout << "-1\n";return;} else if((b >> i & 1) == 0 && (c >> i & 1) == 0) {a += ((ull)1 << i);}} else {if((b >> i & 1) == 1 && (c >> i & 1) == 1) {a += ((ull)1 << i);} else if((b >> i & 1) == 1 && (c >> i & 1) == 0) {cout << "-1\n";return;} else if((b >> i & 1) == 0 && (c >> i & 1) == 1) {a += 0;} else if((b >> i & 1) == 0 && (c >> i & 1) == 0) {a += 0;}}}cout << a << "\n";
}int main() {int t;cin >> t;while(t -- ) solve();return 0;
}

D connected dots

问题:

思路:首先注意到是联通块问题,因此可以考虑图论,并查集之类的做法,这里是并查集。

如果一个一个枚举判断是否在一个集合中,最差情况下要比较n^2次,显然超时,这时候注意到我们的d很小,公差很小,就意味着每一个点最多与前面的d个点联通。我们可以用差分对一段线段打上标记,并强制点向前连边,那么我们就可以在d * n的时间复杂度内完成并查集的合并

代码:
 

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int N = 2e5 + 10;int p[N], _size[N];void init(int n) {for(int i = 1; i <= n; i ++ ) {p[i] = i;_size[i] = 1;}
}int find(int x) {if(x != p[x]) {p[x] = find(p[x]);}return p[x];
}void merge(int a, int b) {int pa = find(a), pb = find(b);if(pa == pb) return;if(_size[pa] < _size[pb]) swap(pa, pb);_size[pa] += _size[pb];p[pb] = pa;
}void solve() {int n, m;cin >> n >> m;init(n);vector<vector<int>> diff((n + 11), vector<int>(11));while(m -- ) {int a, d, k;cin >> a >> d >> k;diff[a + d][d] ++;diff[a + d * k + d][d] --; }for(int i = 1; i <= 10; i ++ ) {for(int j = 1; j <= n; j ++ ) {diff[j][i] += diff[max(0, j - i)][i];}}for(int i = 1; i <= n; i ++ ) {for(int j = 1; j <= 10; j ++ ) {if(i - j >= 1) {if(diff[i][j]) {merge(i, i - j);}}}}set<int> se;for(int i = 1; i <= n; i ++ ) se.insert(find(i));cout << se.size() << "\n";
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t;cin >> t;while(t -- ) solve();return 0;
}

E expected power

思路:注意到值域最大是1023,并且恰好二进制表示时各个位数都为1,由异或性质得知,最后S的值域也是不大于1023,可以枚举值域,然后用dp计算概率

时间复杂度1e8理论可以过,但是这里tle thinking....

代码:

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const ll mod = 1e9 + 7;ll qmi(ll a, ll b) {ll res = 1;while(b) {if(b & 1) (res *= a) %= mod;(a *= a) %= mod;b >>= 1;}return res;
}void solve() {ll n;cin >> n;vector<ll> a(n + 1), p(n + 1);for(int i = 1; i <= n; i ++ ) cin >> a[i];for(int i = 1; i <= n; i ++ ) {cin >> p[i];p[i] = (p[i] * qmi(10000ll, mod - 2)) % mod;}vector<vector<ll>> dp((n + 1), vector<ll>(1025));dp[0][0] = 1;for(int i = 1; i <= n; i ++ ) {for(ll val = 0; val <= 1023; val ++ ) {(dp[i][val ^ a[i]] += dp[i - 1][val] * p[i]) %= mod;(dp[i][val] += dp[i - 1][val] * (mod + 1 - p[i])) %= mod;       }}ll ans = 0;for(int i = 0; i <= 1023; i ++ ) {(ans += dp[n][i] * i * i) %= mod;}cout << ans << "\n";
}int main() {ios::sync_with_stdio(false);cout.tie(0),  cin.tie(0);int t;cin >> t;while(t -- ) solve();return 0;
}


 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

陪诊小程序搭建:打造便利的陪诊环境

陪诊行业作为一个新兴行业&#xff0c;随着老龄化的严重&#xff0c;在近几年中需求量日益旺盛。陪诊师为大众的就医提供了极大的便利性&#xff0c;在看病难、医疗资源紧张方面发挥了积极作用。 在陪诊行业的快速发展下&#xff0c;陪诊小程序为行业带来了便捷的模式&#xf…

解决:gpg: 从公钥服务器接收失败:服务器故障

当你添加密钥时报错&#xff0c;可以按照下面的步骤&#xff0c;依次输入。 # 停止 Network Manager 服务 sudo service network-manager stop# 删除 Network Manager 的状态文件 sudo rm /var/lib/NetworkManager/NetworkManager.state# 重新启动 Network Manager 服务 sudo …

TCP IP网络编程

文章目录 TCP IP网络编程一、基础知识&#xff08;TCP&#xff09;1&#xff09;Linux1. socket()2.bind()2.1前提2.2字节序与网络字节序2.3 字节序转换2.4 字符串信息转化成网络字节序的整数型2.5 INADDR_ANY 3.listen()4.accept()5.connect()6.案例小结6.1服务器端6.2 客户端…

Idea不能创建java8切换路径

顶部的Server URL改成https://start.aliyun.com/

【原创】可用于 Android Studio 的翻译插件

在不少讲解Android 开发的老师视频中会出现一个运行在Android Studio 上的翻译插件&#xff0c;感觉挺实用的。 接下来&#xff0c;我们把它安装在我们的Android Studio 上。 设置 点击右上角齿轮按钮&#xff0c;选择Settings 安装 翻译插件 输入Tanslation&#xff0c;选…

ZStack ZROP首个商用版本发布,打造云的可持续发展框架

经过长时间的研发和测试&#xff0c;ZStack ZROP IT服务中台V4.2.0版本正式发布。ZROP 是针对ZStack全系列产品运营、运维、一体化的自研平台。作为第一个商用版本&#xff0c;ZROP V4.2.0支持包含ZStack Cloud、ZStack Cube、ZStack ZStone、ZStack Zaku、ZStack Edge、ZStack…

针对考研的C语言学习(循环队列-链表版本以及2019循环队列大题)

题目 【注】此版本严格按照数字版循环队列的写法&#xff0c;rear所代表的永远是空数据 图解 1.初始化部分和插入部分 2出队 3.分部代码解析 初始化 void init_cir_link_que(CirLinkQue& q) {q.rear q.front (LinkList)malloc(sizeof(LNode));q.front->next NULL…

C++的随机数操作

首先想到的肯定是rand()函数&#xff0c;但是这个有点问题 引入头文件<stdlib.h> 如果不引入种子&#xff0c;它的随机数不是随机数&#xff0c;是固定的一串数字 srand()函数&#xff0c;产生随机的种子 示例&#xff1a; 产生0-99的随机数 #include<stdlib.h&g…

QD1-P5 HTML 段落标签(p)换行标签(br)

本节视频 www.bilibili.com/video/BV1n64y1U7oj?p5 ‍ 本节学习 HTML 标签&#xff1a; p标签 段落br标签 换行 ‍ 一、p 标签-段落 1.1 使用 p 标签划分段落 <p>段落文本</p>示例 <!DOCTYPE html> <html><head><meta charset"…

谷歌浏览器 文件下载提示网络错误

情况描述&#xff1a; 谷歌版本&#xff1a;129.0.6668.90 (正式版本) &#xff08;64 位&#xff09; (cohort: Control)其他浏览器&#xff0c;比如火狐没有问题&#xff0c;但是谷歌会下载失败&#xff0c;故推断为谷歌浏览器导致的问题小文件比如1、2M会成功&#xff0c;大…

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1&#xff08;组合数学&#xff09;解题思路2&#xff08;暴力枚举&#xff09; 2.小球反弹做题思路 3.好数算法思路&#xff08;暴力解法&#xff09;---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…

GO网络编程(五):海量用户通信系统3:整体框架与C/S通信总体流程【重要】

这个系统其实是尚硅谷的老韩讲的&#xff08;尚硅谷网络编程项目&#xff09;&#xff0c;但是他讲得很碎片化&#xff0c;思路不够清晰&#xff0c;时间又长&#xff0c;所以要掌握还是挺难的。如果你听了他的视频&#xff0c;不去梳理系统业务流程&#xff0c;不去看代码就往…

专题十一_递归_回溯_剪枝_综合练习_算法专题详细总结

目录 1. 找出所有⼦集的异或总和再求和&#xff08;easy&#xff09; 解析&#xff1a; 方法一&#xff1a; 解法二&#xff1a; 总结&#xff1a; 2. 全排列 Ⅱ&#xff08;medium&#xff09; 解析&#xff1a; 解法一&#xff1a;只关心“不合法”的分支 解法二&…

关于Linux下C++程序内存dump的分析和工具

前言 程序崩溃令人很崩溃&#xff0c;特别是让人找不到原因的崩溃&#xff0c;但是合适的工具可以帮助人很快的定位到问题&#xff0c;在AI基础能力ASR服务开发时&#xff0c;找到了一种比较实用和简单的内存崩溃的dump分析工具breakpad&#xff0c; 可以帮助在Linux下C开发程…

QD1-P8 HTML 格式化标签(font、pre、b、strong、i、u、del、s、sub、sup)

本节学习&#xff1a;HTML 格式化标签。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p8 ‍ 一、font 标签 用途&#xff1a;定义文本的字体大小、颜色和 face&#xff08;字体类型&#xff09;。 示例 <!DOCTYPE html> <html><head><meta cha…

难点:Linux 死机定位(进程虚拟地址空间耗尽)

死机定位(进程虚拟地址空间耗尽) 一、死机现象 内存富裕,但内存申请失败。 死机时打印: 怀疑是: 1、内存碎片原因导致。 2、进程虚拟地址空间耗尽导致。 3、进程资源限制导致。 二、内存碎片分析 1、理论知识:如何分析内存碎片化情况 使用 /proc/buddyinfo: /proc/…

CCF推荐被调查,这8本被标记On Hold

近两年“On Hold”期刊频出&#xff0c;作为投稿选刊风向标&#xff0c;上榜期刊一定要避雷投稿&#xff01;本期科检易学术小编盘点目前被科睿唯安官方标记为“On Hold”的计算机工程类的8本期刊&#xff0c;提醒广大学者&#xff0c;选刊需谨慎&#xff0c;注意避雷哦&#x…

Spark高级用法-内置函数

目录 读取数据 1.字符串 2.数值类 3.时间类型 4.条件判断 5.窗口函数 读取数据 # 内置数据集 from pyspark.sql import SparkSession,functions as F ss SparkSession.builder.getOrCreate()# 读取文件准尉df df ss.read.csv(hdfs://node1:8020/data/students.csv,hea…

【uniapp】使用uniapp实现一个输入英文单词翻译组件

目录 1、组件代码 2、组件代码 3、调用页面 4、展示 前言&#xff1a;使用uniapp调用一个在线单词翻译功能 1、组件代码 2、组件代码 YouDaoWordTranslator <template><view class"translator"><input class"ipttext" type"te…

JVM 内存模型与垃圾回收过程详解

JVM 内存模型与垃圾回收过程详解 文章目录 JVM 内存模型与垃圾回收过程详解1. JVM内存分区1.1 具体分区1.2 JVM内存分区的必要性 2. 垃圾回收2.1 CMS垃圾回收器2.2 G1垃圾回收器2.3 JVM垃圾回收从新生代到老年代 1. JVM内存分区 1.1 具体分区 Java虚拟机&#xff08;JVM&#…