乱搞做法求助
查看原帖
乱搞做法求助
128388
星之哀伤楼主2023/11/2 14:57

在没想到正解的情况下还搞了70分。。

有大佬看看错在哪了吗

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int n,m;
int sum=1,sun=0;
int maxn=-1;
struct node{
	int qi;
	int zhong;
	int che[1001];
}b[1001];
bool p[1001];
int main(){
	freopen("P1983_6.in","r",stdin);
	cin>>n>>m;
	for(int a1,i=1;i<=m;i++){
		cin>>a1;
		for(int op,j=1;j<=a1;j++){
			cin>>op;
			if(j==1) b[i].qi=b[i].che[op]=op;
			if(j==a1) b[i].zhong=b[i].che[op]=op;
			b[i].che[op]=op;
		}
	}
	for(int i=1;i<=m;i++){
	bool lp=0;
		for(int j=b[i].qi;j<=b[i].zhong;j++){
			if(lp==1){
				maxn=max(maxn,a[j]);//要升多少级 
				if(j==b[i].zhong){
			   sum++;//升级次数 
				for(int j=b[i].qi;j<=b[i].zhong;j++) if(b[i].che[j]!=0){
					a[b[i].che[j]]=maxn+1;
				}
				maxn=-1;
				}
			} 
			if(a[j]>=a[b[i].qi]&&b[i].che[j]==0){	//有升级需要 
				lp=1;				
			}
		}
	}
    cout<<sum;
}
2023/11/2 14:57
加载中...