【瞎搞】HDU 4961 Boring Sum
来源:互联网 发布:直销矩阵制示意图 编辑:程序博客网 时间:2024/05/11 02:41
题意:给出一串数列 a[1],a[2].....a[n];
所谓的b[i]是在a[i]的左边的倍数的值,c[i]是在a[i]的右边的倍数的值
若左边或右边没有倍数则是它本身
求sum=b[1]*c[1]+....b[n]*c[n];
思路:
先预处理出1-100000的约数下来。。
再用一个next数组储存这个数最近的倍数
再从左开始for 则b[i]=next[a[i]];
再更新next数组
同理得c
#include <stdio.h>#include <string.h>#include <math.h>#include <string>#include <algorithm>#include <vector>using namespace std;#define IN freopen ("in.txt" , "r" , stdin);#define OUT freopen ("out.txt" , "w" , stdout);typedef long long LL;const int M= 100100;vector<int>g[M];LL next[M],b[M],c[M],a[M];int main(){ int n; for(int i=1;i<=100000;i++)//得到约数 { g[i].clear(); for(int j=1;j<=(int)sqrt(i*1.0);j++) { if(i%j==0) { g[i].push_back(j); g[i].push_back(i/j); } } } // IN; while(scanf("%d",&n),n) { memset(next,-1,sizeof(next)); for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); for(int i=1;i<=n;i++)//得到b { b[i]=-1; b[i]=max(b[i],next[a[i]]); if(b[i]==-1) b[i]=a[i]; for(int j=0;j<g[a[i]].size();j++)//更新next { next[g[a[i]][j]]=a[i]; } } memset(next,-1,sizeof(next)); for(int i=n;i>=1;i--) { c[i]=1100000; if(next[a[i]]!=-1) c[i]=min(c[i],next[a[i]]); if(c[i]==1100000) c[i]=a[i]; for(int j=0;j<g[a[i]].size();j++) { next[g[a[i]][j]]=a[i]; } } LL sum=0; for(int i=1;i<=n;i++) sum+=b[i]*c[i]; printf("%I64d\n",sum); } return 0;}
0 0
- 【瞎搞】HDU 4961 Boring Sum
- HDU 4961(杭电多校#9 1002题)Boring Sum(瞎搞)
- HDU 4961 Boring Sum
- HDU - 4961 Boring Sum
- hdu 4961 Boring Sum
- hdu 4961 Boring Sum
- hdu 4961 Boring Sum
- HDU 4961 Boring Sum
- hdu 4961 Boring Sum
- HDU 4961 Boring Sum
- hdu 4961 Boring Sum 多校九
- hdu 4961 Boring Sum(高效)
- HDU 4961 Boring Sum 构造题
- HDU 4961 Boring Sum(分解因子)
- hdu 4961 Boring Sum【构造题】
- hdu 4961 Boring Sum(数学题)
- HDU 4961 Boring Sum(构造题)
- HDU 4961 Boring Sum 因数分解
- wpf中datagrid 控件 隐藏表头方法
- xml功能数据格式
- 黑马程序员——java.lang.Runtime
- 函数
- 关于实现memcpy和memmove两个库函数的一点体会
- 【瞎搞】HDU 4961 Boring Sum
- Shell脚本调试技术
- 黑马程序员——集合工具类
- 使用highChart做报表统计
- ubuntu 14.04 install ibus
- life is tough!最可怕的是牛人还那么努力!
- 第十章 构建基本脚本
- Apache与Nginx的优缺点比较
- linux 文件格式(1) sed工具