自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cutlery1137的博客

IT'S NOT ENOUGH!

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

原创 html+css+JavaScript实现导航栏

无下拉菜单的导航栏<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * {

2020-11-28 22:52:17 1855 2

原创 Servlet实现页面跳转

请求重定向web服务器接收到客户端的请求后,可能由于某些条件限制,不能访问当前请求url所指向的web资源,而是指定了一个新的资源路径,让客户端重新发送请求。地址栏会变成重定向之后页面的url。方法一:response对象的setHeader()方法//2秒后跳转到指定的urlresponse.setHeader("Refresh", "2;url=https://www.baidu.com");方法二:sendRedirect()方法response.sendRedirect("https:

2020-11-28 00:33:42 1585

原创 ServletConfig和ServletContext

ServletConfig接口Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装在一个ServletConfig对象中,通过调用init(ServletConfig config)方法将ServletConfig对象传递给Servlet。常用方法:String getInitParameter(String name)//根据初始化参数名返回对应的初始化参数值Enumeration getInitParameterNames() //返回一个Enumeration对象,其中包

2020-11-27 21:39:52 217

原创 洛谷P1087 FBI树【二叉树遍历】

题目链接:P1087 FBI树程序说明:后序遍历+判断条件,注意indexOf()可以判断子串是否存在(一开始没想到用indexOf)代码如下:import java.util.*;import java.io.*;public class Main { public static void main(String[] args) { String s = new String(); int n; Scanner in = new Sca

2020-11-12 12:48:49 265 1

原创 蓝桥杯 机器人塔【DFS】

X星球的机器人表演拉拉队有两种服装,A和B。他们这次表演的是搭机器人塔。类似: A B B A B A A A B B B B B A BA B A B B A队内的组塔规则是:A 只能站在 AA 或 BB 的肩上。B 只能站在 AB 或 BA 的肩上。你的任务是帮助拉拉队计算一下,在给定A与B的人数时,可以组成多少种花样的塔。输入一行两个整数 M 和 N,空格分开(0< M,N<500),分别表示A、B的人数,保证人数合理性。要求输出一个整数,

2020-11-10 23:07:28 759

原创 蓝桥杯 调手表【BFS】

小明买了块高端大气上档次的电子手表,他正准备调时间呢。在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 n - 1,按一次后会变成 0 。作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时间多1,则要按 n - 1 次加一按钮才能调回正确时间。小明想,如果手表可以再添加一个按钮,表示把当前的数加 k 该多

2020-11-10 20:14:27 216

原创 第十届蓝桥杯国赛C/C++ B组第2题【01背包】

2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种?注意:分解方案不考虑顺序,如2+2017=2019和2017+2=2019属于同一种方案。程序说明:分解成若干个,不是分解成两个,注意看题。f[i][j] 表示从前 i 个数中选,相加等于 j 的所有方案数。类似于01背包问题,只不过存的是方案数。如果j < prime[i],即加上第 i 个质数就会超出背包的容量,则f[i][j] = f[i - 1][j]如果j >= prime[i],即加上第 i 个质数不会

2020-11-07 17:26:42 340 3

原创 洛谷P1734 最大约数和【01背包】

题目链接:P1734 最大约数和代码如下:#include <iostream>using namespace std;const int N = 1010;int n, v[N], f[N][N], w[N];int main() { cin>>n; //预处理每个数的约数和 for(int i = 1; i <= n; i++) for(int j = 1; j < i; j++) if

2020-11-07 15:29:58 169

原创 洛谷P1516 青蛙的约会【扩展欧几里得算法】

题目链接:程序说明:问题转化为求解线性同余方程:x + k * m ≡ y + k * n (mod L)方程等价于:x + k * m = z * L + y + k * n合并同类项,化简后得:k * (n − m) + z * L = x - y (将负号化为正号方便处理)设 a = n - m,b = L,c = x - y,即求线性方程:a * k + b * z = c 的解,扩展欧几里得求出整数解k,再扩大 c / gcd(a,b)倍即为方程的通解。需要注意的地方有两点:n - m

2020-11-07 12:45:15 237

原创 洛谷P1194 买礼物【最小生成树】

题目链接:P1194 买礼物程序说明:优惠大于0时建边,跑一边kruskal求最小生成树即可。需要注意的地方是,有可能优惠后的价格比原价还高。。因此需要加一个判断条件。代码如下:#include <iostream>#include <algorithm>using namespace std;const int M = 510;struct Edge { int a, b, w; bool operator < (const Edge &a)

2020-11-05 13:12:27 241

原创 洛谷P1403 [AHOI2005]约数研究【数论】

题目链接:P1403 [AHOI2005]约数研究程序说明:[1,n]的所有整数中p的倍数的个数:⌊\lfloor⌊np\frac{n}{p}pn​⌋\rfloor⌋代码如下:#include <iostream>using namespace std;int n, res;int main() { cin>>n; for(int i = 1; i <= n; i++) ans += n / i; cout<<res

2020-11-04 21:18:14 250

原创 洛谷P2071 座位安排【二分图最大匹配】

题目链接:P2071 座位安排程序说明:可以把右边的一列座位放在左边一列的后面,第 i 排左边的编号为 i ,右边的编号为 i + n。二分图的最大匹配可以用匈牙利算法求解。注意每个点连四条边,数组要开四倍大小。代码如下:#include <iostream>#include <cstring>using namespace std;const int N = 10100, M = 2 * N;int h[N], e[M], ne[M], idx, res;in

2020-11-04 15:30:51 198

原创 洛谷P1330 封锁阳光大学【二分图】

题目链接:P1330 封锁阳光大学程序说明:题意为判断无向图是否为二分图,可以用dfs染色。-1表示没访问过,0和1表示将顶点染成两种不同的颜色,如果一条边相邻的两个顶点被染成了相同的颜色,则可以判断出不是二分图。如果是二分图,需要记录1和0的个数,较小者即为答案。代码如下:#include <iostream>#include <cstring>using namespace std;const int N = 10010, M = 100010;int h[N

2020-11-03 21:59:17 143

原创 洛谷P1195 口袋的天空【最小生成树】

题目链接:P1195 口袋的天空程序说明:最小生成树的裸题,代码如下:#include <iostream>#include <algorithm>using namespace std;const int N = 1010, M = 10010;int n, m, k, p[N];struct Edge { int a, b, w; bool operator < (const Edge &W) const { return w <

2020-11-03 16:36:12 167

原创 洛谷P1144 最短路计数【最短路】

题目链接:P1144 最短路计数程序说明:如果搜索到的点到起点的距离等于当前点到起点的距离加上这两点间的那条边的距离,那么我们就将搜索到的点的路径数加上当前点的路径数。如果我们更新了搜索到的点到起点的最短距离,那么我们将到达改点的路径数改为当前点的路径数。(参考P1608 路径统计 题解)因此将spfa的松弛操作修改为://cnt[]记录路径数if(dist[j] > dist[t] + 1) { dist[j] = dist[t] + 1; cnt[j] = cnt[t]; }

2020-11-03 11:30:48 187

原创 DFS判断有向图是否存在环

st数组记录每个点的状态:0表示没访问过,1表示访问过,2表示与该点相邻的点都被访问过。dfs深搜如果遇到被标记成1的点,就说明有环。#include <iostream>using namespace std;const int N = 1010;int g[N][N], n, m, st[N], flag = 1;void dfs(int k) { st[k] = 1; for(int i = 1; i <= n; i++) { if(g[k][i]) { //和

2020-11-02 20:50:19 2990

原创 洛谷P1396 营救【最小生成树】【最短路】

题目链接:P1396 营救程序说明:法一:kruskal求最小生成树,当s和t连通时,此时边的权值w就是题中要求的最小的最大值(因为边是从小到大排序的)。法二:spfa求最短路。分析可知要让每段路的权值都尽可能小,所得到的路径不一定是从s到t的最短路,但是可以利用最短路的模板来解决:取两条边权值的较大者,如果比第三条边小,则更新。只需将spfa中的松弛操作:if(dist[j] > dist[t] + w[i]) dist[j] = dist[t] + w[i];改为:int t

2020-11-02 16:40:49 463

原创 洛谷P1226 【模板】快速幂||取余运算

题目链接:P1226 【模板】快速幂||取余运算程序说明:注意开long long。res最后还要再模一次k,因为指数有可能等于0。代码如下:#include <iostream>#include <cstdio>using namespace std;typedef long long LL;LL fun(LL b, LL p, LL k) { LL res = 1; while(p) { if(p & 1) res =

2020-11-01 23:35:52 122

原创 洛谷P1629 邮递员送信【最短路】

题目链接:P1629 邮递员送信程序说明:注意每次只能拿一件物品,送到目的地后必须返回起点才能送下一件。因此可以将题目转化为:从1号点到其余各点的最短路,再加上其余各点到1号点的最短路即为正确答案。求多个点到1号点的最短路,可以将邻接矩阵坐标互换(即将有向图反转)。代码如下:#include <iostream>#include <cstring>using namespace std;const int N = 1010, M = 100010;int g[N

2020-11-01 21:54:30 410

原创 洛谷P1525 关押罪犯【并查集】【二分图】

题目链接:P1525 关押罪犯程序说明:贪心思想,想要将怨气值最小化,就要优先处理怨气值大的两个顶点,将他们分别放在不同的集合。enemy数组记录敌人,每次把与自己敌对的人放进一个集合。代码如下:#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int N = 20010, M = 100010;//enemy[i]表示i的敌人 int

2020-11-01 15:35:40 211

原创 AcWing 845. 八数码【BFS】

题目链接:845. 八数码 在一个3×3的网格中,1~8这8个数字和一个“x”恰好不重不漏地分布在这3×3的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把“x”与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让“x”先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:1 2 3 1 2 3 1 2 3 1 2 3

2020-11-01 11:09:40 128

原创 洛谷P1536 村村通【并查集】

题目链接:P1536 村村通程序说明:n个集合需要用n - 1条线连接起来,因此合并完集合后,循环遍历所有点,记录集合的总数,减一则为正确答案代码如下:#include <iostream>using namespace std;const int N = 1010;int p[N], n, m;int find(int x) { if(p[x] != x) p[x] = find(p[x]); return p[x];}int main() {

2020-11-01 10:10:22 276

空空如也

空空如也

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

TA关注的人

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