自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

玛珈山大萌新

破山中贼易,破心中贼难。不破不立,破而后立,力而为人。

  • 博客(17)
  • 收藏
  • 关注

原创 2020牛客多校训练第三场

题目完成情况A. Clam and Fish√B. Classical String ProblemC.Operation LoveD. Points Construction ProblemE.Two MatchingsF.Fraction Construction ProblemG.Operating on a GraphH.Sort the Strings RevisionI.Sorting the Array...

2020-07-30 12:42:06 337

原创 2020牛客多校训练第二场

题目完成情况A. All with PairsB. Boundary√C.Cover the TreeD. DurationE.Exclusive ORF.Fake Maxpooling√G.Greater and GreaterH.Happy TriangleI.IntervalJ.Just ShuffleK.Keyboard FreeB.Boundary题意:给你n个点,任意两个点可以跟圆心确...

2020-07-30 11:21:40 180 1

原创 2020牛客多校训练第一场

H.Minimum-cost Flow分析:可以先假设每条边的容量是1,然后跑mcmf,按费用从小到大求出各条增广路。然后对于q次询问,我们可以转化为每条边的容量为u,总流量(从原点出发的流)是v,求出此时的mincost,然后除以v即可代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "

2020-07-29 13:36:23 97

原创 Codeforces Round #659 (Div. 2) 题解

B.Koa and the Beach分析:贪心策略:对每一步维护一个水位 0-k,我们假定当前位置最高承受的水位为maxd,now为当前的水位如果maxd>=k,则now=k否则,now = min(now - 1, maxd)如果now为负(水位处于上升状态),且此时abs(now)>maxd,则无法通过等待水位的调整来度过,也就是只能淹死。代码:#include <bits/stdc++.h>using namespace std;typedef long l

2020-07-26 16:29:54 297

原创 [PAT顶级]1023 The Best Polygon (35分)

题目:给你一个凸包,然后让你从其定点中选n个点,使之组成的n边形面积最大分析:1、极角排序2、dp[i][j][k] = dp[i][l][k - 1] (i <= l < j) + s(i, l, j)3、用vector保存dp[i][j][k]对应的点集(除两端点)代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define

2020-07-24 19:02:50 234

原创 [PAT顶级]1024 Currency Exchange Centers (35分)

分析:MST题目,不过这次题目不像之前那样先提前按权值排好序即可以,而是每次选取边权尽可能小,同时选取的center在之前尽可能出现过。先将所有的边放入优先队列,重定义<运算符,同时用一个unordered_set来保存遍历过的center,每次从队列取出来的一定就是符合题意的了(之前以为优先队列不能动态监视<运算符涉及到的容器,从而进行队列元素的自动调整,现在发现还真行)代码:#include <bits/stdc++.h>using namespace std;type

2020-07-24 15:29:55 236

原创 [2020HDU多校]Total Eclipse 并查集

题意:n个点的图,每个点有点权,每次选取一个联通分量,然后其中每个点点权-1,点权不能为负,求最少需要操作的次数分析:一开始用dp搞的,然后一直wa,其实这道题是并查集,看到连通分量应该想到的,还是题做少了。因为这个题是从小到大删的点,我们可以逆向考虑,点权从大到小加入点,每加入一个点u,贡献就是(u所连接的连通分量的个数 - 1) * u的点权。代码:#include<bits/stdc++.h>#define mem(a, b) memset(a, b, sizeof(a))

2020-07-23 21:27:20 472

原创 [PAT顶级]1025 Keep at Most 100 Characters (35分)

分析:dp[i][j]表示考虑前i位,能够得到的长度为j的串的数量,dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1]dp[i - 1][j - 1]代表了以s[i]结尾的长度为j的个数,显然跟dp[i - 1][j]有重合的部分,也就是dp[i - 1][j]中以s[i]结尾的长度为j的个数,所以只需要把这部分扣除就可,用last[]记录s[i]最近出现的位置。初始化:每次初始化dp[i][1] = dp[i - 1][1] + !(s[i]之前是否出现过)代码

2020-07-23 10:47:23 181

原创 [PAT顶级]1027 Larry and Inversions (35分)

题意:给你一个排列,求分别将其子区间的数reverse之后,得到的数列的逆序对的数目。分析:先求出原序列的逆序对的数量,然后固定区间左端点i,移动右端点j,每次通过树状数组求[i, j]中小于a[j]的数目和大于a[j]的数目,计算本次反转对逆序对的贡献,用res记录前面几次贡献的和。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define

2020-07-22 10:59:26 169

原创 最大流

题目1:Dining POJ - 3281分析:模板(当前弧优化+剪枝)代码:#include <cstdio>#include <iostream>#include <queue>#include <cstring>#include <algorithm>typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " &

2020-07-16 18:45:42 114

原创 朱刘算法

题目一:Command Network POJ - 3164分析:模板题代码:#include <iostream>#include <cstring>#include <cmath>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl#defin

2020-07-15 10:29:10 140

原创 斜率dp

要点:列出dp关系式,找出哪些量是变量,哪些是常量,换成y=kx+b的形式分析凸包是上凸还是下凸初始化一定思考全面题目1:P3195 [HNOI2008]玩具装箱分析:参考博客有一点注意,一开始其实有元素0在队列中,要注意其代表的意义,并进行初始化代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cou

2020-07-15 10:27:22 105

原创 背包dp(不定期更新)

题目1:Dividing HDU - 1059分析:1、多重背包——每种物品有有限件2、物品二进制优化代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl#define close() ios::sync_with_st

2020-07-08 22:54:30 95

原创 状压dp(不定期更新)

题目1:Hunter HDU - 4568分析:TSP+最短路这题算是很考验代码能力的题了(至少我写了一天多,tcl)一共有k个点是宝藏,把外界看做一个点,则相当于k+1个点,最终我们就是求一个k+1个点的tsp(注意:入口和出口不一定一样)。因此需要先用dijkstra算法求出每个宝藏到其他k个点(包括外界)的最短距离——对每个点分别使用dijkstra算法。最短路求完之后我们保存的是不包含两端点权的最短距离,然后跑tsp,最后输出时记得加上所有宝藏的点权。思考:看了交大队长的博文,感觉这种题就

2020-07-08 14:29:25 105

原创 树形dp(不定期更新)

题目1:Genghis Khan the Conqueror HDU - 4126分析:感谢几篇写得比较好的博文帮我理解此题:https://blog.csdn.net/ramay7/article/details/52236040https://blog.csdn.net/gatevin/article/details/47042021https://blog.csdn.net/u014664226/article/details/49333081可以枚举每个点,然后考虑这个点所有的贡献:以

2020-07-05 19:42:03 187 1

原创 最长回文子序列

题目:Two Rabbits HDU - 4745分析:1、先把它当成直线而不是圆,求出各个区间的最长回文子序列2、考虑圆环:将其分成两段如图:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "debug: " << i << endl#define cl

2020-07-03 18:19:02 114

原创 BSGS——大步小步算法

题目1:Discrete Logging UVA - 10225分析:BSGS模板讲解:BSGS讲解代码:#include <iostream>#include <map>#include <cmath>#include <algorithm>using namespace std;typedef long long ll;//typedef __int128 lll;#define print(i) cout << "

2020-07-02 23:22:48 233

空空如也

空空如也

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

TA关注的人

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