/*学习古代文章,诗词
醉翁亭记 北宋·欧阳修
环滁皆山也。其西南诸峰,林壑尤美。望之蔚然而深秀者,琅琊也。山行六七里,渐闻水声潺潺,而泻出于两峰之间者,让泉也。峰回路转,有亭翼然临于泉上者,醉翁亭也。作亭者谁?山之僧曰智仙也。名之者谁?太守自谓也。太守与客来饮于此,饮少辄醉,而年又最高,故自号曰醉翁也。醉翁之意不在酒,在乎山水之间也。山水之乐,得之心而寓之酒也。
若夫日出而林霏开,云归而岩穴暝,晦明变化者,山间之朝暮也。野芳发而幽香,佳木秀而繁阴,风霜高洁,水落而石出者,山间之四时也。朝而往,暮而归,四时之景不同,而乐亦无穷也。
至于负者歌于途,行者休于树,前者呼,后者应,伛偻提携,往来而不绝者,滁人游也。临谿而渔,谿深而鱼肥;酿泉为酒,泉香而酒洌;山肴野蔌,杂然而前陈者,太守宴也。宴酣之乐,非丝非竹,射者中,弈者胜,觥筹交错,起坐而喧哗者,众宾欢也;苍颜白发,颓然乎其间者,太守醉也。
已而夕阳在山,人影散乱,太守归而宾客从也。树林阴翳,鸣声上下,游人去而禽鸟乐也。然而禽鸟知山林之乐,而不知人之乐;人知从太守游而乐,而不知太守之乐其乐也。醉能同其乐,醒能述以文者,太守也。太守谓谁?庐陵欧阳修也。
岳阳楼记 北宋·范仲淹
庆历四年春,滕子京谪守巴陵郡。越明年,政通人和,百废具兴,乃重修岳阳楼,增其旧制,刻唐贤今人诗赋于其上;属予作文以记之。
予观夫巴陵胜状,在洞庭一湖。衔远山,吞长江,浩浩汤汤,横无际涯;朝晖夕阴,气象万千;此则岳阳楼之大观也,前人之述备矣。然则北通巫峡,南极潇湘,迁客骚人,多会于此,览物之情,得无异乎?
若夫霪雨霏霏,连月不开;阴风怒号,浊浪排空;日星隐曜,山岳潜形;商旅不行,樯倾楫摧;薄暮冥冥,虎啸猿啼。登斯楼也,则有去国怀乡,忧谗畏讥,满目萧然,感极而悲者矣。
至若春和景明,波澜不惊,上下天光,一碧万顷;沙鸥翔集,锦鳞游泳,岸芷汀兰,郁郁青青。而或长烟一空,皓月千里,浮光跃金,静影沉璧,渔歌互答,此乐何极。登斯楼也,则有心旷神怡,宠辱皆忘,把酒临风,其喜洋洋者矣。
嗟夫!予尝求古仁人之心,或异二者之为,何哉?不以物喜,不以己悲。居庙堂之高,则忧其民;处江湖之远,则忧其君。是进亦忧,退亦忧;然则何时而乐耶?其必曰:“先天下之忧而忧,后天下之乐而乐”欤!噫!微斯人,吾谁与归?
马说 唐·韩愈
世有伯乐,然后有千里马。千里马常有,而伯乐不常有。故虽有名马,祗辱于奴隶人之手,骈死于槽枥之间,不以千里称也。
马之千里者,一食或尽粟一石。食马者不知其能千里而食也。是马也,虽有千里之能,食不饱,力不足,才美不外见,且欲与常马等不可得,安求其能千里也?
策之不以其道,食之不能尽其材,鸣之而不能通其意,执策而临之,曰:“天下无马!”呜呼!其真无马邪?其真不知马也!
*/
//Generated at 2021-01-01 20:58:11 UTC+8
//Created by Alphagocc
#include<bits/stdc++.h>
#ifdef USE_PBDS
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/priority_queue.hpp>
#endif
using namespace std;
#define FI __inline__ __attribute__((always_inline))
#define TN typename
#define TP template
#define S *this
#define C const
class IO{static C int bufSize=1<<18;char inBuf[bufSize],outBuf[bufSize];char*ip1=inBuf,*ip2=inBuf;int ok=1,op1=-1,op2=bufSize-1;
TP<TN T>FI void __RI(T&x){int ch=gc(),neg=1;x=0;for(;!(ch==EOF||isdigit(ch)||ch=='-');ch=gc());if(ch==EOF){ok=0;return;}if(ch=='-')neg=-1,ch=gc();for(;isdigit(ch);ch=gc())x=x*10+(ch-48)*neg;}
TP<TN T>FI void __RC(T&x){unsigned char ch;while(isspace(ch=gc()));if(ch==EOF){ok=0;return;}x=ch;}FI void __RS(string&x){char ch;x.clear();for(ch=gc();isspace(ch);ch=gc());if(ch==EOF){ok=0;return;}for(;!isspace(ch);ch=gc())x.push_back(ch);}
public:
FI int gc(){return ip1==ip2 &&(ip2 =(ip1=inBuf)+fread(inBuf,1,bufSize,stdin),ip1==ip2)?EOF:*ip1++;}
FI IO&R(char&x){__RC(x);return S;}FI IO& R(unsigned char&x){__RC(x);return S;}FI IO&R(string&x){__RS(x);return S;}TP<TN T1,TN T2>FI IO&R(pair<T1,T2>&x){R(x.first),R(x.second);return S;}TP<TN T>FI IO&R(vector<T>&x){for(auto &i:x)R(i);return S;}
TP<TN T,TN...Args>FI IO&RA(T*a,int n){for(int i=0;i<n;++i)R(a[i]);return S;}TP<TN T,TN...Args>FI IO&R(T&x,Args&...args){R(x),R(args...);return S;}
TP<TN T,TN...Args>FI IO&RA(T*a,int n,Args...args){for(int i=0;i<n;++i)RA(a[i],args...);return S;}TP<TN T>FI IO&R(T&x){static_assert(is_integral<T>::value,"Unsupported types");if(is_integral<T>::value)__RI(x);return S;}
private:
char space=' ';TP<TN T>FI void __WI(T x){static char buf[64];static int len=-1;if(x>=0){do{buf[++len]=x%10+48,x/=10;}while(x);}else{pc('-');do{buf[++len]=-(x%10)+48,x/=10;}while(x);}while(len>=0){pc(buf[len]),--len;}}
public:
FI void pc(C char&x){if(op1==op2)flush();outBuf[++op1]=x;}
FI void flush(){fwrite(outBuf,1,op1+1,stdout),op1=-1;}FI IO&W(C char&x){pc(x);return S;}FI IO&W(C char*x){while(*x!='\0')pc(*(x++));return S;}FI IO&W(C string&x){W(x.c_str());return S;}
TP<TN T>FI IO&W(C vector<T>&x){for(auto&i:x)WS(i);WL();return S;}FI IO&WL(){W('\n');return S;}TP<TN T1,TN T2>FI IO&W(C pair<T1,T2>&x){WS(x.first),W(x.second);return S;}
TP<TN T>FI IO&WL(C T&x){W(x),W('\n');return S;}FI IO&WS(){W(space);return S;}TP<TN T>FI IO&WS(C T&x){W(x),W(space);return S;}
TP<TN T>FI IO&WA(T* a,int n){for(int i=0;i<n;i++)WS(a[i]);WL();return S;}TP<TN T,TN...Args>FI IO&W(C T&x,C Args&...args){W(x),W(space),W(args...);return S;}TP<TN...Args>FI IO&WS(C Args&...args){W(args...),W(space);return S;}
TP<TN...Args>FI IO&WL(C Args&...args){W(args...),W('\n');return S;}TP<TN T,TN...Args>FI IO&WA(T* a,int n,Args...args){for(int i=0;i<n;i++)WA(a[i],args...);return S;}
TP<TN T>FI IO&W(C T&x){static_assert(is_integral<T>::value,"Unsupported types");if(is_integral<T>::value)__WI(x);return S;}
TP<TN T>FI IO&operator>>(T&x){R(x);return S;}TP<TN T>FI IO&operator<<(C T&x){W(x);return S;}bool good(){return ok;}IO(){}~IO(){flush();}}io;
#undef TN
#undef TP
#undef FI
#undef S
#undef C
#define REP(i,x,y)for(int i=x;i<y;i++)
#define ALL(x)x.begin(),x.end()
const int32_t INF=0x3f3f3f3f;
const int64_t INFL=0x3f3f3f3f3f3f3f3fLL;
void genSA(string s, vector<int> &sa, vector<int> &rank)
{
int n = s.size();
sa.resize(n + 1);
iota(ALL(sa), 0);
rank.assign(ALL(s));
rank.emplace_back(-1);
vector<int> tmp(n + 1);
for (int k = 1; k <= n; k <<= 1) {
auto cmpSA = [&](const int &i, const int &j) {
return rank[i] != rank[j] ? rank[i] < rank[j]
: ((i + k <= n ? rank[i + k] : -1)
< (j + k <= n ? rank[j + k] : -1));
;
};
sort(ALL(sa), cmpSA);
tmp[sa[0]] = 0;
for (int i = 0; i < n; i++) {
tmp[sa[i + 1]] = tmp[sa[i]] + (cmpSA(sa[i], sa[i + 1]) ? 1 : 0);
}
rank = tmp;
}
}
void genLCP(string s, const vector<int> &sa, vector<int> &lcp)
{
int n = s.size();
vector<int> rank(n + 1);
for (int i = 0; i <= n; i++) rank[sa[i]] = i;
int h = 0;
lcp.resize(n + 1);
lcp[0] = 0;
for (int i = 0; i < n; i++) {
int j = sa[rank[i] - 1];
h > 0 && h--;
for (; j + h < n && i + h < n; h++) {
if (s[j + h] != s[i + h]) break;
}
lcp[rank[i] - 1] = h;
}
}
int main()
{
string s;
io >> s;
vector<int> sa, rank, lcp;
genSA(s, sa, rank);
genLCP(s, sa, lcp);
int n = s.size();
for (int i = 0; i < n; i++) { io.WS(sa[i + 1] + 1); }
io.WL();
for (int i = 0; i < n - 1; i++) { io.WS(lcp[i + 1]); }
io.WL();
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Subtask #1 Testcase #1 | 37.83 us | 44 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #2 | 37.9 us | 44 KB | Accepted | Score: 100 | 显示更多 |
| Subtask #1 Testcase #3 | 36.46 us | 44 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #4 | 39.83 us | 44 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #5 | 37.8 us | 44 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #6 | 39.52 us | 44 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #7 | 57.653 ms | 2 MB + 904 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #8 | 71.561 ms | 3 MB + 68 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #9 | 60.463 ms | 2 MB + 960 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #10 | 35.121 ms | 2 MB + 52 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #11 | 35.321 ms | 2 MB + 92 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #12 | 63.176 ms | 3 MB + 260 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #13 | 60.783 ms | 3 MB + 232 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #14 | 59.644 ms | 2 MB + 988 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #15 | 60.92 ms | 2 MB + 1004 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #16 | 62.358 ms | 3 MB + 264 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #17 | 64.131 ms | 3 MB + 264 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #18 | 63.327 ms | 3 MB + 264 KB | Accepted | Score: 0 | 显示更多 |