大佬帮帮孩子吧,调了一下午都不对qwq
查看原帖
大佬帮帮孩子吧,调了一下午都不对qwq
866521
jijijibeibeibei楼主2023/7/21 17:25
#include<iostream>
#include<vector>
#include<string.h>
using namespace std;
//用一个数组记录不同国籍的人,用两个指针划定同一艘船人的范围,同一艘船上相同国籍的人只记一个,最后再计算时间并统计不同国籍的人数 
int n,begin[100005],end[100005],pan,gj,num,wei,tou,time;
vector<int>a;
bool b[100005];
int main(){
    cin>>n;
    int t[n+1],k[n+1];
    memset(t,0,sizeof(t));
    memset(k,0,sizeof(k));
    for(int i=0;i<n;i++){//n组数据 
    	begin[i]=end[i]=end[i-1];
    	cin>>t[i]>>k[i];
    	for(int j=0;j<k[i];j++){
    		cin>>gj;
    		if(j==0){
    			a.push_back(gj);end[i]++;continue;
			}
			for(int m=begin[i];m<end[i];m++){
				if(a[m]==gj){
					pan=1;break;
				}
			}
			if(pan==0){
				a.push_back(gj);end[i]++;
			}else{
				pan=0;
			}
		}
		if(i==0){//第一艘 
			for(int j=begin[i];j<end[i];j++){//统计不同国籍的人 
				if(b[a[j]]==0){
					num++;b[a[j]]=1;
				} 
			}cout<<num<<endl;num=0;
			memset(b,0,sizeof(b));
		}else{//先判断24小时内有多少船 
			wei=end[i];time=t[i];
			for(int j=i;j>=0;j--){
				if(time-t[j-1]<=86400){
					tou=begin[j-1];
				}else{
					tou=begin[j+1];
					break;
				}
			}
			 for(int j=tou;j<wei;j++){//统计不同国籍的人 
				if(b[a[j]]==0){
					num++;b[a[j]]=1;
				}
			}
			cout<<num<<endl;num=0;memset(b,0,sizeof(b));
		}
	} 
    return 0;
}
2023/7/21 17:25
加载中...