codeforces 731F 暴力(前缀和)
来源:互联网 发布:js 滚动延迟加载 编辑:程序博客网 时间:2024/05/01 21:15
点击打开链接
//枚举a[i]作为secondary
//其余要选的数 必须为a[i]的倍数 x=p*a[i]
//如果 a[j]在p*a[i]~(p+1)*a[i]之间 按照题意 a[j]可以降为p*a[i]
//重点:如何快速判断 p*a[i]~(p+1)*a[i]-1之间有多少个a[j]?
//利用前缀和思想 cnt[i]记录1~i中出现的元素个数
则a,b内元素个数为cnt[b]-cnt[a-1]
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue> #include <stack>using namespace std;typedef long long ll;const int N=2e5+20;int a[N]; int vis[N]={0};ll cnt[N]={0};//cnt[i]记录value(1~i)中出现的元素个数 int main(){int n;cin>>n;int mx=0;for(int i=1;i<=n;i++){cin>>a[i];mx=max(mx,a[i]);cnt[a[i]]++;}sort(a+1,a+n+1);for(int i=1;i<=mx;i++){cnt[i]+=cnt[i-1];//记录元素出现个数//cout<<cnt[i]<<' ';}ll ans=0;for(int i=1;i<=n;i++){//枚举a[i]作为secondary //其余要选的数 必须为a[i]的倍数 x=p*a[i] //如果 a[j]在p*a[i]~(p+1)*a[i]-1之间 按照题意 a[j]可以降为p*a[i]//重点:如何快速判断 p*a[i]~(p+1)*a[i]-1之间有多少个a[j]? //利用前缀和思想 cnt[i]记录1~i中出现的元素个数 ll sum=0;if(!vis[a[i]])//小优化 不重复算secondary {for(int x=a[i];x<=mx;x+=a[i]){sum+=(cnt[min(x+a[i]-1,mx)]-cnt[x-1])*x; //x~x+a[i]-1的元素个数 //cout<<cnt[x+a[i]-1]<<" "<<cnt[x-1]<<endl; vis[a[i]]=1;}}ans=max(ans,sum); }cout<<ans<<endl;return 0;}
0 0
- codeforces 731F 暴力(前缀和)
- Codeforces 731F cnt前缀和
- CodeForces 731F VideoCards 前缀和+枚举
- codeforces 731F (暴力)
- 【codeforces 731F】【前缀和 分块求和 好题】F. Video Cards
- Codeforces 106D Treasure Island 预处理前缀和+暴力(水
- Codeforces 828B Black Square【暴力枚举+二维前缀和】
- Codeforces Round #376 (Div. 2)F(前缀和,模拟)
- (奇怪的暴力)codeforces 731F 354C
- Codeforces Round #394 (Div. 2) F. Dasha and Photos(二位前缀和+线段树/二维前缀和,好题)
- Codeforces Round #376 (Div. 2) F. Video Cards —— 前缀和 & 后缀和
- Codeforces 677E Vanya and Balloons【断点前缀和+暴力维护+数学技巧】
- Codeforces 835C Star sky【思维+暴力预处理二维前缀和】
- Codeforces Round #448 (Div. 2) A 暴力前缀和 B 二分上下界
- Codeforces Round #376 (Div. 2) F. Video Cards(前缀和,好题)
- Codeforces Round #376 (Div. 2) F. Video Cards(前缀和,好题)
- Codeforces Round #376 (Div. 2) F. Video Cards (数论 前缀和 分块求和)
- Codeforces Round #376 (Div. 2) F. Video Cards 数论+数据结构+前缀和
- iOS通用链接配置
- android studio打包apk
- 恐龙技术生存体验(三 眼花缭乱)
- AngularJS很基础的记录
- Javascript中数组查重的方法总结大全
- codeforces 731F 暴力(前缀和)
- javaweb页面中添加验证码功能
- storm流式计算之集群安装
- Kubernetes 1.4 基础篇:kubeadm方式安装
- 思科路由器的启动过程
- 第七天
- 欢迎使用CSDN-markdown编辑器
- WebStorm用PhantomJS运行JavaScript程序
- http://web.jobbole.com/86734/