欢迎光临散文网 会员登陆 & 注册

复盘|2022年度杭州未来科技城数字经济人才编程大赛

2022-11-13 20:30 作者:UCLmsc  | 我要投稿

信号接收

【排序】题意就是所有发射源发出的信号区间不能重叠。遍历,比较前一个的右端点和这一个的左端点。

黑白棋游戏

【滑动窗口】1的总数是几,窗口大小就是几。扫一遍,求窗口内1的最多个数(相当于求最少交换0的次数)。

快递中转站选址

【中位数贪心】选的x和y互相独立,可以将二维问题转化为两个一维问题,abs(x - x1) + abs(y - y1) + abs(x - x2) + abs (y - y2),分组x一组y一组,abs(x - x1) + abs(x - x2)   +    abs(y - y1) + abs (y - y2)。找所有x的中位数,以及所有y的中位数,(x,y)就是中转站坐标,然后再遍历一遍,求每个1到中转站的距离总和,即为ans。

c++可以把O(nlogn)的排序换成O(n)的nth_element,写法:nth_elment(xs.begin(), xs.begin + xs.size() / 2, xs.end());

门店商品调配

【子集状压 DP】dp[i]表示集合i通过商品调配后所有元素值均为0最少需要调配商品的次数。用二进制枚举i的子集k和补集i ^ j,if sum[j] == 0可以转移。dp[i]至多是i.size() - 1。分治,大问题可拆成两个小问题,dp[i] = min(dp[i], dp[j] + dp[i ^ j])。特殊情况,sum[i] !=0非法, dp[i] = INT_MAX / 2。(c++的__builtin_popcount可以计算1的个数)

【DFS】暴搜,每次消一个最小的商品。


复盘|2022年度杭州未来科技城数字经济人才编程大赛的评论 (共 条)

分享到微博请遵守国家法律