浙江省賽 A B L M 題解

2021-08-19 13:42:48 字數 2627 閱讀 2951

我們教練說5題省賽拿牌有希望,然後acm校隊乙個大佬說至少要到6~7題才能拿銅。。。t_t

我a了四題,我隊友a了五題,他把j題a了,我沒在機房打比賽,所以我們隊就不小心分成倆號交了,我j題沒看懂,後來就沒再寫了。相當於我們隊還是a了五道題,我隊友可是大佬~賊強~哈哈哈~j題抽空補上,那就放一下我ac的四個題的題解:

< a >

題意:在乙個序列裡找乙個絕對峰值,要求在該值以前的序列嚴格遞增,該值以後嚴格遞減。

思路:首先你找的這個值,必須是最大值,然後找到最大值以後,再看他左右兩端的單調性。注意如果該序列本身就類似單調,那不滿足題意,本身類似單調意味著,最大值的位置在首位或末位。

本人ac**:

#include

#include

#include

#include

#include

using namespace std;

typedef long long ll;

const int maxx = 1e5 + 7;

const ll inf = 2e9 + 128;

int cas;

int n;

ll a[maxx];

int main()

}if(pos == 1 || pos == n)

bool *** = 1;

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

}for(int i = n; i > pos; i--)

}if(***) puts("yes");

else puts("no");}}

< b >

題意:給兩段序列,在第乙個序列每個元素上加上乙個實數,使得該序列與第二個序列更相近,即相同位置對應的元素變多,求最多相似個數。

思路:通過這題講一下map的基本操作,所謂map,說白了,就是乙個高階陣列,是乙個帶屬性的陣列,宣告方法為

map mp;

意思是,乙個int型的陣列,它有乙個int屬性叫mp。

所以我就先開了乙個t[ ]陣列,記錄 a[ i ] - b[ i ] 的值,即 t[ i ] = a[ i ] - b[ i ]; 這就記錄了兩個陣列對應元素的差值,哪個值出現最多就選哪個唄~那麼對於-1e9 ~ 1e9的資料,你總不能開個1e18長度的陣列來記錄吧?所以這時候mp屬性就派上用場了,mp[ t[ i ] ]++, 就記錄了每個差值出現了幾次,用個max維護即可,注意要加標頭檔案, 且每次使用先要用mp.clear( )初始化。

本人ac**:

#include

#include

#include

#include

#include

#include

using namespace std;

typedef long long ll;

const int maxx = 1e5 + 7;

int cas;

int n;

int a[maxx];

int b[maxx];

int t[maxx];

map mp;

int main()

printf("%d\n", maxt);}}

< l >

題意:給一堆單詞,每個單詞後面有它的喜愛度,給定要選定的單詞個數num, 要求你選出一串單詞使得它們組成的句子,總喜愛度最高,總喜愛度sum = (t - i +1)*第i個單詞的喜愛度,輸出總喜愛度。如果有相同選法,選字典序最小那個句子輸出。

思路:赤裸裸的結構體快排,不多說,之前講過結構體快排的專項,不懂的戳這裡~

本人ac**:

#include

#include

#include

#include

#include

using namespace std;

typedef long long ll;

const int maxx = 1e5 + 7;

int cas;

int n, t;

struct pp per[maxx];

bool cmp(pp x, pp y)

return x.m > y.m;

}int main()

}return 0;

}< m >

題意:水題,給一串串行,給乙個數,讓該序列每個元素加上該數,看能否被7整除。

思路:直接按題意暴力。

本人ac**:

#include

#include

#include

#include

#include

using namespace std;

typedef long long ll;

const int maxx = 1e5 + 7;

const int inf = 1e9 + 7;

int cas;

int n, m;

int a[maxx];

int main()

if(***) puts("yes");

else puts("no");

}return 0;

}

2015浙江省賽

zoj 3872 beauty of array 對於每個數,計算這個數被累加的次數。找到這個數左邊這個數出現的地方,在這之間的所有數的數量 這個數後面的數的數量,即為這個數被計算的次數 include include typedef long long ll int a 1000005 post ...

2019浙江省賽

題意 n個點的二叉樹 無向邊 的單向邊,構造一條到達且只到達每個點一次的路徑。題解 兩次dfs。第一次dfs為向i 1優先,2i次之。然而,發現某些點有兩條出路,這是由於該點在最底層 有些點沒有達到,這是因為這些點在最後一層或倒數第二層的右下角 第二次dfs時先判斷該點的右子節點是否達到過,如果沒到...

浙江省賽 E題

題意 給你乙個長度為n的陣列每一次只能選陣列中的乙個元素放在第乙個位置。問你至少你移動多少次才能使陣列內的元素不遞減。思路 a陣列為原來的陣列b陣列為排序之後的陣列,從b陣列的最後乙個開始一直往前去匹配a陣列的最後乙個一直往前,匹配上的就是不用移動的 include define maxn 1000...