BZOJ NOI十連測 第一測 T1

2022-05-09 01:48:10 字數 1445 閱讀 1270

思路:首先考慮t=1的情況,t等於1,那麼所有位置的顏色相同,我們不用考慮概率的問題,那麼,k+d*x在模d下都相等,我們考慮預處理乙個陣列s[i][j],代表d為i,起始位置為j的等差數列的和,這個可以證明,當模小於等於sqrt(n)的時候可以完美解決,時間複雜度為n^1.5,對於d大於sqrt(n)的情況,只需要暴力列舉就可以了。

再考慮t>=2的情況,我們選的顏色一定是顏色數最少的那個,顏色數最少的顏色的期望絕對是最小的,然後,我們分k的左邊和k的右邊進行計算,我們這裡稱呼k+d*x的位置,叫做關鍵位置,假設p[i]為i到k這一段上所有的關鍵位置全部都是同乙個顏色的概率,那麼轉移,就是p[i+k]=p[i]*(x)/(n-1-x),x為最少的顏色個數。我們可以發現,x1 #include2 #include3 #include4 #include5 #include6

intblock,n,m;

7int s[2005][2005],a[200005];8

const

double eps=1e-16;9

intread()

12while ('0'

<=ch&&ch<='9')

13return t*f;14}

15void

init()

24void modify(int x,int

y)30

double deal(int k,int

d)37

void

solve()

44int num=0x7fffffff

,t,k,d;

45 t=read();k=read();d=read();for (int i=1;i<=t;i++)

46if (t==1)

47double ans=(double)a[k],p=1;48

int n=num;

49for (int i=k+d,num=n-1;i<=n&&num>0;i+=d,num--,num--)

53 num=n;p=1;54

for (int i=k-d,num=n-1;i>=1&&num>0;i-=d,num--,num--)

58 printf("

%.4f\n

",ans);59}

60}61int

main()

社團四連測之第一測 Monkey

目錄題目 解題思路 題目描述 有q只猴子要從第一棵樹到第n棵樹去,第i只猴子一次跳躍的最遠距離為ki。如果它在第x棵樹,那它最遠可以跳到第x ki棵樹。如果第j棵樹的高度比第i棵樹高或相等,那麼它從第i棵樹直接跳到第j棵樹,它的勞累值會增加1。所有猴子一開始在第一棵樹,請問每只猴子要跳到第n棵樹花費...

BZOJ 2017省隊十連測推廣賽1

聽學長說有比賽就隨便打一打。a.普通計算姬 題目大意 給出一棵帶權樹,支援一下兩種操作 1.修改乙個點的權值 2.給出l,r,詢問以點l為根的子樹和 點l 1為根的子樹和 點l 2為根的子樹和 點r為根的子樹和的總和。點數 運算元不超過10 5 思路 感覺是三題中最難的。給出的 l,r 區間在樹上沒...

8 25正睿十連測DAY1T3(區間dp)

看上去好像一臉不可做。稍微想一下就能發現是區間dp d p用dp i,j dpi j 表示區間 i j i,j 是否合法 這裡合法的定義為,要麼可以按照題意直接由乙個母串多次插入而來 要麼刪掉一些母串之後剩餘部分正好是原串的字首 那麼我們只要列舉可能的母串即可 母串必須滿足條件le n母 l en總...