【2021.6.26 NOI模拟】Problem B. 简单题 another solution
Problem Description
Input
从文件
b.in中读入数据。一个正整数 n。
Output
输出到文件
b.out中。一个整数表示答案。
Sample Data
Input #1 Copy
5
Output #1 Copy
31
Input #2 Copy
50
Output #2 Copy
2885
Data Constraint
首先,我们从小到大枚举 \(n\),假设当前枚举到 \(i\),\(S\) 会多出两个数 \(2i-1\) 和 \(2i\)。因为要插入其中一个到 \(A\) 中,还要使得和尽量小,所以我们选择向 \(A\) 插入 \(2i-1\)。
此时,\(A\) 中可能会出现 \(2i-1\) 的因子(不是质因子),那么我们就枚举出这些因子并把它们从 \(A\) 中移除。
假设我们移除了 \(x\) 个因子,那么 \(A\) 的大小就会减少 \(x\)。所以我们还要再插入 \(x\) 个数。这些数就选作刚刚我们移除的数的倍数。
因为 \(A\) 中不会同时出现倍数,所以我们插入每个被移除数最小的倍数——它们的 \(2\) 倍。
插入了部分数后,我们同样也要担心这些数是否在 \(A\) 中有因子,所以我们重复上面的操作:找因子,从 \(A\) 中移除,将这些移除的数的 \(2\) 倍加入 \(A\) 中。具体 dfs 就可以。因为每个数都只会进行一次这个操作,所以时间复杂度是 \(O(n\times 找因子时间)\) 的。实现较差可以做到 \(O(n\sqrt{n})\),但如果你的实现比较好,比如枚举每个数的倍数加入,可以做到 \(O(n\ln n)\) 的。这个做法不知道比正解差多少倍,但是想起来简单,没有弯路。但是需要注意常数。比如用链式前向星代替 vector。
#include <cstdio>
#include <vector>
using namespace std;
#define ll long long
#define N 1000010
ll n, ans, a[N];
ll head[N], nxt[13470035], to[13470035], cnt;
void addEdge(ll u, ll v) {
cnt ++;
to[cnt] = v;
nxt[cnt] = head[u];
head[u] = cnt;
}
void init() {
for(ll i = 1; i <= n; i ++) {
addEdge(i, 1);
for(ll j = 2; i * j <= 2 * n; j ++) {
addEdge(i * j, i);
}
}
}
void dfs(ll x) {
for(ll j = head[x]; j; j = nxt[j]) {
ll i = to[j];
if(a[i]) { // 有因数,除掉
a[i] = 0;
ans -= i;
a[i * 2] = 1;
ans += i * 2;
dfs(i * 2);
}
}
}
int main() {
freopen("b.in", "r", stdin);
freopen("b.out", "w", stdout);
scanf("%lld", &n);
init();
a[1] = 1;
ans = 1;
for(ll i = 2; i <= n; i ++) {
ans += 2 * i - 1; // 必须加入
a[2 * i - 1] = 1;
dfs(2 * i - 1);
// printf("%lld %lld\n", i, ans);
}
printf("%lld", ans);
}
【2021.6.26 NOI模拟】Problem B. 简单题 another solution的更多相关文章
- 5.26 NOI 模拟
\(T1\)石子与HH与HHの取 博弈是不可能会的 \(c_i\)相等,比较显然的\(Nim,\)直接前缀异或求一下 \(a_i=1,\)区间长度对\(2\)取模 结论\(:\)黑色石子严格大于白色个 ...
- poj1298 The Hardest Problem Ever 简单题
链接:http://poj.org/problem?id=1298&lang=default&change=true 简单的入门题目也有这么强悍的技巧啊!! 书上面的代码: 很厉害有没 ...
- HDU 4627 The Unsolvable Problem(简单题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4627 题目大意:给定一个整数n(2 <= n <= 109),满足a+b=n并且[a,b] ...
- 5.23 NOI 模拟
$5.23\ NOI $模拟 \(T1\)简单的计算几何题 \(zjr:\)我当时没改,那么自己看题解吧 倒是有个简单的随机化方法(能获得\(72pts,\)正确性未知)\(:\) 随机两条切椭圆的平 ...
- 5.6 NOI模拟
\(5.6\ NOI\)模拟 明天就母亲节了,给家里打了个电话(\(lj\ hsez\)断我电话的电,在宿舍打不了,只能用教练手机打了) 其实我不是很能看到自己的\(future,\)甚至看不到高三的 ...
- HDU 1753 大明A+B(字符串模拟,简单题)
简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...
- 自己模拟的一个简单的web服务器
首先我为大家推荐一本书:How Tomcat Works.这本书讲的很详细的,虽然实际开发中我们并不会自己去写一个tomcat,但是对于了解Tomcat是如何工作的还是很有必要的. Servlet容器 ...
- Linux——模拟实现一个简单的shell(带重定向)
进程的相关知识是操作系统一个重要的模块.在理解进程概念同时,还需了解如何控制进程.对于进程控制,通常分成1.进程创建 (fork函数) 2.进程等待(wait系列) 3.进程替换(exec系列) 4 ...
- python练习笔记——编写一个装饰器,模拟登录的简单验证
编写一个装饰器,模拟登录的简单验证(至验证用户名和密码是否正确) 如果用户名为 root 密码为 123则正确,否则不正确.如果验证不通过则不执行被修饰函数 #编写一个装饰器,模拟登录的简单验证 #只 ...
- Problem 2125 简单的等式(FZU),,数学题。。。
Problem 2125 简单的等式 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description 现在有一个等式如下:x^2+ ...
随机推荐
- Error running 'Tomcat 8.5.27': Unable to open debugger port (127.0.0.1:2887): java.net.SocketException "Interrupted function call: accept failed"-火绒安全搞的鬼
火绒安全-导致的tomcat8启动异常 一.问题由来 最近有个朋友在学习使用IDEA配置tomcat 8.5.99的时候,使用一切都正常,直到学习到使用Servlet实现文件 下载功能的时候,出现问题 ...
- gyroflow.xyz - 视频防抖 支持相机 gopro 不支持手机视频 - 软件推荐
gyroflow.xyz - 视频防抖 支持相机 gopro 不支持手机视频 - 软件推荐 https://gyroflow.xyz/ https://github.com/gyroflow/gyro ...
- 制作B站直播简介
本文只用于个人总结备份,如果对你有帮助就更好了. 准备工作 准备好简介要用的的背景图.头像图,上传到图床生成图片链接. 简介的内容可分为主播简介.直播时间.直播内容.联系方式,内容根据实际需要修改,需 ...
- 为什么要将Jenkins部署在k8s上
传统Jenkins的Master-Slave方案的缺陷 Master节点发生单点故障时,整个流程都不可用了 每个 Slave节点的配置环境不一样,来完成不同语言的编译打包等操作,但是这些差异化的配置导 ...
- deepin平台安装debian的cao蛋时
我在deepin系统安装别的系统的时候,一直在boot界面无法进行下一步.困扰了我好几天,最后从电脑的左侧换成了电脑的右侧(usb)接口. 终于安装成功.你是......牛(deepin)
- 关于全景(360)图片拼接的方法(Opencv3.0 Stitcher)----续(一)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- django项目(博客一)
一 项目开发流程 1.需求 分析架构师+产品经理+开发者组长 在跟客户谈需求之前,会大致先了解客户的需求,然后自己先设计一套比较好的方案 在跟客户沟通交流中引导客户往我们之前想好的方案上面靠 形成一个 ...
- View之Canvas,Paint,Matrix,RectF等介绍
目录介绍 1.Paint画笔介绍 1.1 图形绘制 1.2 文本绘制 2.Canvas画布介绍 2.1 设置属性 2.2 画图[重点] 2.3 Canvas对象的获取方式 2.4 Canvas的作用 ...
- Python简单程序设计(Time篇)
如题: 解题方式如下:
- XSS 从 PDF 中窃取数据
XSS 从 PDF 中窃取数据 将服务器端 XSS 注入到动态生成的 PDF 中 在 hack the box 的 Book 机器(Scripting Track)上,我遇到了一个 Web 应用程序, ...

