【問題描述】
一張長度為�的紙帶, 我們可以從左至右編號為0 − �(紙帶最左端標號為
0)。 現在有�次操作, 每次將紙帶沿著某個位置進行摺疊, 問所有操作之後紙帶
的長度是多少。
【輸入格式】
第一行兩個數字�, �如題意所述。
接下來一行�個整數代表每次摺疊的位置。
【輸出格式】
一行乙個整數代表答案。
【樣例輸入】
5 2
3 5
【樣例輸出】
2 【樣例解釋】
樹上有只鳥。
【資料規模與約定】
對於60%的資料, �, � ≤ 3000。
對於100%的資料, � ≤ 1018, � ≤ 3000。
去年在刷題班的時候就會,但是全忘了,現場推的。。。
還是寫出來了,注意要開 unsigned long long
注意看n辣麼大,m辣麼小,我們肯定要從m上搞點事情。維護乙個l,r表示當前的左右端點。要點有三
0;}看的題解,二分答案,不過前邊的一頓操作猛如虎,沒看懂…….
【問題描述】
�個人坐成一圈, 其中第�個人拿著乙個球。 每次每個人會以一定的概率向
左邊的人和右邊的人傳球。 當所有人都拿到過球之後, 最後乙個拿到球的人即為
勝者。 求第�個人獲勝的概率。(所有人按照編號逆時針坐成一圈)
【輸入格式】
第一行乙個數�代表資料組數。
對於每組資料, 第一行兩個整數�, �如題意所述。
接下來每行乙個實數�代表該人將球傳給右邊的人的概率。
【輸出格式】
對於每組資料, 一行乙個實數代表答案, 保留9位小數。
【樣例輸入】
1 5 1
0.10
0.20
0.30
0.40
0.50
【樣例輸出】
0.007692308
【樣例解釋】
然後鳥是我的。
【資料規模與約定】
對於20%的資料, � ≤ 3。
對於70%的資料, �, � ≤ 100。
對於100%的資料, � ≤ 10000,1 ≤ � ≤ 100。
概率dp,p表示向右傳的概率,q表示向左傳球的概率,可以看做是在合併兩個相鄰的人,合併到最後就好處理了
#include
#include
#include
#include
using namespace std;
#define ldb long double
#define db double
const int maxn = 1000+10;
int t,n,k,pre[maxn],next[maxn];
ldb p[maxn],q[maxn];
void del(int b)
ldb solve()
if(k==n-1)
for(int i=2;i1;++i)
if(i!=k) del(i);
del(k);
return
q[k]
*p[1]+p[k]*q[n-1];
}int main()
fclose(stdin);fclose(stdout);
return
0;}
2017 9 7 騎士 思考記錄
這個題其實乙個月前就想寫了 但當時看到環基樹就嚇跑了 但其實這個題除了環要找出來單獨跑一邊dp 別的就真的沒了 先把環找出來 由於只有乙個環,所以直接dfs 然後對環上的每個點做一遍子樹的dp 然後把環拆下來,列舉第乙個點的狀態 從這個點左邊一直做到這個點右邊 然後就沒了 注意它可能有多個子集 乙個...
RHSCA模擬考試
開始考試 桌面是個黑框子 點選reboot按鈕,破解密碼 開機成功,輸入startx進入圖形介面 不能複製,要在物理機用ssh root 172.25.0.11 遠端連線,就可以複製貼上了 hostname server.reorigion5.example.com 四級網域名稱 有問題 10.配置...
2018 10 9模擬考試
看題請戳我!t1 一道很水的貪心。然而蒟蒻博主一如既往地沒a 維護乙個小根堆,考慮在每次插入元素時 1.若新元素比堆頂小,說明在此時 必然比在堆頂時 更優,因此把新元素直接插入堆中。2.若新元素比堆頂大,說明在此時賣出必然能獲得收益,因此將收益累計入答案中,再把堆頂刪除。同時還要把新元素兩次插入堆中...