思路:标记课程表上的课程,询问时遍历课程表,再以字典序输出名字。
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 const int MAXX= 50000;10 const int mod=1e9+7;11 using namespace std;12 typedef long long ll;13 int T;14 int n;15 int q;16 int k;17 struct info18 {19 bool data[8][12];20 char name[20];21 } per[200];22 23 struct pp24 {25 char ans[21];26 } w[210];27 28 bool cmp(pp a,pp b)29 {30 return strcmp(a.ans,b.ans)<0;31 }32 33 int main()34 {35 freopen("in.txt","r",stdin);36 scanf("%d",&T);37 while(T--)38 {39 scanf("%d",&n);40 memset(per,0,sizeof(per));41 for(int i=1; i<=n; i++)42 {43 int d,b,e;44 scanf("%s%d",per[i].name,&k);45 for(int j=1; j<=k; j++)46 {47 scanf("%d%d%d",&d,&b,&e);48 while(b<=e)49 {50 per[i].data[d][b]=1;51 b++;52 }53 //memset(per[i].data[d]+b,1,(e-b+1)*sizeof(per[i].data[0][0]));54 }55 }56 scanf("%d",&q);57 while(q--)58 {59 int d,b,e;60 scanf("%d%d%d",&d,&b,&e);61 //char newname[200][22];62 int countt=0;63 for(int i=1; i<=n; i++)64 {65 bool flag=1;66 for(int j=b; j<=e; j++)67 {68 if(per[i].data[d][j])69 {70 flag=0;71 break;72 }73 }74 if(!flag)75 {76 strcpy(w[countt].ans,per[i].name);77 countt++;78 }79 }80 if(countt==0)81 {82 cout<<"None"<