01 2022 档案
摘要:【问题分析】 方法一:排序后从小到大排查,因为同色的数必须要是此色中最小数的倍数,又因为小的数不可能是大的数的倍数,所以从小开始算,把后面它的倍数都标记掉。记颜色的数量。 方法二:因为数的最大小于等于100,所以可以用桶排来写,把所有数分别装入相应的桶中后,从桶1开始到桶100。如果桶内有数,把它的
阅读全文
摘要:【问题分析】- 分析题目可得此问题为连通块问题- 因此题枚举被包围的‘0’较难- 所以可用枚举每一个不被包围的‘0’ 【设计程序】 1 #include<bits/stdc++.h> 2 #include<iostream> 3 #include<stdio.h> 4 #include<cstdio
阅读全文
摘要:【问题分析】 本题中只能相加,所以大于2048的数都没用,这使得本题有用的数据最大为2048, 所以可用桶排也是理所当然啦!用桶把小于等于2048的数都装进桶中从桶1开始把可以相加的数都进上去,直到1024,因为1024是相加小于等于2048中的最大数。 【设计程序】 1 #include<bits
阅读全文
摘要:【题目分析】 本题有两个方法, 方法一:每一个位置可得的分分别求出,打擂找出最大(可得部分分) 方法二:从后往前求可得的分数,以避免一些不必要的重复。 【设计程序】 方法一: 1 #include<bits/stdc++.h> 2 #include<iostream> 3 #include<stdi
阅读全文
摘要:【问题分析】 本题考了奇数。 由此想到以下定律: 奇数+偶数=奇数; 奇数+奇数=偶数; 偶数+偶数=偶数; 所以偶数只有凑数量的作用,只有奇数可以对结果产生影响。 经过思考可得奇数必须有奇数个奇数和任意个偶数组成,所以有以下组成方案(见代码中)。 【设计程序】 1 #include<bits/st
阅读全文
摘要:有两种方法,代码注释都很详细了直接上代码 一:记忆化搜索 1 #include<bits/stdc++.h> 2 using namespace std; 3 int t[15]; 4 int n, m; 5 int a[400]; 6 int mp[45][45][45][45];//mp[i][
阅读全文
摘要:【问题分析】 本题考了奇数。 由此想到以下定律: 奇数+偶数=奇数; 奇数+奇数=偶数; 偶数+偶数=偶数; 所以偶数可以忽略不计,只有奇数可以对结果产生影响, 所以我们只要注意奇数即可。 经过思考可得奇数的个数至少为k个且比k多的个数为偶数,此时多出的奇数可组成偶数,对结果不产生影响。 【设计程序
阅读全文
摘要:【问题分析】 此题题目意思每次取左或右的零食。 按区间dp的惯例,要区间从小到大dp。 上代码。 【Code】 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N = 2000 + 5; 4 int f[N][N], a[N]
阅读全文