由于题面还没出来,现在先口胡一下思路
填空题直接打表找规律或者乱搞一下就能出,从大题开始说。
1,题意:
给你一个数组,这个数组里有几个数可以被一个连续递增的数字区间求和得出
思路:诈骗题,显然用[-(n-1),n]能构造出任何数。特判1。
2,题意:
给定,a,b,c,k,定义一次变换是同时进行a->(b+c)/2,b->(a+c)/2,c->(a+b)/2,问执行K次后a,b,c的值
打表发现执行次数一多三个数后面必然会不变,直接判如果三个数在一次操作后不变就输出。
3,题意:
给定一个数组,从中取m个数并重新排列,使得这些数组成的新数组 a a a的| a i 2 − a i − 1 2 {a_i}^2-{a_{i-1}}^2 ai2−ai−12|之和最小。
直接排序后双指针扫一遍
4,有个2*n的网格,里面已经有一些网格是"#“,其它的是”.“,最少要把多少个”.“替换成”.“才能让所有”#“联通。
经典DP,首先找到一个最大的区间,使得区间的最左边和最右边都有”#“。定义DP数组:dp[1][i]:表示第i列第1行有”#“,dp[2][i]表示第i列第2行有”#“,dp[3][i]表示第i列第1,2行都有”#",直接根据这些状态转移即可
5,给定一棵树,需要你去掉一些叶子节点,使得每个非叶子节点下面的叶子节点权值之和不大于它的权值,问最后节点1的叶子节点权值和为多少?
bitset优化树上背包板子题,直接暴力的基础上用bitset优化,本地测试跑满大概200ms.
6,给定一个数组让你在这些数中间填入加减和异或符号,所有可能的情况的计算值之和是多少。
观察发现答案只和前缀异或和有关,预处理表示 3 n 3^n 3n的数组后直接算即可。
题目正式出来了再写正式题解