杂篇
cc 提升ing 变优秀ing
有需要搜广推nlp实习生的部门吗?
展开
-
洛谷:P1297 [国家集训队]单选错位(数学,普及+/提高)
题目:分析:只有连续相同答案才能做对。上面是求出做对每一道题的概率,然后相加,想想应该是对的,不敢肯定。原创 2020-10-07 08:40:08 · 125 阅读 · 0 评论 -
leetcode:1000. 合并石头的最低成本(区间dp,困难)
题目:分析:乍一看,简单,矩阵连乘。再乍,K是难点。什么时候才能合并完呢?k+(k-1)*n (n>=0).突然就想出来了。矩阵连乘是分成两半,而分成多半,可以用其他。A【i】【j】代表,i后面分成j份后再合并。转移时将i之后的分成了两部分,前一部分能合成1组,后一部分A【i+1+(k-1)*n】【j-1】A【i】【1】==A【i】【k】不错。代码:...原创 2020-10-05 15:16:44 · 968 阅读 · 0 评论 -
洛谷:P5858 「SWTR-03」Golden Sword(dp,提高+/省选-)
题目:分析:还好坚持着想了下去,题目放在这个题单,我想到的是在背包问题上进行一定修改的dp。仅仅对状态转移附近的代码进行修改就可以啦。代码:#include<bits/stdc++.h>using namespace std;long long A[5505][5505];//dp int B[5505];// 原始数据 int m,w,s;// 原料总数 容纳max 取max int main(){ for(int i=0;i<5505;i++) for(in原创 2020-10-03 10:37:15 · 1315 阅读 · 3 评论 -
洛谷:P1419 寻找段落(提高+/省选-,滑动窗口,单调队列)
题目:分析:前缀和,暴力找,超时:#include<bits/stdc++.h>using namespace std;int m;int a1,a2;int A[100005];int B[100005];int main(){ cin>>m>>a1>>a2; B[0]=0; for(int i=1;i<=m;i++) { cin>>A[i]; B[i]=A[i]+B[i-1]; } doubl原创 2020-09-17 19:48:53 · 312 阅读 · 0 评论 -
洛谷:P1966 火柴排队(提高+/省选-,分治)
题目:分析:起初没有思路,看一眼题解是归并排序。所以自己先想了想。如果一个是有序的,那么另一个也是有序的,这样才会得到最小值。那么问题转化为一串数字,交换最小次数后使其有序。想了半天没想到,仔细看题解,发现漏掉了相邻才可以移动。(意识到这道题在leetcode 上应该也做过,当时也是没看清相邻的要移动)很明确了,左右两边的移动成为有序的会多余吗?感性认识不会。强调:只需要考虑向前移动的或者是只需要考虑向后移动的,是这样的!!!!!(标记为精华原因所在)值得细想!因此,只考虑前移的,那么一原创 2020-09-12 19:35:24 · 171 阅读 · 0 评论 -
洛谷:P1967 货车运输(提高+/省选-,lca,最小生成树)
题目:分析:n个询问,n词最小生成树。想着一定t。看题解,又是lca,暂时放弃。/(ㄒoㄒ)/~~原创 2020-09-07 14:11:39 · 92 阅读 · 0 评论 -
洛谷:P1396 营救(普及/提高-,最小生成树)
题目:分析:显然,从点开始的最小生成树的算法。从出发点开始,其所有的边都加入队列,然后,选最小的,最小的边的另一个点的所有边也加入,感觉像是启发式搜索,按照一定的条件进行搜索。...原创 2020-09-07 14:02:30 · 161 阅读 · 0 评论 -
洛谷:P5536 【XR-3】核心城市(树,树的直径)
题目:分析:自己真的是一点思路都没有,直接看的题解。当然,只是看的思想。1.求树直径,然后找树的直径的中间点。自己在求直径选城市中,出现的错误思想。多条直径怎么办?那一定是基本同中心的。中心点有两个怎么办?根据题意,选哪个当然都是无所谓的啊!//求直径的第一步 :以任意一点出发,找最远的一点,最远点一定是直径的端点。//宽度优先搜索,那么最后的那个端点一定是最深的那个。代码:#include<bits/stdc++.h>using namespace std;int m,n原创 2020-09-06 16:09:19 · 311 阅读 · 0 评论 -
洛谷:P1629 邮递员送信(图,地杰斯特拉算法,普及/提高- )
题目:分析:我想到了去的时候是digkstral算法。返回的时候难道是求n个地杰斯特拉算法?然后只用到了一半。看题解,我真就是个菜鸡,返回的时候不就是反向建个边,然后,还是从起始点1点的地杰斯特拉算法吗?代码:重写地杰斯特拉算法模板后再写吧!...原创 2020-09-03 22:39:31 · 226 阅读 · 0 评论 -
洛谷:P1127 词链(图,提高+/省选-)
题目:分析:这个题放这里我当然会做了。直接进行状态转化,单词转化为点,构造一个有向的图。单词要先排序。然后问题转化为在图中寻找能走完全部的最小路径了。具体怎么找呢?应该首先从0开始,能遍历的都标记,然后从没标记的中找最小的,遍历看看没标记的是否可以全部标记了,以此类推,代码:...原创 2020-09-02 23:31:56 · 294 阅读 · 0 评论 -
洛谷:P1092 虫食算(提高+/省选-,剪枝搜素)
题目:分析:一看题,就被不是10进制吓住了。看题解,非十进制很简单嘛!:7进制的 :3+6=2(3+6)%7=2代码:好像不太能体现思维,只是复杂而已。不想写了。部分代码:int m; string s1,s2,s3;int A[26];bool f(int x,int c){//c是进位 if(s1[x]==s2[x]) { if(A[s1[x]-'A']!=-1) { int ans=(2*A[s1[x]-'A']+c)%m; if(A[s3[x]原创 2020-08-24 10:59:20 · 131 阅读 · 0 评论 -
洛谷:P5507 机关(搜索剪枝,双向bfs搜素)
题目:分析:刚看完题,woc!仔细想,状态压缩构造图。看题解:启发式搜索:不想搞!双向搜索,嗯,试试吧!我估计搜索题自己一道也写不出来。为什么双向可以优化呢?有效的避免了队列过大!反向,和正向的状态转移没有任何的区别。注意:没有“连锁反应”垃圾代码:为了简便,用了map:#include<bits/stdc++.h>using namespace std;int A[13][5];/* int A1[16777217];//正方向是否用过 int A2[167原创 2020-08-21 20:44:50 · 386 阅读 · 0 评论 -
洛谷:P1120 小木棍 [数据加强版](剪枝搜素)
题目:分析:二分和树都比较简单,本来想着再水一波简单的,但是搜搜题好像都有一定的难度。直接看的答案。首先思考不能二分。因为答案不满足特点。(可以意会)1.题目缺陷:2.要求的是原始木棍的最小可能长度,那么我枚举开始答案是木棍现长的最大值。然后不断加最小的。3.在判断一个答案是否符合要求的时候,应该:优先使用长的木棍。4.在判断一个答案是否符合要求的时候,首先应该整除总长度。嗯,可以写代码了。代码:我咋感觉不用搜索呢!用的 ,。#include<bits/stdc++.h>原创 2020-08-21 11:05:01 · 207 阅读 · 0 评论 -
洛谷:P1363 幻象迷宫(提高+/省选-,图)
题目:分析:不是题目给的例子那么简单,我想到了如下情况,问题其实很简单,能否第二次到达原来的点。但是我很难想到哪一种遍历能满足自己的需求,标号也不行。参考答案吧。其实我能写出来,但是我想从某一个边的某一个点出发,如果只考虑这个点和其对应点的情况,是不是会t了。又想到一种更特殊的情况:啊,原来是有起点的啊。题解代码代码:直接复制:#include<iostream>#include<cstdio>#include<cstring>using nam原创 2020-08-16 19:29:11 · 203 阅读 · 0 评论 -
洛谷:P1273 有线电视网(树dp)
题目:分析:感觉和上一个的选课一样,就是同一根的不同子树之间的关系。需要一个类似背包,但是只能想到这里,后面的想不出来了。看了题解的dp思路:int B[3005][3005];//表示编号为i的节点所代表的子树在开通j个用户时的最大利润 。模仿做的第一道树形背包,写下代码,,只有20分,但觉得逻辑没错。:放弃:树形背包有待突破:#include<bits/stdc++.h>using namespace std;vector<vector<int> >原创 2020-08-05 16:52:33 · 168 阅读 · 0 评论 -
洛谷:P2014 [CTSC1997]选课
题目:分析:本来想着对每一棵二叉树进行操作,看题解,加一个点就把森林变成了一颗标准的二叉树。确实有点背包的意思,其实我也想到背包问题了,可是无从下手。三维的我会。看题解,有意思:错误代码:背包类似问题怎么能用递归呢?仔细分析分析,以下代码的dp运行过程基本全错。真的这样吗?#include<bits/stdc++.h>using namespace std;vector<vector<int> > vv;int m,n;//n 要选的数量 int B[原创 2020-08-03 11:25:05 · 243 阅读 · 0 评论 -
洛谷: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 · 200 阅读 · 0 评论 -
洛谷:P1616 疯狂的采药(dp,背包基础)
题目:分析:按照无限背包模板,数组不够大。代码:原创 2020-07-29 10:14:54 · 196 阅读 · 0 评论 -
洛谷: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 · 193 阅读 · 0 评论 -
洛谷: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 · 148 阅读 · 3 评论 -
洛谷: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 · 151 阅读 · 0 评论 -
洛谷:P4316 绿豆蛙的归宿(数学,提高+/省选- )
题目:错误思想:所有可能的路径长度求出来求平均。直接暴力原创 2020-07-19 17:45:29 · 837 阅读 · 0 评论 -
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 · 179 阅读 · 0 评论 -
洛谷:P4071 [SDOI2016]排列计数(数学,提高+/省选-)
题目我的分析:不知道为什么会错?首先进行问题转化,恰好m个满足在所谓的正确的位置,那么其余n-m个不在。则结果为 C(m,n)* (n-m)个不在正确位置的情况个数。问题转化为求有x个数,放在x位置,均不在正确位置的个数,以B表示。寻找B(x)与B(x-1)之间的关系,B(x):表示x均不在位置,B(x-1):表示x-1个均不在位置则不满足均不在位置的情况为,即有在正确位置的。B(x-1)X C(1,x)+B(x-2)X C(2,x)+。。。x!- 这些然后,竟然有错:#incl原创 2020-07-06 23:34:45 · 198 阅读 · 0 评论