2016 第七屆福建省大學生程式設計競賽

2021-08-03 22:45:55 字數 1937 閱讀 3014

a.

b. c.

題意:兩人輪流玩卡片,共n*2張,每次隨機抽一張,比較大小,贏了的話加一分勝點,求fat brother的期望勝點。

思路:兩人獲勝的期望是相等的,所以直接n/2就是結果了

#include

#include

using

namespace

std;

const

int n = 2e4+5;

int a[n];

int main()

return

0;}

d.

題意:兩人輪流玩卡片,每人n張,每次隨機抽一張,比較大小,贏了的話加一分勝點,求fat brother的期望勝點。

思路:排序後,每次二分找位置就行了

#include

#include

#include

using

namespace

std;

const

int n = 2e4+5;

int a[n],b[n];

int main()

return

0;}

e.

題意:兩人輪流玩卡片,每人n張,按照棧的特性放置,每次按順序抽一張,比較大小,贏了的話加一分勝點,求fat brother的期望勝點。

思路:直接挨個比大小就行了。

#include

#include

#include

using

namespace

std;

const

int n = 2e4+5;

int a[n],b[n];

int main()

return

0;}

f.

g. 題意:你有長度為n的金子,要將其分成若干塊(整數),使得小於等於n的所有長度都能湊夠(不找零)

思路:

1 2 4 8 16這種的數可以將所有的數覆蓋,這個又分別對應數的二進位制,所以直接看n的二進位制位數就是結果了。

#include

#include

#include

using

namespace

std;

int main()

printf("%d\n",ans);

}return0;}

//1 2 4 8 16

h.

i. j.

題意:讓你在保證原有各點聯通的情況下,求至多可以去掉的邊數

思路:100點數,明顯floyd。

如果有重邊,肯定要去掉;

如果原來直接相連,floyd可以鬆弛掉,原來的邊去掉。

開始以為可以直接用真值floyd,石樂志

#include

#include

#include

#include

using

namespace

std;

const

int inf = 0x3f3f3f3f;

int d[105][105];

bool vis[105][105],v[105][105];

void floyd(int n)

}int main()

floyd(n);

printf("case %d: ",ca);

for(int i = 1;i <= n;i++)

for(int j = i+1;j <= n;j++)

if(v[i][j] && vis[i][j])

ans++;

printf("%d\n",ans);

}return

0;}

第七屆福建省大學生程式設計競賽

b 計算得分的期望 include include include include using namespace std int main return 0 e 直接根據牌的數量來計算,直接拿n 0.5就是答案。include include include define iloveu retur...

第七屆福建省賽RMQ with Shifts

這道題赤裸裸的線段樹,不過就是輸入有點難搞,加上錯的方式很離譜就寫上來了。坑 乙個陣列,求指定區間內的最小值,輸入 query 3,7 代表查詢第3至第7的最小值。shift 2,4,5,7 代表把第2 4 5 7上的數依次向左移動一位。每shift一次就更新線段樹一次 include includ...

第七屆福建省程式設計競賽題解

a.best friend forever b.card game second edition include include include include include using namespace std int a 11111 int b 11111 int main for int ...