自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 洛谷:P1441 砝码称重(dp,)

题目:注意理解题意,去掉m个之后,最大值,不是去掉所有可能的m个之后,所有结果的和,分析:题解说先dfs枚举再dp,哦,原来就是先dfs出所有可能的情况,然后再对每种情况进行其可能的重量统计。很有道理的两种dfs:代码:#include<bits/stdc++.h>using namespace std;int m,n;int A[25];//原始重量 int B[25];//是否被去掉 1表示被去掉了。int maxx=-1;int dp(){ bitset&l

2020-07-31 22:33:09 226

原创 洛谷:P2347 砝码称重(dp,)

题目:分析:和算法课上一道玩具题一样,设一个数组,可以的为1,不可以为0.每次对新的砝码进行新的可以的设为1.倒着来啊。这次又这样错了。代码:—直接上述实现超时了:#include<bits/stdc++.h>using namespace std;int A[6];//1 2 3 5 10 20int main(){ for(int i=0;i<6;i++) cin>>A[i]; int B[6]={1,2,3,5,10,20}; long long D

2020-07-29 17:03:47 579

原创 洛谷:P1616 疯狂的采药(dp,背包基础)

题目:分析:按照无限背包模板,数组不够大。代码:

2020-07-29 10:14:54 212

原创 洛谷:P1896 [SCOI2005]互不侵犯(dp,状态压缩最基础题)

题目:分析:状态压缩就一句话:把状态用二进制转换成一个数。代码:#include<bits/stdc++.h>using namespace std;int m,n;//m行 n个国王。 1 <=N <=9, 0 <= K <= N * Nlong long A[10][160][160]; //当第i行状态为j时,已经放置了k个国王的总方案数。//不是二进制 的 9个1,因为还有要舍弃的状态。int A1[160];//存放第i个状态对应的二进制

2020-07-28 18:26:59 222

原创 洛谷:P1063 能量项链(dp,普及+/提高)

题目:分析:双倍。然后就是矩阵连乘类似。问题了。代码:哪错了?放弃了!#include<bits/stdc++.h>using namespace std;int n;int A[250];int D[250][250];int f(int x,int y){ if(D[x][y]!=-1) return D[x][y]; if(x==y) return 0; if(x+1==y) return A[x]*A[y]*A[y+1]; //if(x+2==y) retur

2020-07-28 10:22:40 167 3

原创 洛谷:P1040 加分二叉树(dp,普及+/提高)

题目:分析:被二叉树,X序遍历吓着了。代码:傻了,写成了先序#include<bits/stdc++.h>using namespace std;int n;int A[40];int D[40][40];int f(int x,int y)//以x为根,到y { if(x==y) return A[x]; if(x+1==y) return A[x]+A[y]; for(int i=x;i<y;i++) { D[x][y]=max(D[x][y],A[x

2020-07-27 16:31:26 121

原创 洛谷:P2585 [ZJOI2006]三色二叉树(树dp,提高+/省选-)

题目:分析:我总觉得紫书上见过类似的。最多的应该考虑四层。自己的想法太复杂:如最少的自己的想法是,首先明确只有这种情况才要染绿色。如果是有两个子节点,三种情况,父,两子分别为绿色。父为绿。则判断子的子。子为绿,则该子的 子的子,兄弟的子。妈耶,一直想着非绿色的两种颜色统一化,结果就是这么简单:不过我充分利用非绿色两种颜色统一化比题解时间应该少一半:代码:#include<bits/stdc++.h>using namespace std;string s;vector&

2020-07-27 13:55:30 181

原创 将二叉树序列转化为二维数组,父节点存放子节点。

样例:代码:#include<bits/stdc++.h>using namespace std;string s;vector<vector<int> > vv;int A[500005];int f_tree(int &x){//初始化树。 if(s[x]=='0') { return x; } if(s[x]=='2'){ int c=x; x++; vv[c].push_back(f_tree(x)); x+

2020-07-27 10:57:33 410

原创 洛谷:P2015 二叉苹果树(dp树,普及/提高-)

题目:分析:看错题目,要删几个!。。。减一下就欧克啦。但是,减去一个不单单是减去了一个啊。是减去了一串啊!代码:#include<bits/stdc++.h>using namespace std;int m,n;int A[101][2];//存放子树。vector<vector<int> >vv; int B[101][101];//存放树上的苹果long long D[101][101];int t[101];//存放个数。map<in

2020-07-26 15:48:38 759

原创 洛谷:P1352 没有上司的舞会(普及/提高- ,树的dp)

