[Codeforces 460E][SCOI 2015集训]Roland and Rose(暴力乱搞)
来源:互联网 发布:夕又米的淘宝店 编辑:程序博客网 时间:2024/04/30 08:18
题目链接
http://codeforces.com/problemset/problem/460/E
题目大意
给你一个圆心
思路
显然这
由于题目范围很小,因此凸包上的点个数也很少,最多只有十几个,可以暴力对圆里面的所有点,按照其与圆心的距离进行降序排序,取前18个,暴力枚举这18个点里每个点分别用了多少次(注意点与点是可以重合的!),这个可以通过DFS实现。
代码
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXN 10000using namespace std;struct Point{ int x,y; Point(){} Point(int _x,int _y):x(_x),y(_y){}}points[MAXN],o;int tot=0,n,r,m; //m=候选的点inline int dist(Point a,Point b){ return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}bool cmp(Point a,Point b){ return dist(a,o)>dist(b,o);}void init(){ scanf("%d%d",&n,&r); for(int i=-r;i<=r;i++) for(int j=-r;j<=r;j++) if(dist(Point(i,j),o)<=r*r) points[++tot]=Point(i,j); sort(points+1,points+tot+1,cmp); m=min(18,max(n,tot)); //!!!!取前18个距离圆心最远的点,若找到的在半径为r的圆内的点个数不到n,剩下的点用(0,0)补齐!}int ans[MAXN],maxans;int numofpoint[MAXN],stack[MAXN],top=0;void DFS(int x,int used,int sum) //搜到第x个可行点,已经选了used个点,当前的两两距离平方和为sum{ if(used==n) { if(maxans<sum) { maxans=sum; memcpy(ans,stack,sizeof(stack)); } return; } for(int i=x;i<=m;i++) { stack[++top]=i; int tmp=0; for(int j=1;j<top;j++) tmp+=dist(points[stack[j]],points[i]); DFS(i,used+1,sum+tmp); //!!!!! top--; }}int main(){ init(); DFS(1,0,0); printf("%d\n",maxans); for(int i=1;i<=n;i++) printf("%d %d\n",points[ans[i]].x,points[ans[i]].y); return 0;}
0 0
- [Codeforces 460E][SCOI 2015集训]Roland and Rose(暴力乱搞)
- Codeforces 460E Roland and Rose(暴力)
- 【Codeforces Round 262 (Div 2)E】【爆搜 估价函数剪枝 搜索步长剪枝】Roland and Rose 整格放点 点对欧几里得距离平方和尽可能大
- [SCOI 2015集训]B
- Codeforces 463 E 乱搞
- Codeforces 463E Caisa and Tree(暴力)
- 【二分+乱搞】Codeforces 743E Vladik and cards
- Codeforces 400E Inna and Binary Logic(位运算+暴力)
- Codeforces 366E Dima and Magic Guitar 暴力
- codeforces 525E Anya and Cubes (暴力+中途相遇法)
- codeforces 552E Vanya and Brackets(暴力)
- codeforces 324# E. Anton and Ira (暴力枚举+贪心)
- Codeforces 677E Vanya and Balloons(暴力+转换) category:
- Codeforces 272E Dima and Horses【玄学暴力】
- 【codeforces 732E】【贪心 map乱搞】
- [乱搞] Codeforces 73E Beta Round #66 E. Morrowindows
- codeforces 446E E. Divisors(数论+暴力)
- Codeforces Amr and Chemistry(数学+乱搞)
- 感想
- java集合框架面试
- 第六周项目二
- 学习写好一封简历
- opencv SURF、SIFT的使用
- [Codeforces 460E][SCOI 2015集训]Roland and Rose(暴力乱搞)
- 第六周项目四——成员函数,友元函数和一般函数有区别
- CSS 颜色代码大全
- 第六周项目一 深复制体验
- 共享内存的常用函数原理剖析
- 【转】深入 char * ,char ** ,char a[ ] ,char *a[] 内核
- 第四课:方法和事件
- 第六周项目5 友元类
- readdir() 获取文件类型