[nowcoder5666B]Infinite Tree

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 vector<int>v[N];
5 int n,vis[N],sum[N],le[N],ri[N];
6 long long s,ss,ans,a[N];
7 int main(){
8 for(int i=2;i<N-4;i++)
9 if (!vis[i]){
10 sum[i]=1;
11 v[i].push_back(i);
12 for(int j=2;i*j<N-4;j++){
13 vis[i*j]=1;
14 for(int k=j;k%i==0;k/=i){
15 sum[i*j]++;
16 v[i].push_back(i*j);
17 }
18 }
19 }
20 for(int i=2;i<N-4;i++)sum[i]+=sum[i-1];
21 while (scanf("%d",&n)!=EOF){
22 s=ans=0;
23 for(int i=1;i<=n;i++){
24 scanf("%lld",&a[i]);
25 s+=a[i];
26 ans+=a[i]*sum[i];
27 a[i]+=a[i-1];
28 }
29 int l=1,r=ri[n]=n,las=-1;
30 for(int i=n;i>=2;i--){
31 if (vis[i])continue;
32 le[i]=upper_bound(v[i].begin(),v[i].end(),l)-v[i].begin();
33 ans-=s*le[i]-1;
34 if (las>=0)ri[i]=v[las][le[las]]-1;
35 las=i;
36 while (1){
37 ss=2*(a[r]-a[l-1])-2*(a[ri[i]]-a[v[i][le[i]]-1]);
38 if (s-ss<=0)break;
39 s-=ss;
40 l=v[i][++le[i]];
41 r=ri[i];
42 ans-=s;
43 }
44 if (s<=0)break;
45 }
46 printf("%lld\n",ans);
47 }
48 }
[nowcoder5666B]Infinite Tree的更多相关文章
- HDU 5573 Binary Tree 构造
Binary Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 Description The Old Frog King lives ...
- Binary Tree(二叉树+思维)
Binary Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- 2015上海赛区B Binary Tree
B - Binary Tree Description The Old Frog King lives on the root of an infinite tree. According to ...
- hdu 5573Binary Tree
Binary Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- hdu-5573 Binary Tree
The Old Frog King lives on the root of an infinite tree. According to the law, each node should conn ...
- Binary Tree 分类: POJ 2015-06-12 20:34 17人阅读 评论(0) 收藏
Binary Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6355 Accepted: 2922 Descr ...
- Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode
Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode Element DOM Tree jQuery pl ...
- k-d tree算法
k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点匹配的时候就会利用到k ...
- Distance on the tree
Distance on the tree https://nanti.jisuanke.com/t/38229 DSM(Data Structure Master) once learned abou ...
随机推荐
- 题解 UVA1500 Alice and Bob
题目传送门 题目大意 给出 \(n\) 堆石子,每次可以做以下两种操作之一: 将某两堆石子进行合并 将某一堆石子抽走一个石子 问谁必胜. 思路 就nm很妙好么? 首先,我们需要考虑每堆石子大小都 \( ...
- C# 提取PDF中的表格
本文介绍在C#程序中(附VB.NET代码)提取PDF中的表格的方法,调用Spire.PDF for .NET提供的提取表格的类以及方法等来获取表格单元格中的文本内容:代码内容中涉及到的主要类及方法归纳 ...
- C++ 与 Visual Studio 2019 和 WSL
Visual Studio 使用 C++ 的 Linux 开发(WSL) https://devblogs.microsoft.com/cppblog/c-with-visual-studio-201 ...
- 用C++生成solidity语言描述的buchi自动机的初级经验
我的项目rvtool(https://github.com/Zeraka/rvtool)中增加了生成solidity语言格式的监控器的模块. solidity特殊之处在于,它是运行在以太坊虚拟机环境中 ...
- 自动化运维利器Ansible要点汇总
由于大部分互联网公司服务器环境复杂,线上线下环境.测试正式环境.分区环境.客户项目环境等造成每个应用都要重新部署,而且服务器数量少则几十台,多则千台,若手工一台台部署效率低下,且容易出错,不利后期运维 ...
- SpringCloud-SpringBoot-SpringCloudAlibaba对应版本选择
一.SpringCloud-SpringBoot 对应的版本选择 SpringCloud官网常规方式只能查看最新的几个版本信息 https://spring.io/projects/spring-cl ...
- 镜头Lens Image circle像圈的解释是什么意思
Image circle镜头中指的是:像圈 像圈(image circle)是指入射光线通过镜头后,在焦平面上呈现出的圆形的明亮清晰的影像幅面,也称像面大小.镜头像圈由镜头光学结构决定,一旦设计完成, ...
- 一从二主IIC连接调试
最近有个项目需要实现快速开机出摄像头预览(2s内),但是我的板子linux上的qt应用起来都要10s左右了,于是在硬件上增加了一个屏驱芯片TW8836,这是一个mcu,可以直接获取摄像头数据送到lcd ...
- 另类加法 牛客网 程序员面试经典 C++ Python
另类加法 牛客网 程序员面试经典 C++ Python 题目描述 请编写一个函数,将两个数字相加.不得使用+或其他算数运算符. 给定两个int A和B.请返回A+B的值 测试样例: 1,2 返回:3 ...
- 什么是操作系统fork()进程
1.fork()是创建进程函数. 2.c程序一开始,就会产生 一个进程,当这个进程执行到fork()的时候,会创建一个子进程. 3.此时父进程和子进程是共存的,它们俩会一起向下执行c程序的代码. 4. ...