题解 2604: 蓝桥杯2021年第十二届省赛真题-砝码称重

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

动态规划,用set代替list就可以跑完全部数据

解题思路:动态规划,新加的砝码和目前所得的质量可以相加,相减(两种情况,新砝码减旧质量或旧质量减新质量),将所得的结果(大于0)存入dp,供下一次使用,注意事项:中间要专门设一个列表,用于存储新称的重量,不能直接存入dp,用set集合可以比list速度快参考代码:n=int(input())arr=l

2604: 蓝桥杯2021年真题-砝码称重(unordered_set)

##unordered_set**又学到了一个重要的数据结构!!unordered_set:用于存放无序、不重复的数据(重复数据会被自动过滤)set:用于存放有序、不重复的数据unordered_map的value也不可重复,但是键和值成对出现,

dp,一维数组,两重循环

解题思路:设置数组weight_able[100000],weight_able[i]==1代表能称i重量的物品,反之则代表不能。增添砝码i,用当前能称取的所有重量与法码i的重量作和(差),更新weight_able数组,考虑到最后一个砝码时,此题求得解。

2604: 砝码称重

#思路设有数组dp[i][j],其中dp[i][j]:当前的砝码为i时,是否能称出j重量的物品当dp[i][j]时此时有三种情况:1.不放第i个砝码,此时dp[i][j]=dp[i-1][j]2.放第i个砝码,将重量减小,此时dp[i][j]=dp[i-1][abs(j-w[i])]3.放第i个砝码,

巧用集合,迅速秒杀

解题思路:利用python中的集合解决注意事项:输入时使用map函数参考代码:n=int(input())a=list(map(int,input().split()))b=set()b.add(0)foriina:forjinlist(b):b.add(abs(j-i))b.add(j+i)prin

简单递归暴力求解

解题思路:通过递归遍历每一种情况,并通过剪枝减少遍历次数节省时间注意事项:暴力求解可能得不到满分,但可以得到大多数分值参考代码:#includelonglongintn;longlongintw[10000];longlonginta[10000];longlonginte=0;longlongint

一维迭代解法

摘要:解题思路:与一楼的思路一致,但因为用set会超时,所以采用了以下方法优化参考代码:#include<bits/stdc++.h>using namespace std;int n;int g[1000……