9 10校內訓練

2022-08-05 01:03:13 字數 1408 閱讀 2332

這次的校內訓練有4題,難度適中,成績也不錯.令人詫異的是這次的四題居然都是原題.儘管如此,我還是有比較多的失誤.

第一題原題在洛谷1360,**:

題意大致是給出n個01串(不超過m位,壓成整數)求這些串中最長的子串滿足對於每一位,這個字串每個元素這位是1的個數的和相同.

比如:1110010                       1001

1111001                       1100

1010100  (豎著看從左往右7個整數)中有第3到第6個:1010  每一位1的個數都是2,所以滿足

n<=100000,m<=30

那麼,怎麼解決呢?

憑感覺,我們字首和一下,發現只要每行的某一位和另一位差為乙個定值.進一步,我們考慮每行用和第一行的差距來代替,那麼就等價於每行某一位和另一位相等,也就是找到完全相同的兩列.

要找完全相同的距離最大的兩列,就只要用stl的map或者雜湊一下就好了.

囿於我不會寫map(好好學習stl!)以及懶得打雜湊,**就不打了.考試時交了個暴力居然有70分,吐槽一下資料.

**如下:

#include#includeint n,m,k,a[50002],l=0,r=1000000000,mid=(l+r)/2;

bool check(int x)

int main()

printf("%d",mid-1);

return 0;

}

第三題題意是給定一堆任務,有限時和獎勵,每單位時間只能做乙個任務,求獎勵最大值,據說是原題,反正不管他,比較水.

這題考場上隨腦想了個貪心,就是從後往前掃時間,限時就變成了任務開啟時間,然後直接按獎勵貪心堆維護就好了

**如下:

#include#include#includeint a[100001],b[100001],o[100001],n,j=1;

long long ans;

std::priority_queueh;

bool cmp(int x,int y)

int main()

printf("%lld",ans);

return 0;

}

但是正確效能保證,時間嘛...tle了乙個點,因為stl的pq實在是常數太大啦!我又開始想要不要學stl了...

第四題是裸的mst,直接按照圖跑一遍就好了,而且資料範圍很小,prim堆優化都不用開,kruskal因為邊數太多更是浪費.輕鬆ac

**:

#includeint a[301][301],n,val[301],ans;

int main()

printf("%d",ans);

return 0;

}

這場比賽還算是春風得意吧.才有時間迅速調完寫完博.

20161104校內訓練

一道類似模擬的題,就根據所寫的東西來做就可以了。include define rep i l r for int i l i r i define per i r l for int i r i l i define erep i u for int i head u i i e i nxt usi...

2017 4 14校內訓練

hzwer拿了幾道noi中比較簡單的給我們做 a.noi2009 植物大戰殭屍 思路 考慮最小割,如果乙個植物的權值x是正的,我們先預設吃掉它,使答案加上x並讓s向這個點連x,割這條邊相當於不吃這個植物,否則讓這個點向t連 x,割這條邊相當於吃這個植物,每個植物讓它能攻擊到的格仔和它的前一格向它連i...

2017 4 7校內訓練

喪病hzwer的ctsc訓練賽 my ac 3 4 a.ctsc2014 企鵝qq 思路 亂hash,我比較菜,寫的醜 各種wa tle,好久才a掉。include include using namespace std define ll long long define mn 200 defin...