2053C - Bewitching Stargazer
简化题意
一个$ 1至n \(的区间,如果其长度是奇数,\)ans \(+=\) mid\(,再分为两个区间\)l\(~\)mid-1\(和\)mid+1\(~\)r\(,否则分为\)l\(~\)mid\(和\)mid+1\(~\)r\(,再次进行操作。直到长度小于\)k$。
Solution
我们可以先举个例子,例如\(n = 22, k = 4\)
第一轮,\(1\)~\(11\), \(12\)~\(22\), \(ans = 0\)
第二轮,\(1\)~\(5\), \(7\)~\(11\), \(12\)~\(16\), \(18\)~\(22\),\(ans = 0 + 6 + 17 = 23\)
第三轮,\(1\)~\(2\), \(4\)~\(5\), \(7\)~\(8\), \(10\)$11$,$12$\(13\), \(15\)~\(16\), \(18\)~\(19\), \(21\)~\(22\),\(ans = 23 + 3 + 9 + 14 + 20 = 23 + 46 = 69\)
结束
我们可以发现,在第一轮过后,左右区间的操作一定是固定的,因为左右两端的奇偶性是相同的,并且可以初步得出结论,每一轮减的数能被\(n+1\)整除,除了第一轮。进一步我们可以发现减的数和轮数的关系是呈现\(2\)的幂次的关系,次数分别是\(1/2, 1, 2, 4, 8...\)
结语
我承认确实没有那么难,但半夜打比赛也太困了,此方法没有严谨的数学证明(我不会),纯属个人感性理解。
code(摘自codeforces)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int T;
int n, k;
signed main() {
cin >> T;
while (T--) {
cin >> n >> k;
int mul = n + 1, sum = 0, cur = 1;
while (n >= k) {
if (n & 1) sum += cur;
n >>= 1;
cur <<= 1;
}
cout << mul * sum / 2 << endl;
}
return 0;
}
2053C - Bewitching Stargazer的更多相关文章
- 一行代码搞定 R 语言模型输出!(使用 stargazer 包)
引言 使用stargazer包可以将 R 构建的模型结果以LATEX.HTML和ASCII格式输出,方便我们生成标准格式的表格.再结合rmarkdown,你就可以轻轻松松输出一篇优雅的文章啦~本文“使 ...
- Pilosa文档翻译(二)入门指南
目录 开始 Pilosa 简单项目 创建架构(Create the Schema) 从CVS文件导入数据 做一些查询(Queries) 接下来做什么? Pilosa支持默认使用JSON的HTTP接口. ...
- R语言—统计结果输出至本地文件方法总结
1.sink()在代码开始前加一行:sink(“output.txt”),就会自动把结果全部输出到工作文件夹下的output.txt文本文档.这时在R控制台的输出窗口中是看不到输出结果的.代码结束时用 ...
- Dark theme for Texstudio - TeX - LaTeX
Dark theme for Texstudio ~~~ 1.window系统如下操作 ~~~ 1. texstudio的配置文件texstudio 的配置文件在~/.config/texstudi ...
- TAE words all
// vol 1 could do with sth rhinoplasty angst the wee small hours familial Munich gladi ...
- R语言函数话学习笔记5
使用Tidyverse完成函数化编程 (参考了家翔学长的笔记) 1.magrittr包的使用 里面有很多的管道函数,,可以减少代码开发时间,提高代码可读性和维护性 1.1 四种pipeline 1.1 ...
- Hashcat使用指南
Hashcat使用指南 免责声明: 0×01 Hashcat破解linux shadow的密码-首先了解shadow文件到底是什么? 0×02 hashcat的使用 参数补充: -m 参数 -a 参数 ...
- R语言原生管道绘图
前言 最近写论文的时候又一次用到了R.这次我是对Java有一定程度了解后再次转向R,才真正认识到R这门语言在统计编程和数据可视化领域的优雅和快速. 首先可以看一段Java的stream代码: redi ...
随机推荐
- 《大话设计模式》java实现:第一章-简单工厂模式
在<大话设计模式>中,示例代码使用C#实现,所以我这里使用Java实现一遍书中的设计模式. 第一章是使用简单工厂实现计算器. 遇到了一个问题:在Operation父类中,我们可以定义两个操 ...
- linux环境安装pip
1.下载pip安装包 https://files.pythonhosted.org/packages/ce/ea/9b445176a65ae4ba22dce1d93e4b5fe182f953df71a ...
- 3.17 Linux移动或重命名文件和目录(mv命令)
mv 命令(move 的缩写),既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名.该命令的基本格式如下: [root@localhost ~]# mv [选项] 源文件 目标文件 选 ...
- Node.js 构建命令行工具:实现 ls 命令的 -a 和 -l 选项
在日常的前端开发中,我们常常借助各种基于 Node.js 的脚手架工具来加速项目搭建和维护,比如 create-react-app 可以一键初始化一个 React 项目,eslint 则帮助我们保持代 ...
- dephi winspy Demo
在spy+中未找到这样的功能 有个隐藏窗口的进程,相让窗口显示出来,虽然可以找到进程ID,然后再逐步找到主窗口句柄,但又没句柄发各种消息的软件. 计得以前有个窗口精灵之类的,网上找了很多,要么没有此功 ...
- 记录个Java/Groovy的小问题:空字符串调用split函数返回非空数组
问题复现 最近写了一个groovy替换程序增量流水线脚本(会Java也能看懂),示意脚本如下: //获取文件列表方法 def listFiles(folder) { def output = sh(s ...
- 【一步步开发AI运动小程序】十九、运动识别中如何解析RGBA帧图片?
引言 最近有不少开发者向我们咨询,像体测.赛事等应用场景中,需要保存运动过程的图像,如何将相机抽取的RGBA帧图像解析成.jpg或.png格式的图像?今天我们就为您介绍相应的解决方案. 一.RGBA图 ...
- 高性能计算-gemm-openmp效率测试(10)
1. 目标 设计一个程序,使用OpenMP并行化实现矩阵乘法.给定两个矩阵 A 和 B,矩阵大小均为1024*1024,你的任务是计算它们的乘积 C. 要求: (1).使用循环结构体的知识点,包括fo ...
- 如何使用,操作Redis数据库
本博客不再维护,搬家到 http://zthinker.com .个人微信小程序(分布式编程) Redis是一个开源的内存中键值数据存储.Redis是NoSQL数据库,它不使用结构化查询语言,也称为S ...
- Ubuntu apt-cache命令查找可用软件包
本文GoFace给大家讲解下在Ubuntu及相同包管理的linux系统下如何查找可用软件包.在Ubuntu上大家一般使用apt-get安装软件,如果想查找某一包软件仓库中是否有,并不是使用apt-ge ...