题目:分析:和紫书上树的dp一样,依稀记得。代码:#include<bits/stdc++.h>using namespace std;int n;int A[6002];long long D[6002];vector<vector<int> > vv;long long f(int x){ if(D[x]!=-1) return D[x]; D[x]=0; int a=0; //包含本身。 a=A[x]; for(int i=0;i

2020-07-25 21:41:27 128

原创 洛谷:P3205 [HNOI2010]合唱队(dp,提高+/省选-)

题目:分析:正在看着题解,突然就自己想出来了,有多少种出法就可以啦。要么从左,要么从右,而且是有限制条件的出,左边出,还是右边出,需要再加一维,和洛谷:P1220 关路灯(提高+/省选-,dp) 一样。代码:#include<bits/stdc++.h>using namespace std;int A[1001];int n;long long D[1001][1001][2];//0表示 左边的要出了 1表示 右边的要出了 long long f(int x,in

2020-07-25 19:36:57 257

原创 洛谷:P1220 关路灯(提高+/省选-,dp)

题目:分析:这个区间有意思,表示区间外的。做的过程中想到了紫书上的小偷上地铁题,三维数组。不过根据这个题,我将三维数组的第三位只取0,1.因为每次一定在最边上。自己想的,自己写的。感觉很好!,哪有问题检查不出来?就这吧,懒得看答案。代码:#include<bits/stdc++.h>using namespace std;int A[60][2]; int D[60][60][2];//0处于x位置,1处于y位置。 int m,n;long long f(int x,in

2020-07-25 17:16:32 167

原创 洛谷:P1005 矩阵取数游戏(提高+/省选-,dp)

分析:分析:状态转移太简单了,难点是longlong放不下,我懒得管,60分。题目:#include<bits/stdc++.h>using namespace std;int m,n;long long A[81][81];long long D[81][81];long long pow2[81];long long f(int h,int k,int x,int y){ if(x==y) { return A[h][x]*pow2[k]; } if(D[x

2020-07-25 10:37:44 234

原创 洛谷:P4170 [CQOI2007]涂色(dp,提高+/省选-)

题目:贪心:第一次我肯定全涂,必定有:两个相邻同色间不论怎样图,图这两个相邻的一定是一次。已经图对的颜色肯定是不去修改的。因为和修改是一样的。加了一次。我觉得是这样,不用dp,可以直接模拟出来。代码懒得检查,但是思路应该是对的。(我觉得)题解的dp:感觉思路差不多:...

2020-07-24 17:23:02 219

原创 洛谷:P1880 [NOI1995]石子合并(dp,普及+/提高)

题目:代码:没看到环形,直接矩阵连乘!#include<bits/stdc++.h>using namespace std;int A[200];int D1[200][200];int D2[200][200];int m;int f(int x,int y){ if(x==y) return 0; if(D1[x][y]!=-1) return D1[x][y]; D1[x][y]=1<<30; int sum=0; for(int i=x;i&lt

2020-07-24 12:15:02 180

原创 洛谷:P1077 摆花(普及/提高-,dp,背包)

题目:分析:很好,想到了背包,但是初始状态错了??????状态转移是对的。代码:#include<bits/stdc++.h>using namespace std;int main(){ int m,n; cin>>m>>n; int A[m+1]; A[0]=0; for(int i=1;i<=m;i++) cin>>A[i]; int D[n+1][m+1]; memset(D,0,sizeof(D)); for

2020-07-24 09:56:49 277

原创 洛谷:P2758 编辑距离(dp,普及/提高-)

题目:分析:和最长公共子序列一样倒着来。即可。代码:#include<bits/stdc++.h>using namespace std;long long A[2001][2001];string s1,s2;long long f(int x,int y){ if(x==-1&&y==-1) { return 0; } if(x==-1) { return y+1; } if(y==-1) { return x+1; } if(

2020-07-23 23:29:12 188

原创 P1280 尼克的任务(dp,普及+/提高)

题目:分析:被区间问题限制思维了。f(i)表示从i时刻开始的最大空暇时间。有i时刻开始的:f(i)=max(f(i),f(i+t))无i时刻开始的:f(i)=f(i+1)+1用一个二维的vector存储。代码:#include<bits/stdc++.h>using namespace std;vector<vector<int> > vv;int main(){ int m,n; cin>>m>>n; vector&

2020-07-23 19:40:27 205

原创 动态规划的LIS与LCS分别指什么?

LIS(最长递增子序列问题):Longest increasing subsequenceLCS(最长公共子序列问题):Longest common subsequence均为基础问题。

2020-07-22 21:10:20 470

原创 洛谷:P1048 采药(dp,简单的背包问题,普及-)

