這次的校內訓練有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...