1 #include <iostream>
2 #include <algorithm>
3 #include <string.h>
4 #include <stdio.h>
5 using namespace std;
6 /*
7 题目:统计同成绩学生人数
8 用时:
9 思路:hash数组统计
10
11 */
12
13
14 int main()
15 {
16 int n;
17 int hs[101]={0};
18 int grade ;
19 int x;
20 while (scanf("%d",&n)!=EOF && n!=0)
21 {
22 for (int i=0;i<n;i++)
23 {
24 cin >> grade ;
25 hs[grade]++;
26 }
27 cin >> x;
28 cout<<hs[x]<<endl;
29 }
30
31 return 0;
32 }
1 #include <iostream>
2 #include <algorithm>
3 #include <string.h>
4 #include <stdio.h>
5 using namespace std;
6 /*
7 题目:Sort
8 用时:* tomato
9 思路:hash数组统计
10 1.排序:N属于[0,1000000],O(nlogn)的快排也会使时间复杂度达到千万级以上
11 2.输入的数字属于[-500000,500000]的区间,创建数组a,把数字对应序号存进去,
12 时间复杂度则为遍历一边整个100万级的数组而已
13
14 */
15 int a[1000001]={0};
16
17 int main()
18 {
19 int n,m;
20 int num;
21 while (scanf("%d %d",&n,&m)!=EOF)
22 {
23 for (int i=0;i<n;i++)
24 {
25 cin>>num;
26 a[num+500000] ++;
27 }
28 int i = 1000000;
29 while (i-- && m>0)
30 {
31 if (a[i])
32 {
33 m--;
34 cout<<i-500000<<\' \';
35 }
36 }
37 }
38 return 0;
39 }
1 #include <iostream>
2 #include <algorithm>
3 #include <string.h>
4 #include <stdio.h>
5 using namespace std;
6 /*
7 题目:谁是你的潜在朋友
8 用时:* tomato
9 思路:hash数组统计 书的编号是1-200
10 但是需要根据学生的编号和书号决定他的潜在朋友个数,
11 通过一个数组stu解决此问题,
12 因为N是动态输入,我们可以用malloc动态分配
13
14
15 */
16
17
18 int main()
19 {
20 int n,m,num;
21 int book[201]={0};
22 int *stu ;
23 while (scanf("%d %d",&n,&m)!=EOF)
24 {
25 stu = (int *)malloc(n*sizeof(int));
26 for (int i=0;i<n;i++)
27 {
28 cin >> num ;
29 book[num] ++ ;
30 stu[i]=num;
31 }
32 for (int i=0;i<n;i++)
33 {
34 if (book[stu[i]]>1)
35 cout <<book[stu[i]]-1<<endl;
36 else
37 cout<<"BeiJu"<<endl;
38 }
39
40
41 }
42
43 return 0;
44 }
1 #include <iostream>
2 #include <algorithm>
3 #include <string.h>
4 #include <stdio.h>
5 using namespace std;
6 /*
7 题目:剩下的树
8 用时:* tomato
9 思路:hash数组统计
10
11
12 */
13
14 int road[10001]={0};
15 int main()
16 {
17
18 int l;// 1<= l <=10000
19 int m ;//1 <= m <= 100
20 int i,j;
21 int left,right;
22 int c=0;
23 for (i=0;i<10001;i++)
24 road[i]=1;
25 while (scanf("%d %d",&l,&m)!=EOF)
26 {
27 for (i=0;i<m;i++)
28 {
29 cin >>left >> right;
30 for (j=left;j<right+1;j++)
31 {
32 if (road[j]>0)
33 road[j]--; // 有树才需要砍树
34 }
35
36 }
37 for (i=0;i<=l;i++)
38 if (road[i]>0)
39 c++;
40 cout << c <<endl;
41
42 }
43 return 0;
44 }