description
farmer john新買的乾草打包機的內部結構大概算世界上最混亂的了,它不象普通的機器一樣有明確的內部傳動裝置,而是,n (2 <= n <= 1050)個齒輪互相作用,每個齒輪都可能驅動著多個齒輪。 fj記錄了對於每個齒輪i,記錄了它的3個引數:x_i,y_i表示齒輪中心的位置座標(-5000 <= x_i <= 5000; -5000 <= y_i <= 5000);r_i表示該齒輪的半徑(3 <= r_i <= 800)。驅動齒輪的位置為0,0,並且fj也知道最終的工作齒輪位於x_t,y_t。 驅動齒輪順時針轉動,轉速為10,000轉/小時。你的任務是,確定傳動序列中所有齒輪的轉速。傳動序列的定義為,能量由驅動齒輪傳送到工作齒輪的過程中用到的所有齒輪的集合。對能量傳送無意義的齒輪都應當被忽略。在乙個半徑為rd,轉速為s轉/每小時的齒輪的帶動下,與它相接的半徑為rx的齒輪的轉速將為-s*rd/rx轉/小時。s前的負號的意思是,乙個齒輪帶動的另乙個齒輪的轉向會與它的轉向相反。 fj只對整個傳動序列中所有齒輪速度的絕對值之和感興趣,你的任務也就相應轉化成求這個值。機器中除了驅動齒輪以外的所有齒輪都被另外某個齒輪帶動,並且不會出現2個不同的齒輪帶動同乙個齒輪的情況。 相信你能輕易地寫個程式來完成這些計算:)
input
第1行: 3個用空格隔開的整數:n,x_t,y_t
第2..n+1行: 第i+1描述了齒輪i的位置及半徑:x_i,y_i,以及r_i
output
第1行: 輸出所有在傳動中起到作用的齒輪轉速的絕對值,包括驅動齒輪和 工作齒輪。只需要輸出答案的整數部分
sample input
4 32 54
0 0 10
0 30 20
32 54 20
-40 30 20
機器裡一共有4個齒輪,位於0,0的是半徑為10的驅動齒輪,它帶動了位於
0,30的,半徑為20的某個齒輪。這個齒輪又間接帶動了位於32,54,半徑為20的
工作齒輪,以及乙個位於-40,30,半徑同樣為20的冗餘的齒輪。
sample output
20000
輸出說明:
齒輪 位置 半徑 轉速
1 (0,0) 10 10,000
2 (0,30) 20 -5,000
3 (32,54) 20 5,000
------
齒輪轉速絕對值之和:20,000
簡單bfs題
#includeusingnamespace
std;
#define maxn 1105
struct
wheelc[maxn];
intf[maxn];
intn,first,last;
double
ans,v[maxn];
bool
vis[maxn];
inline
intread()
while(ch>='
0'&&ch<='9')
return x*f;
}inline
int sqr(int
x)inline
int dis(int x,int
y)bool work(int x,int
y)void
bfs()}}
}int
main()
bfs();
for(int i=last;i;i=f[i])ans+=v[i];
printf(
"%d\n
",(int
)ans);
return0;
}
codevs 1615 資料備份
題目描述 description 你在一家it 公司為大型寫字樓或辦公樓 offices 的計算機資料做備份。然而資料備份的工作是枯燥乏味的,因此你想設計乙個系統讓不同的辦公樓彼此 之間互相備份,而你則坐在家中盡享計算機遊戲的樂趣。已知辦公樓都位於同一條街上。你決定給這些辦公樓配對 兩個一組 每 一...
Codevs1615資料備份
思路 方案一 o n k 的dp 只能得部分分。首先我們知道,只選擇相鄰的點構成線段,答案一定不會變差。因為若選擇跨點連線,我們必然可以用其中相鄰點構成的連線代替,且使得權值更小。那麼我們就只考慮相鄰點構成的線段如何選取。我們設dp i j 1 0 前i條線段選了j條線段是否選擇當前線段 包括在j內...
16 1 5 在 F 中宣告事件
16.1.5 在 f 中宣告事件 為了宣告乙個新事件,需要兩件東西。首先,必須建立乙個可以發布的事件值,以便其他斯可以訂閱新建立的事件。這一次,我們需要使用 f 特有的 ievent t 介面,而不是 net 的 iobservable t 我們還需要一種觸發該事件的方法。在 c 中,可以使用方法呼...