HHHOJ NOIP模擬賽 玖 解題報告

2022-05-14 14:41:57 字數 2283 閱讀 9601

點此進入比賽

得分:\(100+20+100=220\)(還不錯)

排名:\(rank\ 16\)

\(rating\):\(+20\)

第一眼看完毫無想法。

仔細思考,可以發現乙個性質:只要原數數字之和\(sum\)不能被\(3\)整除,就說明無解

然後就很簡單了,只要使輸出的\(3\)個數數字之和全部為\(\frac3\)即可。

**如下:

#include#define max(x,y) ((x)>(y)?(x):(y))

#define min(x,y) ((x)<(y)?(x):(y))

#define uint unsigned int

#define ll long long

#define ull unsigned long long

#define swap(x,y) (x^=y,y^=x,x^=y)

#define abs(x) ((x)<0?-(x):(x))

#define inf 1e9

#define inc(x,y) ((x+=(y))>=mod&&(x-=mod))

#define ten(x) (((x)<<3)+((x)<<1))

#define n 10000

using namespace std;

int n=0,num[n+5];

class fio

\)表示在編號為\(r\)的珠子右邊有\(v\)個與\(r\)號珠子同色的珠子時,要把\([l,r]\)區間內的珠子消完所需要增加的最少珠子數

則有兩種轉移方式:

**如下:

#include#define max(x,y) ((x)>(y)?(x):(y))

#define min(x,y) ((x)<(y)?(x):(y))

#define uint unsigned int

#define ll long long

#define ull unsigned long long

#define swap(x,y) (x^=y,y^=x,x^=y)

#define abs(x) ((x)<0?-(x):(x))

#define inf 1e9

#define inc(x,y) ((x+=(y))>=mod&&(x-=mod))

#define ten(x) (((x)<<3)+((x)<<1))

#define n 100

#define k 5

#define addballs(y,z) (s[++n]=balls(y,z),lst[n]=end[y],end[y]=n)

#define needball(x) ((x)說實話,這題就是乙個比較簡單的雜湊

考慮題意,其實不難有乙個貪心的想法:每次選取最短的相同的字首和字尾,將其從字串中刪去,並將答案加\(1\)。

關於如何求出最短的相同的字首和字尾,我首先想到的是利用\(kmp\)演算法的\(next\)陣列。

後來發現不行(因為字首是在變化的)。

所以我們要用更靈活的字串匹配方式:字串雜湊

個人感覺得出上面那個結論,這道題就不難了。

具體實現可以看下面的**:

#include#define max(x,y) ((x)>(y)?(x):(y))

#define min(x,y) ((x)<(y)?(x):(y))

#define uint unsigned int

#define ll long long

#define ull unsigned long long

#define swap(x,y) (x^=y,y^=x,x^=y)

#define abs(x) ((x)<0?-(x):(x))

#define inf 1e9

#define inc(x,y) ((x+=(y))>=mod&&(x-=mod))

#define ten(x) (((x)<<3)+((x)<<1))

#define n 1000000

using namespace std;

string st;

class fio

}hashsolver;

int main()

HHHOJ NOIP模擬賽 捌 解題報告

點此進入比賽 得分 30 30 70 130 弱爆了 排名 rank 22 rating 31 比賽時寫數字 dp 寫掛了,最後交了個裸暴力。後來發現寫掛是因為沒考慮借位的情況 好吧,其實數字 dp 也是可以過的,但是,好像有個更簡單的方法。對於每一位,我們可以直接列舉出相加與這一位上數字相等的兩個...

20161026模擬賽解題報告

20161026 模擬賽解題報告 by shenben t1 按照題目說的模擬即可 但這題有乙個神坑 當25 個字母都已經一一對應完畢後,剩下的兩個字母預設對應。所有的逆序對之間都會連邊,求最大獨立點集。表面上是個圖論題,其實是個 liso nlogn 求最長上公升子串行的長度 即可ac t3 第一...

8 25模擬賽解題報告

又爆零了,真開心 又是一道考場想出正解打炸的題。t t 這道題其實很簡單,用字典樹略做處理就好了,幾乎可以做模板題了。因為在trie樹上字首相同的字串一開始經過的一些字元肯定是相同的,所以我們在新增或者刪除操作經過一些節點時,將這個點所對應的集合的 sum 值加一就好了,然後 ans 要加上兩個集合...