1. 程式人生 > >jzoj4383 [GDOI2016模擬3.11]小行星 二分+prim

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