题目:分析:最基础的背包问题。等号那个又差点错,当然可以等啦!代码:#include<bits/stdc++.h>using namespace std;long long A[1001][101];int main(){ memset(A,0,sizeof(A)); int m,n; cin>>m>>n; int B[n+1][2]; for(int i=1;i<=n;i++) { cin>>B[i][0]>>

2020-07-22 19:43:10 176

原创 洛谷:P4017 最大食物链计数(dp,普及/提高-)

题目:分析:和求图中的路的数量差不多。代码:#include<bits/stdc++.h>using namespace std;int n,m;//动物个数,关系数 vector<vector<int> > vv;long long D[5005];int f(int x){ if(D[x]!=-1) return D[x]; D[x]=0; for(int i=0;i<vv[x].size();i++) { D[x]+=f(vv[

2020-07-22 17:39:17 324

原创 洛谷:P2196 挖地雷(dp基础,递归)

题目:分析:和滑雪问题一样。代码:#include<bits/stdc++.h>using namespace std;int A[20][20];int B[20];int n;int D[20];int f(int x){ if(D[x]!=-1) return D[x]; D[x]=0; for(int i=x+1;i<n;i++) { if(A[x][i]) D[x]=max(D[x],f(i)); } return D[x]=B[x]+D[x

2020-07-22 16:58:35 261

原创 洛谷:P1002 过河卒(dp,普及-,最简单的步数统计)

题目:代码:#include<bits/stdc++.h>using namespace std;int m1,m2,n1,n2;bool j(int x,int y){ if(x>=0&&x<=m1&&y>=0&&y<=m2) return 1; return 0;}int main(){ cin>>m1>>m2>>n1>>n2; int A[m1

2020-07-22 01:54:06 145

原创 洛谷:P1802 5倍经验日(dp,背包问题)

题目:分析:不说了,一道很基本的背包题,竟然写了1个小时,代码低级错误不断,思维也不缜密,代码逻辑小错误也有几处。代码:#include<bits/stdc++.h>using namespace std;int main(){ int m,n; cin>>m>>n; int A[m+1][3]; for(int i=1;i<=m;i++) cin>>A[i][0]>>A[i][1]>>A[i][2]; l

2020-07-22 00:33:26 184

原创 洛谷:P1434 [SHOI2002]滑雪(普及/提高-,dp,递归)

题目:分析:一样的题:https://blog.csdn.net/weixin_42721412/article/details/103108598这次自己想出来的,很好!,完全理解了。递归解决后效性。代码:#include<bits/stdc++.h>using namespace std;int n;int m;int A[100][100];int D[100][100];int judge(int x,int y){ if(x<0||x>=n||

2020-07-21 14:55:47 193

原创 leetcode:517. 超级洗衣机(数学,困难)-----不是很理解,反正自己想不出来!

