题意:给定$n$和$r$,要找$n$个整点,使得他们两两距离的平方和最大,并且所有点到原点的距离必须小于$r$

很容易猜到答案在凸包上然后暴力找,但证明还是挺妙的

首先转化一下距离平方和

令$\vec{a_i}=\vec{OA_i}$,则$\sum\limits_{i\lt j}A_iA_j^2=\dfrac{\sum\limits_{i\neq j}A_iA_j^2}{2}=\dfrac{\sum\limits_{i\neq j}(\vec{a_i}-\vec{a_j})^2}{2}=\dfrac{\sum\limits_{i\neq j}(\vec{a_i}^2+\vec{a_j}^2-2\cdot\vec{a_i}\cdot\vec{a_j})}{2}$

对于每个$k$,当$i=k$时$\vec{a_k}^2$被计算$n-1$次,当$i\neq k$时被计算$n-1$次

再用和的平方公式处理一下两两做点积的项

原式$=\dfrac{2(n-1)\sum\limits_{1\leq i\leq n}\vec{a_i}^2-2[(\sum\limits_{1\leq i\leq n}\vec{a_i})^2-\sum\limits_{1\leq i\leq n}\vec{a_i}^2]}{2}=n\sum\limits_{1\leq i\leq n}\vec{a_i}^2-(\sum\limits_{1\leq i\leq n}\vec{a_i})^2$

为了让第一项尽可能大,选的点应该尽可能远离原点,为了让第二项尽可能小,选的点应该尽可能可以互相抵消(因为是向量和)

这提示了我们答案会分布在凸包上,下面我们来严格证明

假设已经确定了$A_{1\cdots n-1}$我们想确定最后一个点,设它为$P(x,y)$

新增加的距离平方和为$\sum\limits_{1\leq i\leq n-1}[(x-x_i)^2+(y-y_i)^2]$

整理一下,得到$(n-1)[(x-\frac{\sum\limits_{1\leq i\leq n-1}x_i}{n-1})^2-(\frac{\sum\limits_{1\leq i\leq n-1}x_i}{n-1})^2+\frac{\sum\limits_{1\leq i\leq n-1}x_i^2}{n-1}+(y-\frac{\sum\limits_{1\leq i\leq n-1}y_i}{n-1})^2-(\frac{\sum\limits_{1\leq i\leq n-1}y_i}{n-1})^2+\frac{\sum\limits_{1\leq i\leq n-1}y_i^2}{n-1}]$

后面那一大坨东西跟$x,y$无关,所以问题转换为求离$X(\dfrac{\sum\limits_{1\leq i\leq n-1}x_i}{n-1},\dfrac{\sum\limits_{1\leq i\leq n-1}y_i}{n-1})$最远的点

下面证$P$在凸包端点上

假设$P$不在凸包端点上,延长$XP$与凸包某边$AB$交于$P'$(交于端点直接取端点为更优解)

若$\angle AP'X\geq\dfrac{\pi}{2}$,则$AX\gt XP'\gt XP$,即选$A$更优

若$\angle BP'X\geq\dfrac{\pi}{2}$,则$BX\gt XP'\gt XP$,即选$B$更优

就这样证完了

所以一开始找一下凸包,然后暴力找到最优解

算一下就知道$r=29$的时候凸包的点数量最多,有$36$个,一点都不虚其实还是得感谢CF的评测机

我居然能找到一道Div2的E是暴力23333

#include<stdio.h>
#include<math.h>
#include<vector>
using namespace std;
struct point{int x,y;point(int a=0,int b=0){x=a;y=b;}
}t;
point operator-(point a,point b){return point(a.x-b.x,a.y-b.y);
}
int operator*(point a,point b){return a.x*b.y-a.y*b.x;
}
vector<point>p;
vector<int>now,bes;
int n,r,ans;
void dfs(int chos,int las,int sx,int sy,int sx2,int sy2){if(chos==n){if(ans<n*(sx2+sy2)-sx*sx-sy*sy){ans=n*(sx2+sy2)-sx*sx-sy*sy;bes=now;}return;}for(int i=las;i<p.size();i++){now.push_back(i);dfs(chos+1,i,sx+p[i].x,sy+p[i].y,sx2+p[i].x*p[i].x,sy2+p[i].y*p[i].y);now.pop_back();}
}
int main(){scanf("%d%d",&n,&r);int i,s;for(i=-r;i<=0;i++){p.push_back(point(i,(int)sqrt(r*r-i*i)));while(p.size()>2&&(p[p.size()-2]-p[p.size()-3])*(p[p.size()-1]-p[p.size()-2])>=0){p[p.size()-2]=p[p.size()-1];p.pop_back();}}s=p.size();for(i=s-2;i>=0;i--)p.push_back(point(-p[i].x,p[i].y));for(i=1;i<s;i++)p.push_back(point(-p[i].x,-p[i].y));for(i=s-2;i>0;i--)p.push_back(point(p[i].x,-p[i].y));ans=0;dfs(0,0,0,0,0,0);printf("%d\n",ans);for(i=0;i<n;i++)printf("%d %d\n",p[bes[i]].x,p[bes[i]].y);
}

