自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 题解 [USACO10NOV]Buying Feed G

看完这到题,很容易想到用背包做,即设状态fi,jf_{i,j}fi,j​表示前iii个商店一共带了jjj吨货的最小花费,只需要先把商店的位置排个序,就可以直接枚举了,那么就可以得到状态转移方程{fi,j=fi−1,j+j∗j∗(Xi−Xi−1),u=0fi,j=min0≤j≤k,1≤u≤Fi(fi,j−u+u∗Ci)\begin{cases} f_{i,j}=f_{i-1,j}+j*j*(X_i-X_{i-1}),u=0\\ f_{i,j}= \underset{0\le j\le k,1\le u\le

2020-12-13 20:38:58 162

原创 [CQOI2017]小Q的棋盘

看到这道题,很容易想到是一道树型DP,那么该如何做?首先我们可以先这样定义状态,fi,jf_{i,j}fi,j​表示以iii为根节点,向下走jjj步最多能经过多少点,但很明显,只是这样是不行的,所以我们再加一维,第三维为0表示不会到根节点,第三维为1表示需要回到根节点,那么就可以得出状态转移方程{fi,j,0=max(fi,j−t,0+fv,t−2,1,fi,j−t,1+fv,t−1,0)fi,j,1=max(fi,j−t,1+fv,t−2,1)\begin{cases}f_{i,j,0}=max(f_

2020-12-07 22:02:12 149

原创 NOIP游记

Day -1考试前一天的前一天晚上开始停课,老老实实做了几道DP题(逃过了两节英语课 ),Day 0想着要放假了,再加上考试即将到来,一上午就一道题也没做,但是回教室看到桌子上的一堆卷子,毅然决定不带回去做。下午四点的火车,回到家休息了一会儿就上路了。到成都时已经6点了,本想会酒店直接点外卖,但老师硬是没把房卡发下来带我们去吃饭。8点钟回到酒店,在老师交代了一些事过后回到了自己的房间,由于偷偷带了电脑,在收了手机过后就开始玩电脑了,但是还是自觉地在十点中睡了。Day 1早上6点50起床,简单地吃了

2020-12-06 15:41:42 210

原创 题解 UVA1630 串折叠 Folding

题目描述折叠的定义如下:一个字符串可以看成它自身的折叠。记作S = SX(S)是X(X>1)个S连接在一起的串的折叠。记作X(S) = SSSS…S(X个S)。如果A = A’, B = B’,则AB = A’B’ 例如,因为3(A) = AAA, 2(B) = BB,所以3(A)C2(B) = AAACBB,而2(3(A)C)2(B) = AAACAAACBB给一个字符串,求它的最短折叠。例如AAAAAAAAAABABABCCD的最短折叠为:9(A)3(AB)CCD。输入格式仅一行,即

2020-11-29 20:24:21 243

原创 平衡树 模板

例题P3369 【模板】普通平衡树概念: 平衡树是二叉搜索树和堆合并构成的数据结构,它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。性质:对于每一个节点,满足它大于左儿子里的每一个节点,小于右儿子的每一个节点,即树的中序遍历为有序序列对于一个平衡树,它可以支持的操作有1:插入一个值2:删除一个值3:查询一个 xxx 的排名4:查询排名为 xxx 的值5:查询严格小于 xxx 的最大值6:查询严格大于 xxx 的最小值时间复杂度:不论哪一种

2020-11-16 20:00:34 470

原创 高斯消元

例题P2455 [SDOI2006]线性方程组高斯消元做法首先声明一个变量存当前已经确定的方程组的数量1.枚举每一列2.找出每一列绝对值最大的一行3.将该行放到最上面4.将该行第一个系数变为13.将该列下面所有行的值变为0代码实现sq[i][j]sq[i][j]sq[i][j]存的为第i行第j个系数找出每一列绝对值最大的一行for (int i = r; i <= n;i++) if(fabs(sq[i][j])>fabs(sq[t][j])) t = i;

2020-08-28 07:59:30 135

原创 扩展欧几里得定理

裴蜀定理:对于任意x,y,若满足k1x+k2y=dk_1x+k_2y=dk1​x+k2​y=d有解,则d一定为k1,k2k_1,k_2k1​,k2​的最大公约数证明:∵d为x,yx,yx,y的最大公约数∴x,y一定为d的倍数∴k1x+k2yk_1x+k_2yk1​x+k2​y也一定为d的倍数,则一定存在k1,k2k_1,k_2k1​,k2​为方程的一组解通过欧几里得算法递归来求k1,k2k_1,k_2k1​,k2​核心为gcd(a,b)=gcd(b,a%b)若满足k1x+k2y=dk_1x+k

2020-08-27 15:51:20 168

原创 扩展中国剩余定理(EXCRT)

例题P4777 【模板】扩展中国剩余定理(EXCRT)对于每一个x≡b1(mod  a1)x≡ b_1(\mod a_1)x≡b1​(moda1​),可以设k为x/a1x/a_1x/a1​的商,易得an∗kn+bn=xa_n*k_n+b_n=xan​∗kn​+bn​=x。对于前两个式子{a1∗k1+b1=xa2∗k2+b2=x\begin{cases}a_1*k_1+b_1=x \\a_2*k_2+b_2=x\end{cases}{a1​∗k1​+b1​=xa2​∗k2​+b2​=x​可得

2020-08-26 21:59:54 270 1

原创 LCA(最近公共祖先)

例题给定一颗多叉树,求两个点的最近公共祖先dfs遍历预处理出每个节点的父亲信息,存在fa[x][0]中。fa[x][j]为x点向上走2^i步所到的节点depth[x]为x点所在的深度void dfs(int x,int f){ v[x] = 1; dpth[x] = dpth[f] + 1; fa[x][0] = f; for (int i = 1; i <= t;i++) fa[x][i] = fa[fa[x][i - 1]][i - 1]

2020-08-19 15:32:48 151

原创 K短路

次短路目前知道的方法有:1.跑一遍最短路,一次枚举删边 2.在跑最短路时同时记录最短路与次短路 3.起点和终点分别跑一次最短路,枚举边来替换最短路上的边例题P1491 集合位置#include<cstdio>#include<cmath>#include<queue>#include<cstring>using namespace std;typedef pair<double, int> PDI;const int INF =

2020-08-15 09:07:06 197

原创 深度优先搜索的优化与技巧

迭代加深DFS在一些问题模型中可能无限扩展,如8数码问题,无限扩展会有些问题,增加深度限制:假设目标状态所处深度不超过某阈值。人为设定,当搜索深度到达阈值时直接剪枝,不再往下搜索。Iterative Deepening Depth - First Search适用:求最优/深度最低/步数最少解,当问题深度和广度都大的时候方式:不断放宽迭代深度限制第一次找到的目标状态即为最优解。迭代加深是深搜和广搜的结合,普通深搜求最优解必须遍历所有状态打擂台得到,迭代加深后,第一次遇见目标状态即可得到最优解

2020-08-08 20:18:57 1024

原创 广度优先搜索的优化与技巧

广搜例题:P1397 八数码难题普通BFS双向BFS

2020-08-08 20:01:39 947

原创 题解 P1064 【金明的预算方案】

大致思路这个题给了主件,附件,很明显按照主件来分组,然后再转化为背包问题各变量int v[65],p[65],q[65],ty[65][65],dp[200005],temp[200005];v为每个物品价格,p为重要度,q为是否为主件或从属主件的编号,ty为分的组,dp储存的状态,temp为暂存数组分组部分代码 for(int i=1;i<=m;i++) { cin>>v[i]>>p[i]>>q[i]; if(q[i]!=0) ty[

2020-08-07 11:45:41 164

原创 数论

查找int find(int x){ if(p[x]!=x) p[x]=x; return p[x];}赋值void add(int a,int b){ int a1=find(a),b1=find(b); if(a1!=b1) p[a]=b;}

2020-08-07 11:45:13 97

原创 图论(Dij,SPFA,Folyd,Prim,Kruskal算法)

图论 模板Dijstra算法#include<iostream>#include<cstring>using namespace std;int sq[505][505],dist[505],n,m,st[505];int dijstla(){ memset(dist, 0x3f, sizeof(dist)); dist[1] = 0; for (int i = 1; i <= n; i++) { int k = -1; for (int j =

2020-08-07 11:44:36 198

原创 题解 P1825 【[USACO11OPEN]玉米田迷宫Corn Maze】

这道题就是一道简单的搜索题,用广搜就可以做出来,如果没有传送门,就往四个方向走,如果遇到传送门,就直接传送到另一个传送门,但是还有一些比较坑的点。例如###=###....####A###@...########A...#######就要经过两次传送门知道了这个,这到题就比较简单了代码如下#include<iostream>#include<queue>using namespace std;char square[305][305];//定义一个数

2020-08-07 11:43:41 217

原创 题解 P1443 【马的遍历】

此题就是广度优先搜索题再稍加修改即可,再队列不为空时,一直通过第一个元素扩展出其他点根据广搜的性质,第一个被存入队列的点的步数一定是最小的步数。那么就可以使用STL自带的队列queue首先介绍一下queue队列头文件#include push(X)将x放入对头pop()取出对头元素front()访问对头元素empty()判断队列是否为空代码如下#include<iostream>#include<queue>#include<iomanip>us

2020-08-07 11:43:09 292

原创 模板 快速幂(递归)

普通(原理自行理解)int Fast_power(int a,int b)//a:底数,b:指数 { int s=1,base=a; while(b!=0) { if(b&1) s*=base; base*=base; b>>=1; } return s;}递归(同上)int pro(int a,int b)//同上{ if(b==1) return a; else { if(b%2==0) { int x=pro(a,b/

2020-08-07 11:42:36 105

原创 模板 快速排序/归并排序

快速排序(升序)void qsort(int l,int r,int a[]){ int l1=l,l2=r; int mid=a[(l+r)/2];//找到中间的数 do { while(a[l1]<mid) l1++;//找到不符合要求的数,退出 while(a[l2]>mid) l2--; if(l1<l2)//交换 { swap(a[l1],a[l2]); l1++;l2--; } }while(l1<l2); if(l1&lt

2020-08-07 11:41:51 231

原创 题解 P1538 【迎春舞会之数字舞蹈】

这道题可以通过直接一行一行输出大致可以将数字分为五部分顶部,顶部下方,中部,中部下方,底部代码char top[10]={'-',' ','-','-',' ','-','-','-','-','-'};//如果有就为横线,没有就为空格,如“1”和“0”char left_top[10]={'|',' ',' ',' ','|','|','|',' ','|','|'};char right_top[10]={'|','|','|','|','|',' ',' ','|','|','|'};

2020-08-07 11:41:04 193

原创 题解 P1056 【排座椅】

蒟蒻写代码,请多多谅解这道题稍微思考一下就可以做出来由题可知,每行每列可以隔开的同学不会重复,所以只要将每行每列可以隔开的同学的对数统计出来,再从大到小排序,最后输出即可。代码如下#include<iostream>#include<algorithm>using namespace std;int ans_row[2005],ans_cul[2005];//储存每行每列可以隔开的同学struct pos_row{ int x1 time;}row[2005]

2020-08-07 11:39:47 176

原创 题解 P4924 【[1007]魔法少女小Scarlet】

第一次发布题解,请多多谅解这道题直接模拟就可以做出来了。首先是顺时针旋转90°部分如图一个3*3的矩阵123456789顺时针旋转过后741852963由此可以看出第a行数字与第a列数字有关系所以可以得出以下代码void spin(int x,int y,int r){ for(int i=x-r;i<=x+r;i++) { for(int k=y-r;k<=y+r;k++) t

2020-08-07 11:38:56 231

空空如也

空空如也

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

TA关注的人

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