點此進入比賽
得分:\(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 要加上兩個集合...