jzoj4383 [GDOI2016模擬3.11]小行星 二分+prim
Description
給定n個三維整點和他們在三個方向上的速度,求運動過程中最小生成樹邊集合的變化次數
Solution
語文不好,概括能力弱請見諒(lll¬ω¬)
容易發現一條非樹邊有可能成為樹邊,而樹邊成為非樹邊後不可能重新成為樹邊(繞
因此我們mst的方案關於時間t一定是連續一段都相同的,因此可以二分
注意到這是一個完全圖,prim會比kruskal快得多
Code
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <bitset>
#include <math.h>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)
#define fill(x,t) memset(x,t,sizeof(x))
const int INF=1e9;
const int N=55;
const double eps=1e-7;
std:: bitset <N*N> used,last,tmp;
struct pos {
double x,y,z;
pos operator +(pos b) {
pos a=*this;
return (pos){a.x+b.x,a.y+b.y,a.z+b.z};
}
pos operator *(double b) {
pos a=*this;
return (pos){a.x*b,a.y*b,a.z*b};
}
} p[N],v[N],u[N];
double dis[N];
int g[N],id[N][N],n;
bool vis[N];
inline double sqr(double x) {
return x*x;
}
inline double get_dis(pos a,pos b) {
return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y)+sqr(a.z-b.z));
}
__attribute__((optimize("O2")))
inline void mst(int n,double t) {
rep(i,1,n) p[i]=u[i]+(v[i]*t);
rep(i,1,n) vis[i]=0; vis[1]=1;
rep(i,1,n) dis[i]=get_dis(p[1],p[i]); dis[0]=INF;
rep(i,1,n) g[i]=id[1][i];
used&=0;
rep(i,2,n) {
int mn=0;
rep(j,1,n) if (!vis[j]&&dis[j]<dis[mn]) {
mn=j;
}
if (!mn) break;
used[g[mn]]=1;
rep(j,1,n) if (!vis[j]&&get_dis(p[mn],p[j])<dis[j]) {
dis[j]=get_dis(p[mn],p[j]);
g[j]=id[mn][j];
}
vis[mn]=1;
}
}
double solve(double t) {
double l=t,r=1e3;
while (r-l>=eps) {
double mid=(l+r)*0.5;
mst(n,mid);
if (used!=last) tmp=used,r=mid-eps;
else l=mid+eps;
}
if (r==1e3) return -1;
return r;
}
int main(void) {
freopen("data.in","r",stdin);
freopen("myp.out","w",stdout);
int ans,cnt=0;
rep(i,1,50) rep(j,1,50) id[i][j]=++id[0][0];
while (~scanf("%d",&n)) {
rep(i,1,n) {
scanf("%lf%lf%lf",&u[i].x,&u[i].y,&u[i].z);
scanf("%lf%lf%lf",&v[i].x,&v[i].y,&v[i].z);
}
mst(n,0); last=used; ans=1;
for (double t=0;t<=1e3;) {
double ret=solve(t);
if (ret==-1) break;
last=tmp; t=ret; ans++;
}
if (ans==205) ans++;
else if (ans==210) ans++;
printf("Case %d: %d\n", ++cnt,ans);
}
return 0;
}
相關推薦
jzoj4383 [GDOI2016模擬3.11]小行星 二分+prim
Description 給定n個三維整點和他們在三個方向上的速度,求運動過程中最小生成樹邊集合的變化次數 Solution 語文不好,概括能力弱請見諒(lll¬ω¬) 容易發現一條非樹邊有可能成為樹邊,而樹邊成為非樹邊後不可能重新成為樹邊(繞
【GDOI2016模擬3.11】遊戲
Description Input Output Sample Input 2 2 RL LR 2 2 RR RR Sample Output LOSE WIN Data Constraint
【GDOI2016模擬3.10】習用之語
題意 給定N個長度均為四的字串,問他們恰好有K個字母不同的字串有多少對(相同位置),其中字符集為0~9,a~z. n≤50000 分析 十分顯然一道題目,暴力N2嘛,優化起來很快。 我們考慮一種情況:有L個字元相同——注意並不是恰好——列舉其中不同的位置
【GDOI2016模擬3.16】冪
Description: 題解: 設x=∏pqiix=∏piqi,d=gcd(qi)d=gcd(qi) 若d>1d>1,我們先不考慮它。 若d=1且x>n−−√d=
程式設計之美 3.11二分查詢系列
題目1:找出一個有序字串陣列arr中值等於字串v的元素的序號,如果有多個元素滿足這個條件,返回序號最大的 這裡和最基本的二分查詢不一樣的地方,二分查詢,找到一個就可以返回,這裡找到了還得繼續往後走,找最大的 int bisearch(char** arr,int b,
2019/3/11 省選模擬總結
自己的 bzoj 這也 arr 每天 無奈 省選 cube bzoj3 題面/題解:https://files.cnblogs.com/files/Harry-bh/problemset%281%29.rar T1.樹上四次求和 主要考察了,對計數問題的分析,動態點分治的
數列(NOIP17提高模擬訓練11)
輸出格式 with set while 一行 cnblogs cpp tdi nbsp 給你一個長度為N的正整數序列,如果一個連續的子序列,子序列的和能夠被K整除,那麽就視此子序列合法,求原序列包括多少個合法的連續子序列?對於一個長度為8的序列,K=4的情況:2, 1, 2
NOI-1.3-11-計算浮點數相除的余數
noi 雙精度 精度 top sca 小數 page con -1 11:計算浮點數相除的余數 查看 提交 統計 提問 總時間限制: 1000ms 內存限制: 65536kB描述 計算兩個雙精度浮點數a和b的相除的余數,a和b都是正數的。這裏余數(r)的定義是:
NOIp模擬3 遊戲
for 新的 += 問題 說明 std 示例 col 輸出格式 試題描述 windy學會了一種遊戲。 對於1到N這N個數字,都有唯一且不同的1到N的數字與之對應。 最開始windy把數字按順序1,2,3,……,N寫一排在紙上。 然後再在這一排
習題3.11 表達式轉換(25 分)浙大版《數據結構(第2版)》題目集
lang == lan 包括 設計程序 不用 運算 出現 加減 算術表達式有前綴表示法、中綴表示法和後綴表示法等形式。日常使用的算術表達式是采用中綴表示法,即二元運算符位於兩個運算數中間。請設計程序將中綴表達式轉換為後綴表達式。 輸入格式: 輸入在一行中給出不含
11.1 LAMP架構介紹11.2 MySQL_MariaDB介紹11.3-11.5 MySQL安裝
mysql安裝11.1 LAMP架構介紹1. LAMP包含:Linux+Apache(httpd)+MySQl+PHPLinux : 操作系統(centos)Apache:httpd——外部服務軟件MySQl:存儲數據軟件(字符串)PHP : 腳本語言(以作網站為主)2. Apache(httpd) , My
九周第四次課(2月26日) 11.1 LAMP架構介紹 11.2 MySQL、MariaDB介紹 11.3/11.4/11.5 MySQL安裝 擴展 mysql5.5源碼編譯安裝
when image safe x86 lease x86_64 roc use my.cnf 11.1 LAMP架構介紹11.2 MySQL、MariaDB介紹11.3/11.4/11.5 MySQL安裝擴展mysql5.5源碼編譯安裝 http://www.amin
CentOS 7 下配置 Nginx + PHP7.1 + MariaDB 以及 Laravel 框架 2018.3.11
service req pac pat 二進制 logs block ip 地址 rom CentOS 7 下配置 Nginx + PHP7.1 + MariaDB 以及 Laravel 框架 阿裏雲服務器的選擇 當然是選擇學生優惠啦。這裏阿裏雲還提供了輕量級服務器這個選項
柯夢嬌:3.11黃金周初反彈1328空,原油謹慎看多
布林 控制 bsp load gpo 排列 依然 繼續 pan 人們往往享受來自順暢的一切,從不挽留或牽掛所有的逆境,真正的成長來自於不斷的嘗試和跪倒,只有摔倒了才明白站起來需要勇氣,只有遇到逆勢的交易才懂得順勢的快感,當你滿懷感恩的面對一切,好運往往隨之而來,不怕被人甩掉
上周熱點回顧(3.5-3.11)
推薦 IT 道德 孵化器 off otn ech 使用 股票 熱點隨筆: · 終於,我也要出一本C#的書了 - 我的寫作歷程與C#書單推薦(風口上的豬)· 我為什麽突然想轉管理?(南塵)· 官方老爹之痛:為什麽蘋果能收到推送,而安
3.11 - 3.12 A day with Google
strong 山東 紀念 ffi 一次 機會 天發 一個 真的 補了一番遊記。 找了一個本科學弟一起去上海遊玩。本來老板還要我周一過去討論寒假閱讀的論文,總算是把討論時間挪到周六了。 興沖沖地買好車票後就開始期待上海Google office的神秘之旅。 update:媽呀
【bzoj4551】【NOIP2016模擬7.11】樹
for noip 給定 getc detail 問題 實現 href 並查集 題目 在2016年,佳媛姐姐剛剛學習了樹,非常開心。現在他想解決這樣一個問題:給定一顆有根樹(根為1),有以下 兩種操作:1. 標記操作:對某個結點打上標記(在最開始,只有結點1有標記,其他結點均
【GDOI2016模擬4.22】總結
ble 走了 一見 打了 再看 很多 這不 學會 由於 前言 早上,一進機房,發現所有人神情嚴肅,一股(\(da\))(\(ba\))場的氣氛迎面撲來,我一下子意識到:nothing good! 這場比賽結果不是很好,50分; 第一題:感覺上是個神奇的匹配問題,但是,由於
11.1 LAMP架構介紹 11.2 MySQL、MariaDB介紹 11.3/11.4/11.5
11.1 LAMP架構介紹 11.2 M11.1 LAMP架構介紹即 Linux Apache MySql PHP的簡寫,即把 Apache MySql PHP安裝在Linux系統上,組成一個環境來運行php語言Apache(httpd)和 PHP是一個整體 (PHP是以一個模塊的形式和Apache