2022 2 13校內模擬賽題解報告

2022-09-21 15:00:12 字數 1637 閱讀 4183

思路:既然每個壓縮的串必須比原先的短,還要相同串壓縮必須相同,自然想到 stl 的 map 容器,對映一下即可,如何壓縮串?考完聽 ghc 講他的 dfs 感覺太複雜了,為什麼不直接隨機呢,每次 rand%26+97 即可,題目保證有解也就是不可能原串長為 1,則每次rand的次數是 len-1,比較奇怪的是每次 %26+97 char 出來的數可能不是 a~z 中的字母,需要 while 一下直到是字母為止。

/*work by : dreamcatcher

knowledge : 神仙演算法

複雜度 : o(過不了)

*/#include#include#include#include#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

const int n=2005;

int read()

void print(int x)

int n;

string s[n];

mapmap;

signed main()

map[s[i]]=sss;

}for(int i=1;i<=n;i++) cout《怎麼說,考試的時候有思路,奈何碼力太差,寫不出來,於是就只判了一種情況,得了50pts。後來翻了翻學長的提交記錄,發現 lps 的思路和我的一模一樣,於是學習了一下。

主要思路如下:題目中描述的是一棵樹,只不過被人多加了一筆,有環了或者有個點的入度等於2了,做法很簡單,就是反向建邊,為什麼反向建邊?假設乙個點的入度為2,通過鄰接表是無法找到是哪條邊連過來的,但是反著建邊就可以,我們只需要縮點之後找到環的位置,遍歷環中的每個點找到最大的編號。如果無環肯定有點入度為2,輸出較大的編號即可。

/*work by : dreamcatcher

knowledge : 神仙演算法

time : o(過不了)

*/#include#include#include#include#include#include#include#includeusing namespace std;

const int inf=0x7fffffff;

const int mod=114514;

const int n=1e6+7;

int read()

void print(int x)

int n,outd[n];

int head[n],cnt;struct nodee[n];

void add_edge(int u,int v,int id);head[u]=cnt;}

bool vis[n];

int dfn[n],low[n],tot,t,num[n],stc[n],sc,size[n];

vectorg[n];

void tarjan(int u)

if(low[u]==dfn[u])

}}signed main() int pos=inf;

for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i);

for(int i=1;i<=t;i++) if(size[i]>=2)

if(pos^inf){int ans=0;

for(int i=0;i毒品題,以後再說。

2020藍橋杯校內模擬賽題解

第二題 問題描述 在1至2019中,有多少個數的數字中包含數字9?注意,有的數中的數字包含多個9,這個數隻算一次。例如,1999這個數包含數字9,在計算只是算乙個數。include using namespace std intmain cout count endl cout ending.end...

2023年藍橋杯校內模擬賽題解

1200000有多少個約數 只計算正約數 include int main printf d n count return 0 在計算機儲存中,15.125gb是多少mb?include int main 在1至2019中,有多少個數的數字中包含數字9?注意,有的數中的數字中包含多個9,這個數隻算一...

2018 10 12 校內模擬賽

分析 題一 一道模擬題 但模擬也是有很多坑的 寫出一道題後,一定要自己試很多很多很多組不同的資料 比如這道題,幾乎我試的每一組資料都找出了我程式的bug,好險 分析 題二 好題!應該是和松鼠聚會這道題本質一樣的 首先我們需要推導出任意兩個點 x,y a,b 之間能夠到達彼此所需要走的最短步數,由於可...