题目:分析:刚开始看成只有1个台只能移动到相邻的了。和紫书上的做法类似。int main(){ vector<int> m; int sum=accumulate(m.begin(),m.end(),0); if(sum%m.size()!=0) return -1; int adv=sum/m.size(); int n=0; int r=0; for(int i=0;i<m.size()-1;i++) { m[i]=m[i]+n; r+=abs(m[i

2020-07-21 11:39:23 204

原创 leetcode:面试题 17.06. 2出现的次数(数学,中等)

题目:分析:首先强调:A【x】表示 x位数的含有2的个数:B【x】表示 x位数的含有数字的个数x=1 A【x】=1 B【1】=10A【2】=10*A【1】(解释:0开头也算,X2的形式)+B【1】(解释:0开头也算,2X的形式)代码:class Solution {public: int numberOf2sInRange(int n) { int n1=n; long long n2=10; long long A[10],B[10]; A[

2020-07-20 10:06:44 246

原创 leetcode:869. 重新排序得到 2 的幂(数学,中等)

题目:分析:枚举什么你要注意啦!不要惯性思维,枚举给的数字啊。代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; vector<int> v; int maxx=1; while(1) { if(n==0) break; maxx=maxx*10; v.push_back(n%10); n=n/10; } sort(v.begin()

2020-07-20 00:07:12 155

原创 洛谷:P4316 绿豆蛙的归宿(数学,提高+/省选- )

题目:错误思想:所有可能的路径长度求出来求平均。直接暴力

2020-07-19 17:45:29 882

原创 leetcode:810. 黑板异或游戏(困难,数学,博弈,异或)

题目:分析:异或果断看题解性质:解释:失败:因为我很聪明,所以我拿任意一个之后都为异或为0时,我才失败。结合自反性质,和 0异或0为0:交换律:代码:#include<bits/stdc++.h>using namespace std;int main(){ vector<int> n; if(n.size()%2==0) return 1; for(int i=1;i<n.size();i++) { n[0]=n[0]^n[i]; }

2020-07-18 17:30:20 225

原创 洛谷:P3802 小魔女帕琪(数学,省选/NOI-)

题目:继续盗取题解:前七个为七星阵的概率:随便用一个,2-8为七星阵的概率,你肯定也会算:分七种情况减一即可、结果仍是上述:推广即可。即从第7个位置开始,概率均为P。算期望:笨蛋方式是先C,再乘以次数。nb方法是直接乘。抽奖先后顺序不影响那个原理的推广吧!代码:#include<bits/stdc++.h>using namespace std;int main(){ int A[7]; for(int i=0;i<7;i++) cin>>A[i]

2020-07-18 16:12:43 169

原创 leetcode:1478. 安排邮筒(dp,困难)

题目:分析:渣渣日常盗取题解。中位数的位置上,所有的距离之和是最小的。(绝对值不等式)----我也忘了绝对值不等式了,不过按奇数想很容易想到是这样的。

2020-07-18 11:06:09 305

原创 leetcode:7. 整数反转(简答,数学)-----------学习python字符串的反转方法

题目:分析:题目玩我啊,超过范围就0了?代码:class Solution: def reverse(self, x: int) -> int: if x==1534236469: return 0 ok = 1 if x < 0: x = -x ok = -1 s = str(x) result = s[::-1]

2020-07-15 13:06:04 153

原创 leetcode:1447. 最简分数(中等,数学)

题目:分析:(还是leetcode上的题简单一些,起码有思路)我的思路:因为个数有限,所有可以像并查集那样,2的倍数构成一个集合,3的。。。 当然只需要100以内的质数的倍数构成一个集合。Eratosthenes筛法:构造素数表。边筛选集合也就构造出来了。代码:class Solution: def simplifiedFractions(self, num: int) -> List[str]: # 存放并查集 ll2 = [[]for i

2020-07-14 22:26:21 272

原创 leetcode:202. 快乐数(数学,水题,简单)

题目:分析:出现与之前重复就一定不会再出现1了,是一个循环的环了,用set记录。代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; set<int> s; while(1) { if(n==1) return 1; if(s.count(n)==1) return 0; s.insert(n); int all=0; while(n!

2020-07-14 13:14:52 180

原创 洛谷:P1199 三国游戏(数学,普及/提高- )

题目:分析:还是看答案提示才有思路结论:每一行中次大中的最大。提问:每一行最大的可能取到吗?回答:一定那个不可能,而且我可以控制电脑也不可能取到,除非我傻了。提问:每一行中次大中的最大那个我一定可以取到吗?回答:可以,先取这一行就可以啦!其实第一个问题不准确,某个可能是改行最大其他行第二大也是可以的代码:#include<bits/stdc++.h>using namespace std;int main(){ int num; cin>>num; i

2020-07-14 00:06:31 234

原创 算法题中,题目要求四舍五入怎么处理?

使用printf(),自带四舍五入:

2020-07-13 22:40:18 217

原创 洛谷:P1654 OSU! (省选/NOI-,数学期望)

题目:分析:下面这个式子:只有在该位为1的情况下,才有必要算增加值。注意E(xi)没有乘。根据数学期望的性质:相同的方法:代码:#include<bits/stdc++.h>using namespace std;int main(){ int num; cin>>num; double dd; //cin>>dd; double d1=0; double d2=0; double d3=0; for(int nn=0;nn&l

2020-07-07 22:59:54 240

原创 P2197 【模板】nim游戏(数学,普及+/提高)

题目:解释2堆时:为什么相等必输?先手怎么拿,我就怎么拿。不相等为什么必赢,先手拿使得两堆相等。代码:#include<bits/stdc++.h>using namespace std;int main(){ int num; cin>>num; for(int ii=0;ii<num;ii++) { int c; cin>>c; int n=0; for(int j=0;j<c;j++){ int t; c

2020-07-07 15:57:11 212

原创 洛谷:P1044 栈(数学,普及-)

题目:分析:3的情况分析:1 2 31 3 22 1 32 3 13 2 1所以只用思考为什么没有3 1 2:大号后面的小号一定是按从大到小顺序的,! 当然可能不连续。这个题这样做太复杂。题解:自己想的方法有冲突的重复情况,没有想到以最后一个不同来限制。代码:#include<bits/stdc++.h>using namespace std;int main(){ int c; cin>>c; long long A[19]; A[

2020-07-07 12:54:22 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除