资讯详情

2022暑初二信息竞赛学习成果分享2

学习目录2

  • 第二期 (2022/07/17~2022/07/23)
    • Day 7:复习&测试——**树状数组**
      • `Morning`——树状数组复习测试
        • 考试游记
        • 题目总结
          • [T83. Count](http://222.180.160.110:1024/contest/2713/problem/1)
          • 理解与感悟
          • [T84. Friend](http://222.180.160.110:1024/contest/2713/problem/2)
          • 理解与感悟
          • [T85. Self-Number](http://222.180.160.110:1024/contest/2713/problem/3)
          • 理解与感悟
          • [T86. 简单题](http://222.180.160.110:1024/contest/2713/problem/4)
      • `Afternoon`——推广小组题目练习
    • Day 8:新知——**哈希`Hash`表**
      • `Morning`——哈希`Hash`表新课学习
        • 学习笔记
          • 一、Hash函数
          • 二、哈希表
          • 三、冲突
          • 四、Hash函数结构方法
          • 五、处理冲突的方法
      • `Morning & Afternoon`——哈希`Hash`表题目练习
        • [T99. 三个朋友](http://222.180.160.110:1024/contest/2650/problem/8)
        • 理解与感悟
    • Day 9:复习&测试——**Hash表**
      • `Morning`——Hash表复习测试
        • 考试游记
        • 题目总结
          • [T104. 子串查找](http://222.180.160.110:1024/contest/2724/problem/1)
          • 理解与感悟
          • [T105. friends](http://222.180.160.110:1024/contest/2724/problem/2)
          • 理解与感悟
          • [T106. Match](http://222.180.160.110:1024/contest/2724/problem/3)
          • 理解与感悟
    • Day 10:新知——**概念、结构和遍历**
      • `Morning`——新课程的概念、结构和学习
        • 学习笔记
          • 一、定义
          • 二、种类
          • 三、无向图术语
          • 四、有向图的术语
          • 五、图表示
          • 六、图的遍历
      • `Morning & Afternoon`——图片的概念、结构和遍历练习
        • [T113. 树的存储](http://222.180.160.110:1024/contest/2668/problem/1)
        • 理解与感悟
    • Day 11:新知——**最短路**
      • `Morning`——最短路新课学习(1)
        • 学习笔记
          • 一、概念
          • 二、`Floyd`算法
          • 三、`Dijkstra`算法
    • Day 12:新知——**最短路**
      • `Morning`——最短路新课学习(2)
        • 学习笔记
          • 四、`Bellman-Ford`算法
          • 五、`SPFA`算法
  • 第三期 (2022/07/25~2022/07/30)
    • Day 13:复习&测试——**最短路**
      • `Morning`——最短路复习测试
        • 考试游记
        • 题目总结
          • [T154. 最短路上的统计](http://222.180.160.110:1024/contest/2755/problem/1)
          • 理解与感悟
          • [T155. ことりのおやつ](http://222.180.160.110:1024/contest/2755/problem/2)
          • 理解与感悟
          • [T156. 新年好](http://222.180.160.110:1024/contest/2755/problem/3)
          • 理解与感悟
          • [T157. 算法导论](http://222.180.160.110:1024/contest/2755/problem/4)
          • 理解与感悟
    • Day 14:新知——**最小生成树**
      • `Morning`——最小生成树新课学习(1)
        • 学习笔记
          • 一、最小生成树
          • 二、`Prim`算法
          • 三、`Kruskal`算法
    • Day 15:复习&测试——**最小生成树**
      • `Morning`——最小生成树复习测试
      • 考试“游记”
      • 题目总结
        • 考试T1. 新的开始
        • 理解与感悟
        • 考试T2. 最小花费
        • 理解与感悟
        • 考试T3. 最小花费
        • 理解与感悟

上一篇 这一篇 下一篇
2022暑初二信息竞赛学习成果分享1 2022暑初二信息竞赛学习成果分享2

第二期 (2022/07/17~2022/07/23)

Day 7:复习&测试——

Morning——树状数组复习测试

考试“游记”

拿到题目,第一题太la了(这套题他还真是xun啊)

8:25开考。

看了眼第一题,我直接感慨:这是给小升初的做的吗,太水了。10 min, 8:35

第二题,乍一看,不就是一个筛质数的裸题吗?!看我用那珍藏已久的,搞定这道water题! 15 min, 8:40

第三题题面好长,对于我一个急性子来说,直接放弃!思考了15 min8:55

第四题不就是一个瞎子都能看出来的树状数组题吗!轻轻松松! 15 min, 9:10

第五题,这什么题!四不像——一不像区间DP,二不像暴力枚举,三不像树状数组,四不像贪心…思考了很久! 55 min, 10:05

又回头看第三题,直接用一个,找出来,对了样例。15 min, 10:20

最后再看第五题,也没有其他办法,直接,调了一会儿,时间又匆匆而过。40 min, 11:00

最后25 min,我似乎不再抱有任何希望了,直接touch fish

11:25 收卷。

测评开始… 结果如下。

选手 A B C D E 总分
C2024XSC249 AC 100 AC 100 WA 20 TLE 80 TLE 40 340/500

通过这次第四题的失败,我终于明白:一定要打

话说,快读快写怎么打的?

int read () { 
        
	int f = -1, x = 0;//f表示符号,x表示绝对值
	char ch = getchar ();
	if (ch == '-') { 
        //判断负号
		f = -1;
	} else { 
        
		x = ch - '0';
	}
	while (1) { 
        
		ch = getchar ();
		if (ch >= '0' && ch <= '9') { 
        //正在输入数字
			x = 10 * x + ch - '0';
		} else { 
        
			break;
		}
	}
	return f * x;//正负性*绝对值
}

void write (int x) { 
        
	if (x == '-') { 
        //处理负号
		putchar ('-');
		x = -x;
	}
	if (x >= 10) { 
        //大于10,递归输出十位及以上数位
		write (x / 10);
	}
	putchar (x % 10 + '0');
}

题目总结

T83. Count

某次科研调查时得到了 n n n个自然数,每个数均不超过 1500000000 1500000000 1500000000( 1.5 × 1 0 9 1.5 \times 10^9 1.5×109)。已知不相同的数不超过 10000 10000 10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

输入包含 n + 1 n+1 n+1行;第一行是整数 n n n,表示自然数的个数;第 2 2 2~ n + 1 n+1 n+1每行一个自然数。

输出包含 m m m行( m m m为 n n n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

样例输入

8
2
4
2
4
5
100
2
100

样例输出

2 3
4 2
5 1
100 2

40 % 40\% 40%的数据满足: 1 ≤ n ≤ 1000 1 \le n \le 1000 1≤n≤1000

80 % 80\% 80%的数据满足: 1 ≤ n ≤ 50000 1 \le n \le 50000 1≤n≤50000

100 % 100\% 100%的数据满足: 1 ≤ n ≤ 200000 1 \le n \le 200000 1≤n≤200000

理解与感悟

简单的语法题。

先输入,再排序,最后统计。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAXN = 2e5 + 5;
int n, a[MAXN], cnt = 1;

int main () { 
        
// freopen ("count.in", "r", stdin);
// freopen ("count.out", "w", stdout);
	scanf ("%d", &n);
	for (int i = 1; i <= n; i ++) { 
        
		scanf ("%d", &a[i]);//输入
	}
	sort (a + 1, a + n + 1);//排序
	for (int i = 1; i <= n; i ++) { 
        
		if (a[i + 1] == a[i]) { 
        
			cnt ++;//统计并输出
		} else { 
        
			printf ("%d %d\n", a[i], cnt);
			cnt = 1;
		}
	}
	return 0;
}
T84. Friend

新年快到了,“神仙协会”准备搞一个聚会,已经知道现有会员 N N N人,把会员从 1 1 1到 N N N编号,已知凡是和会长是老朋友的,那么该会员的号码肯定只能被自己的号码和 1 1 1整除,否则都是会长新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。

输入数据仅一个数 N N N,表示会员人数。

输出新朋友的人数。

样例输入

7

样例输出

3

30 % 30\% 30%的数据满足: 1 ≤ n ≤ 10000 1 \le n \le 10000 1≤n≤10000

60 % 60\% 60%的数据满足: 1 ≤ n ≤ 500000 1 \le n \le 500000 1≤n≤500000

100 % 100\% 100%的数据满足: 1 ≤ n ≤ 2000000 1 \le n \le 2000000 1≤n≤2000000

理解与感悟

典型的筛质数题,直接输出 n − 质数个数 n-质数个数 n−质数个数即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAXN = 2e6 + 5;
int n, cnt;
bool flag[MAXN];

int main () { 
        
// freopen ("friend.in", "r", stdin);
// freopen ("friend.out", "w", stdout);
	scanf ("%d", &n);
	for (int i = 2; i <= n; i ++) { 
        
		if (flag[i] == 0) { 
        
			cnt ++;
			for (int j = 2 * i; j <= n; j += i) { 
        //埃氏筛质数法
				flag[j] = 1;
			}
		}
	}
	printf ("%d", n - cnt);//输出
	return 0;
}
T85. Self-Number

在1949年印度数学家D. R. Daprekar发现了一类称作Self-Numbers的数。对于每一个正整数 n n n,我们定义 d ( n ) d(n) d(n)为加上它每一位数字的和。例如, d ( 75 ) = 75 + 7 + 5 = 87 d(75)=75+7+5=87 d(75)=75+7+5=87。 给定任意正整数 n n n作为一个起点,都能构造出一个无限递增的序列: n , d ( n ) , d ( d ( n ) ) , d ( d ( d ( n ) ) ) n,d(n),d(d(n)),d(d(d(n))) n,d(n),d(d(n)),d(d(d(n))), . . . 例如,如果你从 33 33 33开始,下一个数是 33 + 3 + 3 = 39 33+3+3=39 33+3+3=39,再下一个为 39 + 3 + 9 = 51 39+3+9=51 39+3+9=51,再再下一个为 51 + 5 + 1 = 57 51+5+1=57 51+5+1=57,因此你所产生的序列就像这样: 数字 n n n被称作 d ( n ) d(n) d(n)的发生器。在上面的这个序列中, 33 33 33是 39 39 39的发生器, 39 39 39是 51 51 51的发生器, 51 51 51是 57 57 57的发生器等等。有一些数有超过一个发生器,如 101 101 101的发生器可以使 91 91 91和 100 100 100。一个没有发生器的数被称作Self-Number。如前 13 13 13个Self-Number为 1 , 3 , 5 , 7 , 9 , 20 , 31 , 42 , 53 , 64 , 75 , 86 , 97 , . . . 1,3,5,7,9,20,31,42,53,64,75,86,97,... 1,3,5,7,9,20,31,42,53,64,75,86,97,...。我们将第个表示为,所以 a 1 = 1 , a 2 = 3 , a 3 = 5 a_1=1,a_2=3,a_3=5 a1​=1,a2​=3,a3​=5. . .

输入包含整数 N , K , s 1 , s 2 , . . . , s K N,K,s_1,s_2,...,s_K N,K,s1​,s2​,...,sK​,其中 1 ≤ N ≤ 1 0 7 , 1 ≤ K ≤ 5000 1 \le N \le 10^7,1 \le K \le 5000 1≤N≤107,1≤K≤5000,以空格和换行分割。

在第一行你需要输出一个数,这个数表示在闭区间 [ 1 , N ] [1, N] [1,N]中Self-Number的数量。第二行必须包含以空格划分的 K K K个数,表示a[s1]. . a[sk],这里保证所有的a[s1]. . a[sk]都小于N,但不一定按顺序排列(例如,如果 N = 100 N=100 N=100, s k s_k sk​可以为 1 1 1~ 13 13 13,但不能为 14 14 14,因为 a 14 = 108 > 100 a_{14}=108>100 a14​=108>100)

标签: q24j4pj连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台