kmp演算法。
先預處理得到next陣列,若存在迴圈節,即n%(n-ne[n])==0,則最小迴圈節長度為n-ne[n],答案為n/(n-ne[n]);若不存在則輸出1。
#include
#include
#include
using
namespace std;
const
int n=
1e6+10;
char s[n]
;int n,ne[n]
;void
get_ne()
//打表next陣列
}int
main()
return0;
}
直接暴力,注意特判比值為0或1的情況。
#include
#include
#include
using
namespace std;
string a,b;
intcompare
(string s1,string s2)
return mx;
}int
main()
return0;
}
#include
using
namespace std;
char s[12]
;int cnt,ans[4]
,vis[
130]
;//vis陣列開大一點,至少大於128(ascii碼最大是128)
intmain()
if(cnt!=3||
(ans[2]
!=ans[1]
||ans[3]
!=ans[1]
||ans[1]
!=ans[3]
))printf
("no\n");
else
printf
("yes\n");
}return0;
}
#include
using namespace std;
intmain()
return0;
}
a.erase(i,1);表示從第i個位置(初始位置為0)刪除字串a的1個字元,也就是刪除第i個字元。
第乙個引數表示開始刪除字元的位置(這個位置的字元也刪除),第二個引數表示要刪除的長度。
注意刪除之後還要 i-1 回到刪除之前的原來的位置。
#include
using namespace std;
intmain()
printf
("%d %s\n"
,cnt,a.
c_str()
);}return0;
}
#include
using namespace std;
intmain()
2020 2 17 大一寒假訓練十(map)
今天的題目數量較少,但是也能入魂。匹配好對應關係即可。pragma gcc optimize 2 include using namespace std int n,q,num map int,int blq intmain cin q scanf d q int t while q return0...
大一寒假訓練 set
錯誤的刪除操作?上圖的操作會把迭代器刪除!it的指向就空了!於是會出現下圖警示?正確的操作?for it ans.begin it ans.end include using namespace std set int ssr set int iterator it int n,x intmain ...
大一寒假訓練(七)
借鑑二位博主 抱拳 nefu ljw link.nefu wmjlink.problem a 週末舞會 佇列 link.include using namespace std queue int vis1,vis2 intmain return0 problem b 取牌遊戲 佇列 set link...