第 210 场周赛

100 / 4006 xu-ri-dong-sheng-f  18 1:19:04

lt的题比较简单,但是他这个函数提交太难调试了,大部分时间花在这里

5535. 括号的最大嵌套深度

循环搞一搞就行

class Solution {
public:
    int maxDepth(string s) {
        int n =s.length();
        int ans=0,mx=0;
        for(int i=0;i

5536. 最大网络秩

枚举两个点,搞一搞就行

class Solution {
public:
    int head[10000+7],cnt=1;
    void init(int n){cnt=1;for(int i=0;i<=n;i++)head[i]=0;}
    struct EDGE{int to,nxt,w;}ee[10000*2+7];
    void add(int x,int y,int w){ee[++cnt].nxt=head[x],ee[cnt].w=w,ee[cnt].to=y,head[x]=cnt;}
    int maximalNetworkRank(int n, vector>& roads) {
        for(int i=0;itp;
                int ans=0; 
                for(int k=head[i];k;k=ee[k].nxt)
                	ee[k].w=ee[k^1].w=1,tp.push_back(k),ans++;
                //cout<class Solution {
public:
    bool checkPalindromeFormation(string a, string b) {
    	int na=a.length(),nb=b.length();
		bool f=true;
		for(int i=0;ir
			for(int j=i;j<=r;j++){
				if(a[j]!=a[na-j-1])fa=false;
				if(b[j]!=b[na-j-1])fb=false;
			}
			break;
		}
		if(fa||fb)return true;
		fa=fb=true;
		for(int i=0;ir
			for(int j=i;j<=r;j++){
				if(a[j]!=a[na-j-1])fa=false;
				if(b[j]!=b[na-j-1])fb=false;
			}
			break;
		}
		if(fa||fb)return true;
		return false;
    }
};

5538. 统计子树中城市之间最大距离

枚举子集,然后求直径就行。。


class Solution {
public:
    

    
int head[16],cnt=1;
struct EDGE{int to,nxt,w;}ee[16*2+7];
void add(int x,int y,int w){ee[++cnt].nxt=head[x],ee[cnt].w=w,ee[cnt].to=y,head[x]=cnt;}

int ans[16],vs[16];
int nm,mx,p;
void dfs(int x,int fa,int dis){
	nm++;
//	cout<mx)mx=dis,p=x;
	for(int i=head[x];i;i=ee[i].nxt){
		int y=ee[i].to;
		if(!vs[y]||y==fa)continue;//y没被选中
		dfs(y,x,dis+1); 
	}
}
vector countSubgraphsForEachDiameter(int n, vector>& edges) {
	for(int i=0;i>(i-1)&1)vs[i]=1,rt=i,tm++;
		mx=nm=p=0;
		dfs(rt,0,0);
		int q=p;
		if(nm!=tm)continue;//不是一个子集 
		mx=nm=0;
		dfs(p,0,0);
	//	cout<pr;
	for(int i=1;i