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 ...