牛客编程巅峰赛S2赛季第5场代码
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 返回符合题意的最长的子串长度 * @param x string字符串 * @return int整型 */ int Maximumlength(string x) { // write code here int ans=0,ln=-1,lp=-1,ly=-1,l=x.length(),te; for(int i = 0; i < l; ++i){ if (x[i]=='n') ln=i; if (x[i]=='p') lp=i; if (x[i]=='y') ly=i; te=i-min(ln,min(lp,ly)); if (te>ans) ans=te; } return ans; } };
B 牛牛与后缀表达式
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 给定一个后缀表达式,返回它的结果 * @param str string字符串 * @return long长整型 */ long long d[1100000]; char c[1100000]; int dt,ct; long long solve(string s) { // write code here int l=s.length(); long long num=0; dt=ct=0; for(int i = 0; i < l; ++i){ if (s[i]>='0'&&s[i]<='9'){ num=num*10+(s[i]-'0'); continue; } if (s[i]=='#'){ d[++dt]=num; num=0; continue; } if (s[i]=='+'){ d[dt-1]+=d[dt]; --dt; }else if (s[i]=='-'){ d[dt-1]-=d[dt]; --dt; }else{ d[dt-1]*=d[dt]; --dt; } } return d[1]; } };C Tree III
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param e int整型vector 长度为n-1的数组,表示结点2到结点n的父结点 * @return int整型 */ int n,ma,num,f[110000][2]; vector<int> v[110000]; void upd(int x){ if (x>ma){ ma=x; num=1; }else if (x==ma){ num++; } } void dfs(int x,int fa){ f[x][0]=0;f[x][1]=-n*2; for(int y:v[x]) if (y!=fa){ dfs(y,x); int te=f[y][0]+1; if (te>f[x][0]){ f[x][1]=f[x][0]; f[x][0]=te; }else if (te>f[x][1]) f[x][1]=te; te=f[y][1]+1; if (te>f[x][0]){ f[x][1]=f[x][0]; f[x][0]=te; }else if (te>f[x][1]) f[x][1]=te; } upd(f[x][0]); upd(f[x][1]); int sm1=-1,sm2=-1; for(int y:v[x]) if (y!=fa){ if (sm1==-1){ sm1=f[y][0]; sm2=f[y][1]; continue; } upd(f[y][0]+sm1+2); upd(f[y][0]+sm2+2); upd(f[y][1]+sm1+2); upd(f[y][1]+sm2+2); if (f[y][0]>sm1){ sm2=sm1; sm1=f[y][0]; }else if (f[y][0]>sm2) sm2=f[y][0]; if (f[y][1]>sm1){ sm2=sm1; sm1=f[y][1]; }else if (f[y][1]>sm2) sm2=f[y][1]; } } int tree3(vector<int>& e) { // write code here ma=0;num=1; n=e.size()+1; for(int i=1;i<=n;++i) v[i].clear(); for(int i=2;i<=n;++i){ v[e[i-2]].push_back(i); } dfs(1,0); if (num==1) return ma-1;else return ma; } };