CodeForces 76E Points
2016-05-11 14:38
302 查看
给出n个点,求任意两点间距离的平方和。
暴力显然超时,可以把公式写出来,化简一下,发现预处理一下后缀和就可以o(n)出解了。
暴力显然超时,可以把公式写出来,化简一下,发现预处理一下后缀和就可以o(n)出解了。
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<algorithm> using namespace std; const int maxn=100000+10; struct Point { long long x,y; }p[maxn]; int n; long long sum[maxn]; long long a[maxn]; long long get(int x) { long long res=0; int tot=0; if(x==0) for(int i=1;i<=n;i++) a[i]=p[i].x; else for(int i=1;i<=n;i++) a[i]=p[i].y; sum[n+1]=0; for(int i=n;i>=1;i--) sum[i]=sum[i+1]+a[i]; for(int i=1;i<=n;i++) res=res+a[i]*a[i]*(n-1); for(int i=1;i<=n-1;i++) res=res-2*a[i]*sum[i+1]; return res; } int main() { scanf("%d",&n); long long ans=0; for(int i=1;i<=n;i++) scanf("%lld%lld",&p[i].x,&p[i].y); ans=ans+get(0); ans=ans+get(1); printf("%lld\n",ans); return 0; }
相关文章推荐
- 利用JAVA Service Wrapper把JAVA程序做成windows服务
- "XXX"中无法使用ApplePay,检查此应用的设置并确定其设计可使用ApplePay
- 摩托车继承自行车和机动车
- unity 通过触摸屏幕产生射线实例化玩家
- 使用二级指针简化臃肿的代码
- PAT乙级1012-D进制的A+B (20)
- WS_DELIVERY_UPDATE 修改数量、过账日期并发货过账
- Windows 7 下 Ubuntu Kylin 16.04 LTS 双系统的安装
- Struts和SpringMVC两种MVC框架比较
- 关于recyclerview的横向布局的宽度以及item的点击事件的添加
- cordova No Content-Security-Policy meta tag found
- html5 PC端head部分整理
- Cannot read property 'add' of null
- 122 - Trees on the level(模拟内存池解法)
- 在linux下制作静态库和动态链接库的方法
- 在linux下制作静态库和动态链接库的方法
- 在linux下制作静态库和动态链接库的方法
- mysql 下phpmyadmin安装
- 计算机原理 —— 主板与内存映射
- POJ 3468 A Simple Problem with Integers