转载于:https://www.cnblogs.com/jefflyy/p/7952930.html

[CF460E]Roland and Rose相关推荐

  1. Codeforces 460E Roland and Rose(暴力)

    题目链接:Codeforces 460E Roland and Rose 题目大意:在以原点为圆心,半径为R的局域内选择N个整数点,使得N个点中两两距离的平方和最大. 解题思路:R最大为30.那么事实 ...

  2. Rational Rose打开方式

    Rational Rose打开方式 rational Rose出现打不开的情况,可以在我的电脑中c盘目录下搜索flexlm.cpl 打开后的界面 点击Setup,查看并检查修改配置是否正确 检查完毕后 ...

  3. 我很欣慰,Vista下终于能用rose了

    操作系统换成vista后,原来的rose2003无法使用了.网上找了很多资料,有用的不多. 后来看到新版本的7.0支持vista,可是苦于找不到下载地址. 今天终于下到了,一路安装下来,非常顺利.呵呵 ...

  4. Rose VS PowerDesigner

    一. 二者的出身       作为世界最著名的两大CASE工具,Rational Rose和PowerDesigner的名声可谓如雷贯耳.Rose是当时全球最大的CASE工具提供商Rational的拳 ...

  5. PowerDesigner与Rose详解教程

    一. 二者的出身 作为世界最著名的两大CASE工具,Rational Rose和PowerDesigner的名声可谓如雷贯耳.Rose是当时全球最大的CASE工具提供商Rational的拳头产品,UM ...

  6. ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法

    ubuntu下连接mysql出现Access denied for user 'rose'@'localhost' (using password: NO)的解决方法 参考文章: (1)ubuntu下 ...

  7. Rose Study

    公司大量使用Rose框架支持线上业务,不仅仅是它的实用性和方便的特点吸引你去学习,更是它优雅的设计. 但是,由于是开源的框架,所以,资料和示例程序都是有限的,这一篇陈臻老师的作品简单的介绍了Rose的 ...

  8. rose框架学习总结

    rose框架学习总结 rose框架为paoding rose框架 具体可见https://code.google.com/p/paoding-rose/ 1   对rose框架的整体认识 1.1B/S ...

  9. Paoding Rose学习(一)

    Paoding Rose学习(一) 本文包括一下几个内容 rose环境介绍 一个简单的基于rose的web程序 web.xml介绍 自动化部署 需要的环境 eclipse/Intellij IDE M ...

最新文章

  1. Css颜色和文本字体
  2. 一道清华期中考试题(逃)
  3. 放弃微服务,构建单体应用
  4. C# 中的字符串内插
  5. inDesign 教程,如何复制文本格式?
  6. spring-第一篇之spring核心机制依赖注入(DI)/控制翻转(IoC)
  7. c语言上机作业数组,2015二级c语言上机题库
  8. java8配置环境变量_java8环境变量设置
  9. 合并下载ts流媒体视频
  10. R语言实现非线性回归
  11. Flutter从0到1自定义日历
  12. 多商户商城系统功能拆解39讲-平台端营销-砍价记录
  13. python中的os.listdir()方法、os.path.isdir()方法
  14. 基于springboot在线考试报名系统毕业设计源码031706
  15. 通过atan实现atan2函数
  16. 自然场景文本检测识别技术综述【转】
  17. 软件开发模型之装修篇
  18. windows安装net4.5.2
  19. 如何做好水库大坝安全监测?
  20. python 匿名函数示例_扣丁学堂Python3开发之匿名函数用法示例详解

热门文章

  1. 用EXCEL实现时间戳格式和日期格互转
  2. 常考数据结构与算法:最长回文子串
  3. 常考数据结构与算法:容器盛水问题
  4. 纯 CSS 实现三角形尖角箭头的实例
  5. FFmpeg command line tool(Android中使用FFmpeg命令行)
  6. H3C 交换机升级说明
  7. 前端学习记录(CSS篇)
  8. node-sass安装失败解决方法
  9. Android Studio 提示与技巧(官方文档翻译)
  10. C++纯虚函数 virtual =0