清北合肥day1

2022-05-31 05:48:12 字數 2199 閱讀 5067

題目:

1.給出乙個由0,1組成的環

求最少多少次交換(任意兩個位置)使得0,1靠在一起

n<=1000

2.兩個數列,支援在第乙個數列上區間+1,-1 每次花費為1

求a變成b的最小代價

n<=1e5

3.有n首歌,每首歌每秒有p[i]的機率被破譯(當大於等於t時自動破譯),求期望破譯歌數

題解:

t1t2都是送分題

t1 顯然列舉每個位置作為開頭就可以了

可以字首和優化到o(n)

t2我們從左往右考慮每個元素,發現對於左邊一位的操作是知道的

另外我們會發現乙個點是不可能既有+又有-操作的(很好yy)

於是就可以直接貪心了

t3首先比較容易想到的是f[i][j]表示前i個,用了t時間的概率

然後列舉經過多長時間才到下乙個來轉移

但是這樣是n*t*t的

考慮優化

我們會發現f[i][j]和f[i][j-1]就差了一點

然後通過之間關係來轉移(看**吧太複雜了)

考試的時候沒有注意最後可能未到t時間就用完了(對拍竟然也寫錯了)

然後竟然還有80

另外寫的時候有個細節就是如果上一次是k,但是這一次用時超過t了,我們要歸為上一類

這個概率的計算我們只需要通過所有的-當前還在的來計算就可以了

**:

t1:

#include using

namespace

std;

#define rint register int

#define il inline

#define rep(i,h,t) for (rint i=h;i<=t;i++)

#define dep(i,t,h) for (rint i=t;i>=h;i--)

const

int n=3000

;char

s[n];

intn;

intmain()

int ans=1e9;

rep(i,

1,n)

cout

return0;

}

t2:

#include using

namespace

std;

#define rint register ll

#define il inline

#define rep(i,h,t) for (rint i=h;i<=t;i++)

#define dep(i,t,h) for (rint i=t;i>=h;i--)

#define ll long long

const ll n=2e5;

ll a[n],b[n];

ll ans,n;

intmain()

else

lst=b[i]-a[i];

}cout

return0;

}

t3:

#include using

namespace

std;

#define rint register int

#define il inline

#define rep(i,h,t) for (rint i=h;i<=t;i++)

#define dep(i,t,h) for (rint i=t;i>=h;i--)

intn,t;

int b[6000

];double f[2][5010],a[6000

];int

main()

num+=f[now][t]*i;

if (i==n)

double ans=0

; rep(j,

1,t) ans+=f[now][j];

num+=(jl-ans)*(i-1

); jl=ans-f[now][t];

}printf(

"%.4f

",num);

return0;

}//考試的時候少處理了最後剩餘的狀態

//對拍竟然也沒處理 還有80分

//細節就是從上一層到這一層的時候有可能會有需要超過t才能到達的需要算入上一層

清北考前刷題day1早安

立方數 cubic time limit 1000ms memory limit 128mb 題目描述 lyk定義了乙個數叫 立方數 若乙個數可以被寫作是乙個正整數的3次方,則這個數就是立方數,例如1,8,27就是最小的3個立方數。現在給定乙個數p,lyk想要知道這個數是不是立方數。當然你有可能隨機...

清北暑假模擬day1 生活

數字三角形,要求第k大的值,可以推知,如果得知k的範圍,那麼一定是在上一行可轉移狀態的對應範圍內 反證法可以證明 這個在揹包九講裡也有提及 include include include include using namespace std int n,k,f 110 110 15 z 110 1...

2016國慶清北Day2T1

pa 題目描述 漢諾塔公升級了 現在我們有n個圓盤和n個柱子,每個圓盤大小都不一樣,大的圓盤不能放在小的圓盤上面,n個柱子從左到右排成一排。每次你可以將一 個柱子上的最上面的圓盤移動到右邊或者左邊的柱子上 如果移動之後是合法的 話 現在告訴你初始時的狀態,你希望用最少的步數將第i 大的盤子移動到第i...