简化题意

一个$ 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的更多相关文章

  1. 一行代码搞定 R 语言模型输出!(使用 stargazer 包)

    引言 使用stargazer包可以将 R 构建的模型结果以LATEX.HTML和ASCII格式输出,方便我们生成标准格式的表格.再结合rmarkdown,你就可以轻轻松松输出一篇优雅的文章啦~本文“使 ...

  2. Pilosa文档翻译(二)入门指南

    目录 开始 Pilosa 简单项目 创建架构(Create the Schema) 从CVS文件导入数据 做一些查询(Queries) 接下来做什么? Pilosa支持默认使用JSON的HTTP接口. ...

  3. R语言—统计结果输出至本地文件方法总结

    1.sink()在代码开始前加一行:sink(“output.txt”),就会自动把结果全部输出到工作文件夹下的output.txt文本文档.这时在R控制台的输出窗口中是看不到输出结果的.代码结束时用 ...

  4. Dark theme for Texstudio - TeX - LaTeX

    Dark theme for Texstudio ~~~  1.window系统如下操作 ~~~ 1. texstudio的配置文件texstudio 的配置文件在~/.config/texstudi ...

  5. TAE words all

    // vol 1   could do with sth   rhinoplasty   angst   the wee small hours   familial   Munich   gladi ...

  6. R语言函数话学习笔记5

    使用Tidyverse完成函数化编程 (参考了家翔学长的笔记) 1.magrittr包的使用 里面有很多的管道函数,,可以减少代码开发时间,提高代码可读性和维护性 1.1 四种pipeline 1.1 ...

  7. Hashcat使用指南

    Hashcat使用指南 免责声明: 0×01 Hashcat破解linux shadow的密码-首先了解shadow文件到底是什么? 0×02 hashcat的使用 参数补充: -m 参数 -a 参数 ...

  8. R语言原生管道绘图

    前言 最近写论文的时候又一次用到了R.这次我是对Java有一定程度了解后再次转向R,才真正认识到R这门语言在统计编程和数据可视化领域的优雅和快速. 首先可以看一段Java的stream代码: redi ...

随机推荐

  1. C#使用 MailKit 收发邮件

    目录 获取QQ邮箱授权码 安装 MailKit 配置邮件服务器信息 实现邮件收发方法 测试邮件收发 参考文章 获取QQ邮箱授权码 打开QQ邮箱,进入 设置->账号 页面: 在 POP3/IMAP ...

  2. LiveData

    ViewModel 添加依赖 implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' activity_main.xml < ...

  3. Games 101 作业1

    1 坐标系 关于坐标系,坐标系其实就是空间信息.有了坐标系我们可以非常详细的描述这个世界,为了方便一般为一个观测者生成一个坐标系. 坐标系以观测者所在的位置为原点.就像我们常说的前面三米,我们对世界的 ...

  4. Django运行服务报NameError: name ‘os‘ is not defined

    出现Bug: 原因:这里调用了os模块,但是文件头并没引用os模块 解决办法:在settings.py文件头加上:

  5. Nuxt.js 应用中的 pages:extend 事件钩子详解

    title: Nuxt.js 应用中的 pages:extend 事件钩子详解 date: 2024/10/25 updated: 2024/10/25 author: cmdragon excerp ...

  6. 使用 vscode 编译+运行 typescropt Mac win同理

    一..d.ts文件最好在src/typings 目录下,可在tsconfig.json 文件配置 二.vs 监听文件变化,自动编译ts文件 tsconfig.json { "compiler ...

  7. frida 连接夜神模拟器

    adb connect 127.0.0.1:62001 adb devices adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27 ...

  8. SpringBoot实现轻量级动态定时任务管控及组件化

    关于动态定时任务 关于在SpringBoot中使用定时任务,大部分都是直接使用SpringBoot的@Scheduled注解,如下: @Component public class TestTask ...

  9. python get请求传array数组

    前言 使用传统的http发get请求时,如果传参为array数组,参数名称为a时,可以这样传值a=1&a=2&a=3,但是当只有一个时,这种方式就不合理了. get请求还有另外一种方式 ...

  10. 深入Log4J源码之Log4J Core

    毕业又赶上本科的同学会,还去骑车环了趟崇明岛,六月貌似就没消停过,不过终于这些事情基本上都结束了,我也可以好好的看些书.读些源码.写点博客了. Log4J将写日志功能抽象成七个核心类/接口:Logge ...