题解列表

筛选

c++解决买瓜问题,回溯算法

解题思路:将瓜从大到小排序,以获得最小切割次数,采用回溯算法来判断切割次数注意事项:由于采用float定义会产生精度误差,所以采用*2的方式参考代码:#include#include#includeusingnamespacestd;vectorvectorintans=31;intm;longsum

直接使用动态规划解决,用dfs将超时

此题可以使用dfs来骗分得大约20分。以下是dp的方法//如果sum的和不能为奇数,因为只有奇数加偶数才能为奇数。因此sum如果为奇数,直接输出0即可//以下分析都是基于sum为偶数进行的//使用一个二维dp数组,dp[i][j],表示进行到i时,选不选取这个数(0表示否,1表示YES)。

c++二分排序

摘要:解题思路:看到的第一眼原本想使用小根堆找出最小的手牌,看了数据量改用了二分法,因为能凑出手牌的数量是单调的注意事项:参考代码:#include<bits/stdc++.h>#define INF 0x……

3分钟写完一个题

摘要:解题思路:注意事项:参考代码:#include<iostream>using namespace std;const int N=2005;int n;bool chess[N][N];//使用最简单……

1831: 蓝桥杯2015年第六届真题-机器人繁殖

#include#includeusingnamespacestd;//设初始数量为n,则数量变化为://3n-1,7n-4,15n-11,31n-26//不难看出n前系数的变化规律为2^(n+1)-1,常数项的绝对值为前一项的常数项加上前一项的n的系数(4=3+1,

最长公共子序列

解题思路:模板题,力扣1143.最长公共子序列假设字符串text1和text2的长度分别为m和n,创建m+1行n+1列的二维数组dp,其中dp[i][j]表示text1[0:i]和text2[0:j]的最长公共子序列的长度.1当text1[i-1]==text2[j-1]时,

多重背包(C++)暴力

解题思路:设dp[i][j]的含义是:在背包承重为j的前提下,从前i种物品中选能够得到的最大价值。如何计算dp[i][j]呢?我们可以将它划分为以下若干部分:选0个第i种物品:相当于不选第i种物品,对应dp[i-1][j];选一个第i种物品:对应dp[i-1][j-v[i]]+w[i];选两个第i种物

合并果子---简单易懂

解题思路:只有保证每次搬运的是当前所有堆中重量最小的两堆果子才能使体力消耗最小;使用set容器自动排序,但又考虑到重量肯能出现相同情况,就使用multiset(可以放入重复元素并自动排序)参考代码:#includeusingnamespacestd;typedeflong