CSU 1857 Crash and Go(relians)(模拟)
Crash and Go(relians)
【题目链接】Crash and Go(relians)
【题目类型】模拟
&题解:
这就是要严格的按照题意说的模拟就好了,也就是:每次添加进来一个圆,就找以前的,看有没有可以合成的多个圆,有的话就合成一起,这块要注意,合成之后,你一定要再从头跑一遍,因为合成之后的圆,有可能和之前联系不上的圆联系上了,所以这块就要多跑一个循环
【时间复杂度】\(O(n^2)\)
&代码:
#include <cstdio>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
using ll=long long;
const int maxn= 1e2 +9;
int n;
struct po
{
double x,y,r;
}te;
vector<po> vp;
double dis(po u,po v)
{
return sqrt((u.x-v.x)*(u.x-v.x)+(u.y-v.y)*(u.y-v.y));
}
bool ok(po u,po v)
{
return dis(u,v)<max(u.r,v.r);
}
void sol(int pos,vector<po>& tt)
{
double x=0,y=0,r=0;
for(int i=0;i<tt.size();i++){
x+=tt[i].x;
y+=tt[i].y;
r+=tt[i].r*tt[i].r;
}
vp[pos].x=x/tt.size();
vp[pos].y=y/tt.size();
vp[pos].r=sqrt(r);
}
int main()
{
// ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
freopen("E:1.txt","r",stdin);
while(cin>>n){
if(n==0) break;
vp.clear();
for(int i=0;i<n;i++){
double u,v,r;
cin>>u>>v>>r;
vp.push_back(po{u,v,r});
}
for(int i=0;i<n;i++) {
vector<po> feasible;
feasible.push_back(vp[i]);
for(int j=0;j<i;j++) if(vp[j].r>0)
{
// if(i==4) printf("%d ---\n",j);
if(ok(vp[i],vp[j])){
// printf("======= i=%d j=%d\n",i,j);
feasible.push_back(vp[j]);
vp[j].r=-1;
}
}
if(feasible.size()>1){
sol(i,feasible);
//这块就是新合成的一个圆 所以你要把它再循环一遍看之前有没有可以联系上的其他人
i--;
}
}
int ans=0;
for(int i=0;i<n;i++){
// printf("vp[%d] x=%f y=%f r=%f\n",i,vp[i].x,vp[i].y,vp[i].r);
if(vp[i].r>0) ans++;
}
cout<<ans<<endl;
}
return 0;
}
CSU 1857 Crash and Go(relians)(模拟)的更多相关文章
- 模拟 CSU 1562 Fun House
题目传送门 /* 题意:光线从 '*' 发射,遇到 '/' 或 '\' 进行反射,最后射到墙上,将 'x' 变成 '&' 模拟:仔细读题,搞清楚要做什么,就是i,j的移动,直到撞到墙,模拟一下 ...
- csu 1312 榜单(模拟题)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312 1312: 榜单 Time Limit: 1 Sec Memory Limit: 128 ...
- 【模拟】CSU 1807 最长上升子序列~ (2016湖南省第十二届大学生计算机程序设计竞赛)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1807 题目大意: 给你一个长度为N(N<=105)的数列,数列中的0可以被其他数 ...
- 【模拟】【数学】CSU 1803 2016 (2016湖南省第十二届大学生计算机程序设计竞赛)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1803 题目大意: 给定n,m(n,m<=109)1<=i<=n,1& ...
- csu - 1536: Bit String Reordering (模拟)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1536 不知道为何怎么写都写不对. 这题可以模拟. 虽然题目保证一定可以从原串变成目标串,但是不一定 ...
- CSU 1862 The Same Game(模拟)
The Same Game [题目链接]The Same Game [题目类型]模拟 &题解: 写这种模拟题要看心态啊,还要有足够的时间,必须仔细读题,一定要写一步,就调试一步. 这题我没想到 ...
- csu 1549: Navigition Problem(几何,模拟)
1549: Navigition Problem Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 305 Solved: 90[Submit][Stat ...
- CSU 1023 修路(二分+模拟)
前段时间,某省发生干旱,B山区的居民缺乏生活用水,现在需要从A城市修一条通往B山区的路.假设有A城市通往B山区的路由m条连续的路段组成,现在将这m条路段承包给n个工程队(n ≤ m ≤ 300).为了 ...
- csu - 1537: Miscalculation (模拟题)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1537 因为给出的式子是必定合法的,只要用两个栈分别保存符号和数字.算出答案后和从左至右算的答案比对 ...
随机推荐
- arcgis10.4 server第一次发布地图报错:We were unable to connect to...Error:Proxy server got bad address...
arcgis 10.4发布地图跟10.2不一样.server url里的http要改为https,否则就会连接不上.
- PHP之流程控制
nest 嵌套 the curly braces 花括号 colon syntax 冒号语法 PHP三种if判断的写法 写法一: if(true){ }else if(){ }else if(){ } ...
- influxdb服务器 relay
https://www.influxdata.com/time-series-platform/influxdb/ https://www.xusheng.org/blog/2016/07/30/pe ...
- [daily][qemu][kvm] 使用virtfs在host与guest之间共享目录
如题. 之前我使用NFS,NFS会有同步问题.比如编译文件时候的时间同步问题,见前边的文章. 如今,我们使用高级的virtfs: 见:https://www.linux-kvm.org/page/9p ...
- 关于struts中的表单元素- Form bean not specified on mapping for action: "helloa.do"报错
今天测试struts时仿照书上写了一个小的表单提交代码 <html:form action="helloa.do" method="post"> & ...
- $ORACLE_HOME/OPatch/opatch lsinventory查oracle补丁
> $ORACLE_HOME/OPatch/opatch lsinventoryInvoking OPatch 10.2.0.4.2 Oracle Interim Patch Installer ...
- 《HTTP - 概述》
晚上听着 木小雅<可能否>,让我这暴躁的一天得以回复一下. 学习是长久之事,不能急躁.应该系统的去学习一些东西. 1:HTTP 最严谨的叫法应该是 超文本转移协议,但大家一般都叫做 超文本 ...
- mimkatz 用法
mimikatz用法 privilege::debug 进入debug模式 sekurlsa::logonPasswords 查看所有用户密码 sekurlsa::wdigest 读取当前登录用 ...
- Java 生成三位随机数
调用这个Math.Random()函数能够返回带正号的double值,该值取值区间是[0.0,1.0),注意,它是左闭右开区间.返回值是一个伪随机选择的数,在该范围内(近似)均匀分布. 如果生成三位随 ...
- TZOJ 5225: 玩转二叉树
描述 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入 输入第一行给出 ...