2019山東省賽L題題解

2021-09-22 12:48:49 字數 971 閱讀 3892

最後半個小時心態崩掉的時候看到了這個題,只能說兜兜轉轉都是緣分啊,愉快的敲了50行模板交上了

題意:n個數字,給出一些大小關係(給出的關係中沒有等於),對於1<= x <= n,看是否可以構造出乙個序列a使得ax為中位數(n為奇數)

思路:1)只要有環,對於所有1<= x <= n都是不可能滿足題意的

2)考慮中位數的特殊性,中位數意味著一定有n個比它大的,n個比它小的,所以對於1<= x <= n,在給出的關係裡尋找比它大數字的個數(入度)的和比它小的數字的個數(出度),只要兩者都<= 2/n,就說明可以是中位數

思路應該很清晰,不過大部分人可能都會寫拓撲,不過我太菜了,只能敲個簡單的floyd,順便說一下bitset真心好用(推薦大家看一下哦)

複雜度o(n^2)

貼一波**(floyd真短hhh)

#includeusing namespace std;

bitset<110>b[110];

int t,n,m,x,y,in[110],out[110];

bool flag;

int main()

//優化後的floyd

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

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

if(b[j][i]) b[j] |= b[i];

flag = 1;

//判斷是否有環

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

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

if(b[i][j])

out[i]++,in[j]++; //順便記錄一下入度和出度

}if(!flag)

for(int i = 1;i <= n; ++i) printf("0");

else

printf("\n");

}return 0;

}

2019山東省賽C題(c )

原題 題目大意 乙個點 x,y 在座標軸上按如下規則移動 預設最初點為 0,0 輸入 第一行是整數t,有t組樣例 每組樣例中,第一行是整數n m,代表有n個操作,m次執行這n個操作,第二行是字串,是要執行的操作 輸出 對每組樣例,在一行中輸出 x y 的最大值 思路 對一組樣例來說,每次執行的n個操...

2019山東省賽補題

a題 題解 a題注意看清題目每月三十天每週五天很關鍵,因為每月星期幾是固定的。include define ll long long using namespace std const ll nl 1e5 5 ll a nl ll b nl ll c nl int main else if s tu...

2019山東省賽 除了神仙題(G,I,J)

個人認為的難度順序 a 模擬 m 模擬 當n較大的時候 要考慮到1直接輸出 不然會t f 貪心。直接取所有石子的平均數,然後少的從多的補,多的去除 一定能補完,因為取平均數是向下取整 c 直接遍歷第一遍迴圈和最後一遍迴圈上的所有點距離原點的曼哈頓距離,即可。d 博弈,給出無向圖,每次輪著刪除一條邊,...