20161026模擬賽解題報告

2022-05-03 10:54:28 字數 3138 閱讀 1722

20161026

模擬賽解題報告

by shenben

t1

按照題目說的模擬即可

但這題有乙個神坑:當25

個字母都已經一一對應完畢後,剩下的兩個字母預設對應

所有的逆序對之間都會連邊,求最大獨立點集。

表面上是個圖論題,其實是個

liso

(nlogn

)求最長上公升子串行的長度

即可ac

t3

第一次手賤,用煉表存邊,這是乙個稠密圖啊!!應該用鄰接矩陣啊。

明明可以用

floyed

跑,非要

dfs亂搞。結果

10分。玩砸了吧。

最後只改到了

40分。

網上的題解(沒看懂):

首先這是乙個神奇的圖,叫做競賽圖。大概定義就是每兩點之間都有且僅有一條有向邊,看這題就非常好理解了。

競賽圖有乙個很好的性質:只要存在環,環中點的個數就一定大於等於3個。

證明:根據定義,一元環和二元環顯然不存在。

於是考慮多元環:

我們知道在2與

6之間會有一條邊,如果這條邊從2指向

6,那麼就形成了

1-2-6

三元環,否則我們會發現原本的六元環變成了

6-2-3-4-5

組成的五元環,環變小了

當這個環縮小到四元環時,顯然2與

4之間的連線無論是哪個方向都會形成三元環。

證畢。然後我們的思路就清晰了:找到乙個環,然後按照上述方式即可輸出結果。

找環的方式則可以採用

dfs:

選定乙個

mark[i

]=−1

(沒有被遍歷過

)的點,以它為根向下

dfs,將沿途上的點

mark

值設為1

,若再次訪問則就找到環了。

分)

#include#include

#include

#include

using

namespace

std;

const

int n=1e4+10

;char

s[n],a[n],b[n],f[n];

bool

vis[n];

int q[n>>2],q[n>>2

];int

lena,lenb,lens;

void

go_special()

vis[p]=1

;

for(int i=0;i1]=a[i];

sort(q+1,q+lena+1

);

int cnt=unique(q+1,q+lena+1)-(q+1

);

for(int i=0;i<26;i++) q[i+1]=i+'a'

;

for(int i=1;i<=26;i++) if(q[i]!=q[i])

}int

main()

for(int i=0;i)

else vis[b[i]]=1,f[b[i]]=a[i];

}/*for(int i='a';i<='z';i++)}}

*/int tot=0

;

for(int i='

a';i<='

z';i++) if(f[i]) tot++;

if(tot==25

) go_special();

for(int i=0;iif(!vis[s[i]])

for(int i=0;i) putchar(f[s[i]]);

return0;

}

**(100

分)

#include#include

#include

using

namespace

std;

inline

const

intread()

while(ch>='

0'&&ch<='9')

return x*f;

}const

int n=1e5+10

;int

n,len,a[n],b[n];

intmain()

else

}printf("%d

",len);

return0;

}/*int n,ans,a[n];

vectorp[n];

void deal(int x)

int main()e[n

<<1

];int

n,tot,qi,head[n];

char

mp[n];

int ans[4],sans[4]=;

bool

flag,sflag;

void add(int x,int

y)void

record()

void dfs(int x,int

de)

return

; }

for(int i=head[x];i;i=e[i].next)

}int

main()

}for(int i=1;i<=n;i++) dfs(qi=i,1

);

if(sflag) for(int i=1;i<=3;i++) printf("

%d "

,sans[i]);

else puts("-1"

);

return0;

}

8 25模擬賽解題報告

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

模擬賽 BYVoid魔獸世界模擬賽 解題報告

題目名稱 點選進入相關題解 血色先鋒軍 靈魂分流藥劑 地鐵重組 埃雷薩拉斯尋寶 源檔名 c cpp pas scarlet soultap subway eldrethalas 輸入檔名 scarlet.in soultap.in subway.in eldrethalas.in 輸出檔名 scar...

2018 10 24模擬賽1解題報告

預計得分 100 100 100 300 實際得分 100 20 100 220 開場看t1,發現不會做。比較穩一點的做法要寫ac自動機,然是感覺noip又不會考於是寫了三模數hash。然後看t2 t3,發現t3就是個裸的樹形dp,但是可能要寫好長時間,t2完全沒思路。寫t3花的時間比想象的少很多。...