HDU 1707

思路:标记课程表上的课程,询问时遍历课程表,再以字典序输出名字。

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<memory.h>
 5 #include<string.h>
 6 #include<algorithm>
 7 #include<cmath>
 8 #include<stack>
 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 info
18 {
19     bool  data[8][12];
20     char name[20];
21 } per[200];
22
23 struct pp
24 {
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"<<endl;
83                 continue;
84             }
85             sort(w,w+countt,cmp);
86             for(int i=0; i<countt; i++)
87             {
88                 if(i)
89                     printf(" ");
90                 printf("%s",w[i].ans);
91             }
92             //printf("%s\n",newname[countt-1]);
93             printf("\n");
94         }
95     }
96     return 0;
97 }

时间: 2024-12-06 22:44:50

HDU 1707的相关文章

HDU 1707 简单模拟 Spring-outing Decision

Spring-outing Decision Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 676    Accepted Submission(s): 220 Problem Description Now is spring ! The sunshine is warm , the flowers is coming out . H

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

HDU 1710 二叉树的遍历 Binary Tree Traversals

Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4330    Accepted Submission(s): 1970 Problem Description A binary tree is a finite set of vertices that is either empty or

HDU 1708 简单dp问题 Fibonacci String

Fibonacci String Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4568    Accepted Submission(s): 1540 Problem Description After little Jim learned Fibonacci Number in the class , he was very int

hdu 2151 Worm (DP)

Worm Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2637    Accepted Submission(s): 1707 Problem Description 自从见识了平安夜苹果的涨价后,Lele就在他家门口水平种了一排苹果树,共有N棵.突然Lele发现在左起第P棵树上(从1开始计数)有一条毛毛虫.为了看到毛毛虫变蝴蝶的过程

Fibonacci String(hdu 1708)

Fibonacci String Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5008    Accepted Submission(s): 1690 Problem Description After little Jim learned Fibonacci Number in the class , he was very int

HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]

题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点对,然后判断最少有多少个坏点. 题解 :求每个点对的LCA,然后根据LCA的深度排序.从LCA最深的点对开始,如果a或者b点已经有点被标记了,那么continue,否者标记(a,b)LCA的子树每个顶点加1. #include<Bits/stdc++.h> using namespace std;

HDU 5542 The Battle of Chibi dp+树状数组

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:给你n个数,求其中上升子序列长度为m的个数 可以考虑用dp[i][j]表示以a[i]结尾的长度为j的上升子序列有多少 裸的dp是o(n2m) 所以需要优化 我们可以发现dp的第3维是找比它小的数,那么就可以用树状数组来找 这样就可以降低复杂度 #include<iostream> #include<cstdio> #include<cstring> #include

hdu 1207 汉诺塔II (DP+递推)

汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4529    Accepted Submission(s): 2231 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往