【bzoj1857】[Scoi2010]傳送帶
兩條傳送帶AB和CD,在上面移動速度分別為
雋爺說是三分
於是yy了一節數學課的證明。。。
後來發現尼瑪這不是隨便證麼。。。。
先把兩條傳送簡化成一條線段AB和一個點D,線段上速度為
顯然有一個點P使得P在AB上且
那麼原命題就轉化成證明
設
題目中所有的點都是在第一象限,再出於簡化考慮,把整個圖旋轉一下,使得AB平行於X軸,這樣就有y0恆不變,t與
可以有
為了方便,先設
然後把t求個導
其中
那麼
這玩意最多隻有一個零點
所以最開始那玩意就是單峰的了
然後別的情況就從這個最基本的情況擴展出去就好
於是乎在AB,CD上的離開、進入點可以三分搞搞
(以上口胡)
似乎WJMZBMR寫的是退火orz
屬於亂搞。。。?
跪跪跪跪…………
我的程式碼跑的好慢啊TAT
#include <bits/stdc++.h>
typedef double db;
const db eps = 1e-7;
db fsqr(db x) { return x * x ; }
struct point {
db x , y;
point(db x = 0 , db y = 0):x(x) , y(y) { }
friend point operator+(point a , point b)
{ return point(a.x + b.x , a.y + b.y) ; }
friend point operator-(point a , point b)
{ return point(a.x - b.x , a.y - b.y) ; }
friend point operator*(point a , db b)
{ return point(a.x * b , a.y * b) ; }
friend point operator/(point a , db b)
{ return point(a.x / b , a.y / b) ; }
friend db dis(point a , point b)
{ return sqrt(fsqr(a.x - b.x) + fsqr(a.y - b.y)) ; }
}A , B , C , D;
db v1 , v2 , v0;
db find(point D , point A , point B) {
point l = A , r = B ;
while (dis(l , r) > eps) {
point d = (r - l) / 3.0 , m1 = l + d , m2 = r - d;
db r1 = dis(m1 , B) / v2 + dis(m1 , D) / v0 ,
r2 = dis(m2 , B) / v2 + dis(m2 , D) / v0 ;
if (r1 < r2) r = m2 ; else l = m1;
}
return dis(l , B) / v2 + dis(l , D) / v0 ;
}
int main() {
scanf("%lf%lf%lf%lf" , &A.x , &A.y , &B.x , &B.y);
scanf("%lf%lf%lf%lf" , &C.x , &C.y , &D.x , &D.y);
scanf("%lf%lf%lf" , &v1 , &v2 , &v0);
point l = A , r = B;
while (dis(l , r) > eps) {
point d = (r - l) / 3.0 , m1 = l + d , m2 = r - d;
db t1 = dis(m1 , A) / v1 , t2 = dis(m2 , A) / v1;
db r1 = find(m1 , C , D) , r2 = find(m2 , C , D);
r1 += t1 , r2 += t2 ;
if (r1 < r2) r = m2 ; else l = m1 ;
}
printf("%.2lf\n" , find(l , C , D) + dis(l , A) / v1);
return 0;
}
相關推薦
【bzoj1857】[Scoi2010]傳送帶
兩條傳送帶AB和CD,在上面移動速度分別為v1和v2,其他地方移動速度為v0,求A到D的最短時間。 雋爺說是三分 於是yy了一節數學課的證明。。。 後來發現尼瑪這不是隨便證麼。。。。 先把兩條傳
【bzoj1857】傳送帶——三分套三分
div get 最優解 ring cal () spl 分享 cst 我的第一道三分題目。 早上跟著cyc學了一下三分,晚上想練一下手發現沒什麽水題就找到了這一道2333 主要是證明是一個單峰函數,這也是本題最難的部分(網上好多人寫出來但不會證明:)) 證明過程來自yyl
【bzoj1853】[Scoi2010]幸運數字 容斥原理+搜索
輸出 ble std pre urn 數據 統計 號碼 容斥 題目描述 在中國,很多人都把6和8視為是幸運數字!lxhgww也這樣認為,於是他定義自己的“幸運號碼”是十進制表示中只包含數字6和8的那些號碼,比如68,666,888都是“
【bzoj1855】 [Scoi2010]股票交易
推出 不一定 begin aligned all IT fine space for 上一篇blog已經講了單調隊列與單調棧的用法,本篇將講述如何借助單調隊列優化dp。 我先丟一道題:bzoj1855 此題不難想出O(n^4)做法,我們用f[i][j]表示第i天手
【BZOJ】[Scoi2010] 股票交易
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include<algorithm> 6 7 #de
【javaMail】java傳送帶附件郵件
package com.example.mail; import com.sun.mail.util.MailSSLSocketFactory; import javax.activation.DataHandler; import javax.activation.Da
【解題報告】洛谷 P2571 [SCOI2010]傳送帶
【解題報告】洛谷 P2571 [SCOI2010]傳送帶今天無聊,很久沒有做過題目了,但是又不想做什麼太難的題目,所以就用洛谷隨機跳題,跳到了一道題目,感覺好像不是太難。 [CSDN連結](https://blog.csdn.net/Liang_Si_FFF/article/details/84570359
【SCOI2010】【JZOJ4692】傳送帶
Description 在一個2維平面上有兩條傳送帶,每一條傳送帶可以看成是一條線段。兩條傳送帶分別為線段AB和線段CD。FTD在AB上的移動速度為P,在CD上的移動速度為Q,在平面上的移動速度R。現在FTD想從A點走到D點,他想知道最少需要走多長時間。
BZOJ 1857: [Scoi2010]傳送帶【三分】
膜一波PhDPhDPhD大佬啊~~ 三分兩個傳送帶的距離,然後相似算一下座標: #include <cmath> #include <cstdio> #include <cstring> #include <iostr
【洛谷P1641】[SCOI2010]生成字符串
個數 ati es2017 name span thml www 生成 n) 題目描述 lxhgww最近接到了一個生成字符串的任務,任務需要他把n個1和m個0組成字符串,但是任務還要求在組成的字符串中,在任意的前k個字符中,1的個數不能少於0的個數。現在lxhgww想要知道
【線段樹】【P2572】【SCOI2010】序列操作
Description lxhgww最近收到了一個01序列,序列裡面包含了n個數,這些數要麼是0,要麼是1,現在對於這個序列有五種變換操作和詢問操作: 0 a b 把[a, b]區間內的所有數全變成0 1 a b 把[a, b]區間內的所有數全變成1 2 a b 把[a,b]區間內的所有數全部取反,也
三分--bzoj1857: [Scoi2010]傳送帶
傳送門 三分套三分 證明很噁心。。大概就是確定了在ab上走多長 就可以列出一個關於在cd上走的路程關於時間的函式式,然後這個函式是單峰的 相似的,在ab上走的路程關於時間的函式也是單峰的 所以
【Python】傳送帶文字圖片附件的郵件
#coding: utf-8 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage H
【解疑】PostMan 使用Interceptor 傳送帶cookie的請求一直loading
問題 最近要寫一個爬蟲(雖然是第一次寫),於是就用了Chrome上非常方便一個外掛,PostMan,但是由於chrome安全的限制,發不出帶cookie和帶有自定義頭部標籤的請求。 百度一番後得如果想要傳送帶cookie的請求,就需要開啟Interce
Bzoj1857:[Scoi2010]傳送帶:三分
首先由猜測法證得函式具有下凸性QwQ 然後就可以三分辣 #include<cmath> #include<cstdio> #include<cstdlib> #i
【bzoj 1854】[Scoi2010]遊戲 二分圖匹配
http://blog.csdn.net/pbihao/article/details/52835849 額,感覺像是一道題改一下就好了 #include<cstdio> #inclu
[bzoj1854][Scoi2010]遊戲【並查集】【貪心】
【題目描述】Descriptionlxhgww最近迷上了一款遊戲,在遊戲裡,他擁有很多的裝備,每種裝備都有2個屬性,這些屬性的值用[1,10000]之間的數表示。當他使用某種裝備時,他只能使用該裝備的某一個屬性。並且每種裝備最多隻能使用一次。 遊戲進行到最後,lxhgww遇到
【洛谷1640】[SCOI2010]連續攻擊遊戲
題目描述 lxhgww最近迷上了一款遊戲,在遊戲裡,他擁有很多的裝備,每種裝備都有2個屬性,這些屬性的值用[1,10000]之間的數表示。當他使用某種裝備時,他只能使用該裝備的某一個屬性。並且每種裝備最多隻能使用一次。遊戲進行到最後,lxhgww遇到了終極bo
bzoj1857: [Scoi2010]傳送帶
看到這題第一感覺暴力呀233 然後就亂搞水過了(資料太水?) 我的做法是將AB,CD分別等分為512段 這樣AB,CD上各有513個頂點,不妨設AB上的頂點為E,CD上的頂點為F 通過數學容易得到A到D的最短時間移動路徑是AE-EF-FD, 那列舉E在AB上那513個頂點位
[BZOJ1857][Scoi2010]傳送帶(三分套三分+計算幾何)
題目描述 傳送門 題解 感覺一下好像在傳送帶上走的太多或者走得太少時間都不是最優的 實際上答案對走的長短單峰 然後就三分套三分… 注意: ①find中的ans一定要有初始值,防止根本不