URAL 1397 Points Game <博弈>
来源:互联网 发布:编程器刷主板bios 编辑:程序博客网 时间:2024/06/06 03:14
题目:http://acm.timus.ru/problem.aspx?space=1&num=1397
题意 :给出平面2n点,有两个玩家游戏。每个回合,玩家A可以取走一个点,然后玩家B取走一个。经过n个回合没有点了,结束比赛。一个玩家的得分是他所取走的所有两两之间的欧几里得距离的和,得分最高者获胜。A和B都是聪明人,求两者分数之差为多少
分析 :寻找点集之间的关系,博弈
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>using namespace std;struct Point{ double x,y;}p[1005];//double dist[1005][1005];double dis[1005];double diss(Point a,Point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int main(){ int n; double sumij; //double px,py; while(cin >> n) { sumij = 0;//sum = 0; //memset(dist,0,sizeof(dist)); memset(dis,0,sizeof(dis)); for(int i=1;i<=2*n;i++) { scanf("%lf %lf",&p[i].x,&p[i].y); } for(int i=1;i<=2*n;i++) for(int j=i+1;j<=2*n;j++) sumij += diss(p[i],p[j]); for(int i=1;i<=2*n;i++) { for(int j = 1;j<=2*n;j++) { if(i==j) continue; dis[i-1] += diss(p[i],p[j]); // printf("i = %d j = %d dist = %.3f\n",i,j,diss(p[i],p[j])); } //printf("%.3f\n",dis[i-1]); } //printf("sumij = %.3f\n",sumij); sort(dis,dis+2*n); for(int i=2*n-2;i>=0;i-=2) sumij -= dis[i]; printf("%.3f\n",sumij); } return 0;}
0 0
- URAL 1397 Points Game <博弈>
- Ural 1397. Points Game
- ural 1180. Stone Game (博弈)
- Ural 1045. Funny Game 博弈+dfs
- Ural 1465. Pawn Game nim博弈
- URAL 1180. Stone Game (博弈 + 规律)
- URAL 2068 Game of Nuts(博弈)
- ural 2068 - Game of Nuts 博弈水题
- game--博弈
- URAL 1180 Stone Game 博弈 找规律 大数取模 除3取模
- URAL 1023 Buttons 博弈
- ural 1060 Flip Game
- URAL 1465 Pawn Game
- Ural 1180. Stone Game
- Ural 1180 Stone Game
- Ural 1060. Flip Game
- Ural 1282. Game Tree
- Ural 1465 Pawn Game
- 括号配对-c(栈)
- HDOJ 1873 看病要排队(优先队列)
- bootstrap table学习小记
- STL中vector, Map, Set的实现原理
- DrawerLayout:左右侧拉菜单
- URAL 1397 Points Game <博弈>
- robots | 优化你的wordpress博客
- [转]怎么看时序图--nand flash的读操作详解
- form表单的提交方式:submit和button.
- 如何编写Socket套接字
- jmeter压力测试的简单实例+badboy脚本录制
- 【ES6】变量的解构赋值
- hd1896 Stones(队列优先)
- Codeforces 612C Replace To Make Regular Bracket Sequence 【stack】