自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 八 排序

8.1 插入排序8.1.1 直接插入排序void InsertSort() { for(int i = 2; i <= n; i++) { if(A[i] < A[i - 1]) { A[0] = A[i]; int j = i - 1; for(; A[0] < A[j]; j--) A[j + 1] = A[j]; A[j + 1]

2020-08-04 17:48:34 192

原创 六 图

最小生成树primPrim是一种增量算法,每次选择代价最小的边加入生成树,然后根据新加的节点更新备选节点的代价。通俗来说就是从起点开始,用贪心策略每次加入一个节点到现有的集合(这个集合连通的),直到最后所有节点都加入。时间复杂度为o(n^2)。适合稠密图const int INF = 0x3f3f3f3f;const int maxn = 110;int lowcost[maxn];int closest[maxn];//点从 0 到 n-1void prim(int cost[][ma

2020-07-29 17:53:29 413

原创 五 树和二叉树

二叉树的定义typedef struct node { char data; struct node * lchild; struct node * rchild;} BTNode;void InitBT(BTNode * &b) { b = (BTNode *) malloc(sizeof(BTNode)); b->lchild = NULL; b->rchild = NULL;}二叉树的递归遍历前序遍历void Pre

2020-07-23 16:17:54 223

原创 四 串 KMP

4.1 Brute-Force(暴力)int BF(string s, string t) { int lens = s.length(), lent = t.length(); int i = 0, j = 0; while(i < lens && j < lent) { if(s[i] == t[j]) i++, j++; else i = i - j + 1, j =

2020-07-21 13:54:08 155

原创 三 栈和队列

3.1 顺序栈顺序栈的基本操作const int maxn = 1e4 + 5;typedef struct { int data[maxn]; int top;} SqStack;void Print(SqStack s) { for(int i = 0; i <= s.top; i++) cout << s.data[i] << " "; cout << endl;}void InitStack(

2020-07-18 17:17:18 144

原创 二 线性表

二 线性表2.1 顺序表顺序表的结构体const int maxn = 1e5+5;struct SqList{ int len; int data[maxn];};顺序表的动态分配const int maxn = 1e2+5;struct SeqList{ int *data; int MaxSize,lenght;};//L.data = new int[maxn];基本操作bool ListInsert(SqList &L, int

2020-07-16 16:32:39 189

原创 一 绪论

绪论基本概念与术语1.数据信息的载体,对客观事物的符号表示,在计算机科学中是指能输入到计算机中并且被计算机程序处理的符号的总称。(它是计算机程序加工的原料)2.数据元素是数据的基本单位。(通常作为一个整体进行考虑和处理)3.数据项是构成数据元素的不可分割的最小单位。4.数据对象具有相同性质的数据元素的集合。(是数据的子集)5.数据结构是相互之间存在特定关系的数据元素的集合。(在任何问题中,数据元素都不是孤立存在的,它们之间存在某种关系,这种关系就是结构)数据结构的三要素逻辑结构逻

2020-07-15 19:34:52 263

原创 计算机图形学期末复习

图形学复习名词解释C2连接:两条相邻曲线段在相交点处,有相同的一阶导和二阶导。C1连接:两条相邻曲线段在相交点处,有相同的一阶导。捕捉技术 :利用外部设备捕捉计算机能够理解的数据。消隐:在绘制图形时,消除被遮挡的不可见的线或者面。引力场技术:物体延伸到空间中对另一物体的产生的吸引效应的技术。灭点:立体空间各边延伸至同一相同点。实体:同时具有几何要素和视觉要素的对象。型值点:位于...

2019-12-30 17:05:29 2451 1

原创 Codeforces (div2 E)1238E Keyboard Purchase(状态压缩DP)

题意:有一串密码你需要经常输入,长度为n(1e5)由前m(20)个小写字母组成。你需要买一个键盘即m个字母的排列,当你在输入该密码的时候,你手指(单指打字)移动的总距离最小。移动的距离就是密码每相邻2个字母在键盘上的距离总和。问你最小距离。思路:首先预处理d[i][j]为i和j在该密码相邻的次数。dp[se]表示当集合se在键盘的左侧(不考虑se的顺序,只考虑某字母有没有在se里面)其他不在...

2019-10-10 21:52:10 244

原创 HDU - 1525 Euclid's Game(打表)

题意:题目给出了两个正整数n,m每次操作,大的数减掉小的数的整数倍。一个数变为0 的时候结束。谁先先把其中一个数减为0的获胜。问谁可以赢。Stan是先手。看了一下网上的博客全是while循环判断的,但是这题其实就只要一个公式就可以了,假设 n>m 如果m <= n / (1 + sqrt(5)) * 2 就是先手赢,否则后手赢,n==m时特判。规律是打表+oeis找到的。注...

2019-08-27 15:30:42 217

原创 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛(解题报告)

1001签到。输出A&B,当(A&B == 0)时特判。1002 HDU - 6703 array因为给的数字是1-n的全排列,对于操作2,可以转换为查询区间[r+1,n]里面第一个大于等于k的数字。(考虑到该区间可能没有大于等于k的数字,可以在n+1位置插入数字n+1,就一定能查询到了。所以每次查询区间[r+1,n+1]第一个大于等于k的数字。)对于操作1,可以将加了1e7...

2019-08-24 12:38:18 2090 5

原创 HDU - 6630 permutation 2 2019杭电多校(DP写法)

题意:有三个正整数n,x,y。请计算有多少个排列1∼n满足以下条件:p1 = x pn = y 且相邻数字绝对值不超过2。思路:从x开始肯定要先往下走到1,然后往上到x+1。y肯定得往上到n然后往下到y-1。(x和y为端点要特判)。所以能变的数字只有区间[x+2,y-2],且满足端点相邻数字绝对值小于2.设区间长度为len。dp[0][i]代表i和i+1不交换的...

2019-08-06 09:19:23 288

原创 HDU - 6623 Minimal Power of Prime 2019杭电多校

题意:给出n,求n的所有质因子的幂最小值。思路:只需要找出答案大于1的情况,其他全是输出1。打表出10000以内的质数,枚举判断。对于有10000以上的质因子的情况如果它的答案大于1,只会出现xx,xxx,xxxx,xxy*y。4种情况。判断每种情况即可。#include<stdio.h>#include<math.h>typedef long long ll;l...

2019-07-31 22:40:19 453 1

原创 HDU 4123 Bob’s Race(树形DP二次扫描换根法,rmq,取尺)

题意:给定一颗生成树,编号为1-n,每个顶点可以作为起点走最长的一段距离(未知)对于每个询问q,找到最长的一段连续编号的顶点使得编号中的最长距离的最大值与最小值的差小于q。思路:首先用树形dp二次扫描换根法求出每个顶点作为起点能走的最长距离,用RMQ算法预处理一下就能很快查询区间内最大值和最小值。(预处理出log数组求logn,自带的log函数太慢了会超时)。最后对于每个查询使用取尺算法,就可以...

2019-07-26 08:33:14 259

原创 poj 2240 Arbitrage(Bellman-ford)

题意:给出n种货币,以及m种货币转换汇率。(例如USDollar 0.5 BritishPound 意思为1us=0.5br但是在题目里面0.5br不能换成1us)。问你能不能通过不停转换来赚钱。(看懂的已经发财了~)Bellman-ford算法:通过n-1轮松弛判断有没有环。以第一种货币为起点,dis[i]代表1元第一种货币能换这么多元第i种货币。所有在松弛时越大越好。把Bellman-fo...

2019-07-25 18:00:36 259

原创 HDU-6578 Blank(DP)2019暑假杭电多校第一场

题意:一行有n个空格编号1~n;每一个空格中填入0,1,2,3中的一个数字。且满足m个限制l,r,x:满足在区间[l,r]正好有x种不同的数字。有多少种方法可以填充空格以满足所有条件?思路:dp[i][j][k][t]代表填完t个空格之后。4个数字出现的位置排序后为(i,j,k,t)的方法。可以得到4个转移方程:dp[j][k][t][t+1] += dp[i][j][k][cnt];...

2019-07-23 10:32:05 208

原创 HDU-6581 Vacation(思维题)2019暑假杭电多校第一场

题意:汤姆和杰瑞要去度假。他们现在在一条单行道上行驶,前面有几辆车。更具体地说,他们前面有n辆车。第i辆车的长度为l[i],车头距停车线为s[i],最大速度为v[i]。汤姆和杰瑞驾驶的车的长度为l[0],距停车线为s[0],最大速度为v[0]。然而,由于道路太窄,没有一辆车能比其他车领先。即使你的速度比前面的车快,你仍然只能以和前面的车一样的速度行驶。但如果不受前方车辆的影响,驾驶员将以最大速度行...

2019-07-22 17:55:08 201

原创 [kuangbin带你飞]专题十二 基础DP1

A - Max Sum Plus Plus (HDU 1024)题意:将n个数取m段且不相交,求m段数字和最大值;dp[i][j]:前i个数字分成j段的最大值。边界dp[0][0] = 0;dp[i][j] = max(maxx[j - 1] + a[i], dp[i-1][j] + a[i]);//maxx[j]代表前i个数取j段的最大值。#include<iostream&gt...

2019-07-19 21:39:39 242

原创 codeforces-1131D-Gourmet choice(并查集+拓扑排序)

题意:给你两个长度分别为 n,m的正整数序列 a,b。以矩阵形式给出所有ai​ 和 bj​(1≤i≤n,1≤j≤m) 的大小关系(>,<,=)。构造符合条件的 a 和 b序列,且 a,b 中最大元素尽量小。无解,输出No。思路:如果相等则放入一个并查集的集合,然后对于每个集合使用拓扑排序。ac代码:#include<bits/stdc++.h>using names...

2019-05-29 21:00:50 272

原创 codeforces-1131F-Asya And Kittens(并查集)

题意:n个数字给n-1对x,y;每次有x的块和有y的块合并且这两个块相邻。输出一个刚开始的序列时能合并完。题解一:并查集加vector对于并查集的每个集合保存在一个vector里面,模拟即可。但是需要注意2点:1.使用vector().swap( vt );来清空vector vt。不然在第八组超内存。2.在将一个vector压入另外一个vector 时将小的压入大的不然就交换一下2个ve...

2019-05-29 19:40:02 296

原创 codeforces 1153D Serval and Rooted Tree(思维)

题意:给一个n节点的树,有k个叶子结点,给每个叶子结点附上1到k的值,每个节点可以是他所有的子节点的最大值(第二行输入为1)或者最小值(0);问根节点1的最大值是多少;思路:数组d[i]保存节点i要浪费多少数字,(比如节点i有2个叶子结点,且节点i只能取他的子节点的最小值,则节点i只能取第二大的那个儿子,即浪费了一个数字);所以如果节点i为取最大值,d[i]=min(d[y])(y为所有i的儿...

2019-05-26 21:34:54 151

原创 codeforces1151E Number of Components(思维)

题意:n个节点的链,相邻节点有路,每个点一个权值,f(l,r)为权值在【l,r】的点的连通块数量求思路:求每个节点作为连通块的最右边的节点的贡献,区间【l,r】有连通块的最右边为a[i]则要满足条件,a[i]能满足区间[l,r],a[i+1]不能满足区间[l,r];就可以推出以下代码了; for(int i = 1; i <= n; i++) { if(...

2019-05-22 23:01:27 409

原创 HDU 6534 Chika and Friendly Pairs(树状数组,莫队,离散化)

在莫队插入数字x时查询区间(x+k,x-k)之间有多少个,删除同理。#include<bits/stdc++.h>using namespace std;const int maxn = 3e4;const int maxm = 3e4;const int MAX = 1e5;int s[maxn], ans[maxm], cnt[MAX], lsh[MAX];int C...

2019-05-21 22:55:26 302

原创 基础莫队练习

vj练习网址A - D-query#include<bits/stdc++.h>using namespace std;const int maxn = 3e4 + 50;const int maxm = 2e5 + 50;const int MAX = 1e6 + 50;int s[maxn], ans[maxm], cnt[MAX];int unit, num;s...

2019-05-14 21:34:39 145

原创 CodeForces 1096C Polygon for the Angle

题意:给一个角度(整数),问你最小的正几边形的三个点可以连出来。思路:1.n边形内角和 180*(n-2);2.正n边形内角 180*(n-2)/n;(即该题n变形最大的角)3.正n边形三个点最小的角度为180*(n-2)/(n*(n-2))=(180/n);且任意三点的角度是该角度的倍数;所以从i=3开始枚举判断给出的角度是否为(180/i)的倍数。并且小于180*(i-2)/i;#...

2019-05-14 21:24:26 186

原创 DP训练(不想写博客的题目)

HDU 2196 Computer(树形dp经典)题意:给出一棵树,求离每个节点最远的点的距离;code:#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 1e4 + 50;struct node { int nex, dis; };vecto...

2019-04-13 14:29:56 201

原创 DP训练Codeforces

滴滴滴滴813D:题意:给出长度为n nn的序列,从中找出2 22个子序列,满足每个子序列相邻两数之间要么相差1 11,要么同余于7 77,求这两个子序列的最长长度和。#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ul;const int...

2019-04-06 20:01:52 412

原创 2019湖南多校第4场 D(1410): Hidden Anagrams

题意:给2个字符串,在2个串中找出最长的连续子串满足重新排列后相等。思路:对于每个长度[1,min(len1,len2)],先求出str1的该长度的所有子串的hash值,放入set里面。(即使hash值超了long long 也没关系,只要能根据计算得到那个值就行了,就算是超了,每个子串的hash值也是(基本)唯一的。)然后找str2的该长度的所有子串的hash值如果能在set里面找到说明找到了...

2019-04-01 00:05:24 174

原创 poj 3093 Margaritas on the River Walk(背包)

题意:物品数n和背包容量v,以及n个物品的体积,问有多少种方案是再也装不下其他物品的;思路:按体积从小到大排序,枚举每个物品作为刚好不能再放下的情况。对于每个物品刚好放不下的情况,肯定是因为拿了比它小的所有物品,因为对于每种方案你判断它是不是一种答案,是通过判断该种方案没有拿的物品里面最小的物品还能不能再拿。能拿则不是答案,不能拿的话其他的物品肯定也不能拿。所以dp数组为 dp[拿到...

2019-03-29 11:41:23 183

原创 POJ 1179 Polygon 区间DP (详细题解)

POJ 1179 Polygon 组合DP欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入...

2019-03-27 18:19:01 226

原创 Gym - 102001J - Future Generation (DP)

题意:给你N(1≤N≤15) 个字串S1,…,SN(1≤|Si|≤15)。现在请你对于每一个字符串Si,找出一个非空的子序列Ai,使得A1,A2,…,AN依照字典顺序是严格递增的。输出最大的|A1|+|A2|+⋯+|AN|之值。若无解的话要输出-1。题解:对于每个字符串有 1<<|Si| 个子串,最多是2的十五次方(32 768),因为数据不大,所以直接暴力求所...

2019-03-26 19:26:06 691

原创 codeforces 946D Timetable(DP)

题意:一个星期有n天,每天m小时,一小时一节课,每天一个01字符串0代表没课,1代表有课,一个星期可以翘k节课,一天在学校的时间为你去上的第一节课到最后一节课,问你一个星期最少的在学校待的时间。思路:对于每天,暴力出数组t,t[i]=x代表该天上i小时课最少x小时在学校。就可以dp出dp数组。dp[i]=x代表这个星期上i节课最少多少小时在学校。转移方程 dp[i] = min(dp[i]...

2019-03-23 02:15:53 219

原创 HDU - 3535 AreYouBusy(DP)

题意:(把题目意思改为背包解释了)n组物品,一个大小为T的背包。对于每组物品,有物品的数量m,和类型s,s=0意思为该组最少放一个物品到背包。s=1意思为最多放一件到背包。s=2意思为随便放(但是每个物品只能放一次)。思路:0类型时就是一个(HDU - 3033)题目,建议先去写这个题;将dp初始化为-INF,dp[0]的所有数初始化为0,因为可以选多个,就把那个典型分组背包的第二重...

2019-03-22 20:52:29 269

原创 POJ3666 Making the Grade(DP)

题意:给定长度为n的序列a,构造长度为n的序列b,满足b单调;最小化思路:在满足S最小化的情况下,一定存在一种构造序列B的方案,使得B中的数值都在A中出现过;dp[i][j]表示完成前i个数的构造,bi=j时,S的最小值。 dp[i][j] = min{dp[i-1][k]+ abs(ai-j) }(k=0->j);因为一定是a里面出现的数字,可以进行离散化,另外决策集合只增加不减少...

2019-03-22 14:24:36 201

原创 HDU - 5534 Partial Tree(dp)

题意:给你n个节点,连成一棵树,如果节点的度为i,则该节点的价值为f【i】。求树的最大价值。思路:首先该树的总度数为2*(n-1),所以刚开始想到了二维dp,dp[i][j]为将j个度分给i个节点。最后dp[n][2*n-2]为答案,但是这样的时间复杂度为n的立方(超时)。看了题解才知道既然每个节点的度数最小是1,所以不妨先给每个节点分配一个节点,题目就变成了将n-2随意分配。就是算法导论的钢...

2019-03-20 18:29:04 150

原创 CodeForces - 366C Dima and Salad(dp)

C. Dima and Salad题意:给n个水果和k值,每个水果有a和b两种属性。选一些水果使suma比sumb为k。求max suma;题解:求出每个水果的x = a-b*k。当选中的水果的x值之和为0时,就是比值为k的条件,因此题目就转换为01满背包问题,dp【0】就是答案。a就是每个水果的价值。方法1:分别dp x值为正数和负数时,dp[j+x[i]] = max(dp[...

2019-03-20 01:07:13 269

原创 Robberies HDU - 2955(dp)

题意:你去抢银行,给你n个银行,每个银行有被抓的概率和能抢到的钱,给你一个最大的概率,当你被抓的总概率小于这个概率时可以认为你是安全的。。问你在安全的情况下能抢的最多的钱是多少。题解:刚开始想成最简单的背包问题,因为体积(概率)是浮点数,所以疯狂将概率*100,*1000.等等来直接计算,发现不行。题目的思路是dp[i] = x; i 为抢到的钱,x为不被抓的最大概率。(我因为没有仔细理解题目...

2019-03-19 20:47:15 108

原创 2019湖南多校第一场 J Jumbled String(思维)

DescriptionRecall that asubsequenceof a string is any string obtained by removing some subset of characters from the string, for instance "string", "sing", "i" and "sg" are all subsequences of "st...

2019-03-11 20:52:08 256 1

原创 poj 1845 Sumdiv(分治递归,数论,快速幂)

Sumdiv题意:对A的B次方的所有约数之和mod 9901思路:对A分解质因数 A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn)其中pi均为素数; 所以 A^B = p1^(k1*B) * p2^(k2*B) *...* pn^(kn*B);根据乘法分配律,A^B的所有约数之和为[1+p1+p1^2+...+p1^(a1*B)]...

2019-03-07 18:22:16 161

原创 L3-002 特殊堆栈 (树状数组+二分)

题目链接L3-002特殊堆栈(30 分)堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。输入格式:输入的第一行是正整...

2019-02-27 21:18:19 677

空空如也

空空如也

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

TA关注的人

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