自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 工作总结1

android开发

2022-08-24 20:54:45 567 1

原创 剑指offer刷题06/22

java,剑指offer

2022-06-22 22:26:59 119

原创 java中封装数据库操作的类

*1.查询多个记录// 查询多个记录 protected Vector selectSomeNote(String sql) { Vector<Vector<Object>> vector = new Vector<Vector<Object>>();// 创建结果集向量 Connection conn = JDBC.getConnection();// 获得数据库连接 try { Statement stmt = conn.create

2022-02-10 20:59:49 1233

原创 Java中ImageIcon类的应用

ImageIcon类的应用就是在swing面板中可以显示图片package Frame;import java.awt.Container;import java.net.URL;import javax.swing.*;public class ImageIcon extends JFrame{ public ImageIcon() { setBounds(100,100,400,300); setDefaultCloseOperation(EXIT_ON_CLOSE);

2022-02-06 19:28:12 5029 1

原创 dfs总结2

这是一道关于全排列的dfs简单题,dfs关键在于回溯#include<iostream>#include<stdlib.h> using namespace std;int a[10];//存储数组int v[10];//标记数组void dfs(int n){ if(n==9)//终止条件 cout<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "&lt.

2022-01-21 18:04:19 318 2

原创 01背包进阶版

先来复习一下01背包一、01背包问题01背包字面意思来看0就是不拿,1就是拿,且每次只能拿一个物品放入背包。两种做法:1.开二维数组 2.开一维数组1.开二维数组的状态方程: for(i=1;i<=n;i++) { for(j=1;j<=weight;j++) { if(m[i]>j)//装不下 sum[i][j]=sum[i-1][j]; else//能装下 .

2022-01-11 21:34:03 312

原创 搜索总结1

首先需要整理出一个整体思路,第一需要一个标记书本是否发给人的一个标记数组flag[],其次还需要一个二维数组j记录学生喜欢的是哪几本书的二维数组like[i][j],表示的是第i个人喜欢第j本书。#include<bits/stdc++.h>using namespace std;int s,x;bool flag[50],like[50][50];//like[i][j]表示第i个人喜欢第j本书void dfs(int i){ for(int j=1;j<=x;.

2022-01-10 20:55:39 312

原创 如何实现一直读入数据,直到换行时终止

如何实现可以一直读入数据,直到换行时终止int a;while(scanf("%d",&a)!=EOF)

2022-01-07 10:15:23 406

原创 最短路克鲁斯卡尔算法

克鲁斯卡尔算法算法链接#include<bits/stdc++.h>using namespace std;struct node{ int x,y,w;}a[200002];int f[200002];bool cmp(node xx,node yy){//结构体排序 return xx.w<yy.w;}int find(int x){//并查集说白了就是找父结点的过程,同一个父节点即同一个区间 if(x==f[x]) return x; f[x]

2021-08-17 09:28:20 108

原创 地杰斯特拉算法2

#include<bits/stdc++.h>const int MaxN = 100010, MaxM = 500010;struct edge{ int to, dis, next;};edge e[MaxM];int head[MaxN], dis[MaxN], cnt;bool vis[MaxN];int n, m, s;inline void add_edge( int u, int v, int d ){ cnt++; e[cnt.

2021-08-14 15:13:00 94

原创 dfs总结之如何避免重复搜索问题

看完题目之后,我们先来看一段代码#include<bits/stdc++.h> //非常稳健的万能头using namespace std;long long int s[20],b[20],f[20]; //s表示酸度,b表示甜度,f记录是否查找long long int n,j,c=1,y=0,ans=99999999999; //ans记录最小值void dfs(int x){ if(x>n) //最多选n种调料,超过不做操作 { } else {.

2021-08-04 22:01:49 559

原创 图论dijkstra算法1

这里直接借助一道题目来理解这个算法,下面先直接上代码#include<iostream>using namespace std;const int maxx=6300*2,ooxx=2147483647;int to[maxx],next[maxx],last[maxx],w[maxx],cut,d[maxx],f[maxx],visit,minn,t;int n,m,s,a,b,c;bool v[maxx];void add(int a,int b,int c){ to.

2021-08-03 20:31:41 82

原创 dp基础总结1

#include<iostream>#include<cmath>using namespace std;int a[201][201],i,j,n,dp[201];int main(){ cin>>n; for(i=1;i<n;i++){ for(j=i+1;j<=n;j++) cin>>a[i][j]; } for(int i=2;i<=n;i++) dp[i]=1e9;//这里从dp[2]到dp[n]之间更新.

2021-07-21 22:41:22 57

原创 01背包问题基础总结

01背包问题无非就是两种写法1.二维数组形式dp[i][v]表示前i件物品恰好装入容量为v的背包中所能获得的最大价值对第i件物品的选择策略,有两种策略1.不放第i件物品,那么转化为前i-1件物品恰好装入容量为v的背包中所能获得的最大价值,即dp[i-1][v]2.放第i件物品,那么问题转化为前i-1件物品恰好装入容量为v-w[i]的背包中所能获得的最大价值,即dp[i-1][v-w[i]]+c[i]关键代码如下:for(int i=1;i<=n;i++) for(int j=w[

2021-07-21 09:18:23 148

原创 dfs总结第二弹

先上一段裸的dfs代码#include<bits/stdc++.h>using namespace std;int n,m;//n是该矩形的边长,m是询问次数int matrix[1010][1010];bool inq[1010][1010];int X[4]={0,0,1,-1};int Y[4]={1,-1,0,0};int ans;void read(){ for(int i=1;i<=n;i++) { for(int j=1;.

2021-07-12 15:01:06 165

原创 bfs,dfs整理总结第一弹

这道题本质上就是一个水塘问题BFS方法#include<cstdio>#include<queue>#include<iostream>using namespace std;const int maxn =100;struct node{int x,y;}Node;int matrix[maxn][maxn];bool inq[maxn][maxn] ;int X[4]={0,0,1,-1};int Y[4]={1,-1,0,0};i.

2021-07-12 09:11:23 58

原创 dp之基

有些题表面上看是一道字符串问题,实际却是一道dp.我们可以知道,在每一个位置有两种状态,i表示a串下标,j表示b串下标。1、a[i]==b[i] --> dp[i][j]=dp[i-1][j-1]+12、a[i]!=b[j]–> dp[i][j]=max(dp[i][j-1],dp[i-1][j]所以判断每个位置的状态,DP求解就可以了。思路确实很简单,下面我们直接上代码#include<bits/stdc++.h>using namespace std;strin.

2021-03-04 15:48:36 135 1

原创 关于putchar的一个蛮有用的东西

问题引入:题目要求对重复性输入固定一行字符中的某一个#include<bits/stdc++.h>using namespace std;int main(){ putchar("abcdefgh"[5]); return 0;}这时的结果就会输出的是 f ,相当于是这个数组下标为5所储存的字符,以此类推,有时候还是蛮有用的。具体问题可以去看这一题洛谷P3370 【模板】字符串哈希...

2021-03-04 15:33:35 123 1

原创 计算组合数

计算组合数的一个函数int c(int m,int n)//组合数计算,计算的是从n个里面取m个 { if(m==0)return 1; int mut=1; for(int i=n;i>n-m;i--)mut*=i; for(int i=m;i>1;i--)mut/=i; return mut;}

2021-03-02 21:06:41 90

原创 优先队列总结1

优先队列的两份模板1.大的数排在前面#define pii pair<int ,int>priority_queue< pii,vector<pii> >q;q.push(pii(a[i],i));q.top().first//这是第一个数q.top().second//这是第二个数2.小的数优先#define pii pair<int ,int>priority_queue< pii,vector<pii>,great

2021-02-06 10:33:43 658

原创 树形结构dfs初体验

题目读的有点难受,先把他翻译一下大概就是这个意思,0号是祖师爷,下面这些都是他徒子徒孙,其中旁边标有数字的是悟道者,现在就是求这些悟道者的功力和。显然这种结构我们要使用dfs,下面直接上代码吧#include <iostream>#include <stdio.h>#include<algorithm>#include<cstring>#include <vector>using namespace std;vector&l.

2021-01-28 16:04:43 134

原创 2021/01/24一道动态规划水题

这种题目我在做的时候现阶段总会存在一个问题就是思路不够明确,妄想通过贪心和分类讨论解决所有问题,但是对于这些题目复杂的情况来说这些事非常困难的。所以还是多多训练自己dp的思路。首先一个显而易见的结论是在大多数情况下,在魔法值允许的情况下,一定是越多使用闪现越好,这就是一个简单的贪心思想,但是也不能排除有特殊情况会导致结果存在偏差。那么就需要二次遍历,对部分值进行更新,思路大概就是这样,下面直接上代码#include<cstdio>const int maxt=300000+50;usi.

2021-01-24 21:40:46 66

原创 2021/01/24弗洛伊德算法&高精度

首先通过初步阅读题目,就可以发现这是一个关于排列组合的问题,但仔细研读以及通过阅读题解后发现,这里存在一个隐含的条件,例如1->2,2->3,那么1也可以通过两次变化变成3,这里就可以初步发现这个问题实际已经转化成了一个图论的问题,翻译一下就是有若干个城市,现在已知若干条道路可以将其中的一些城市连接起来,问你其中全部可以互相到达的城市,这里就可以用到弗洛伊德算法。`inline void floyd() { //弗洛伊德 for (int k = 0;k <= 9;k++) .

2021-01-24 19:40:05 69

原创 SCUEC 20/11/12前缀差分之一通乱讲

在了解二维前缀和之前,我们首先需要了解一下什么是前缀和。如果我给你一串长度为n的数列a1,a2,a3…an,再给出m个询问,每次询问给出L,R两个数,要求给出区间[L,R]里的数的和,你会怎么做,若是没有了解过前缀和的人看到这道题的想法可能是对于m次询问,我每次都遍历一遍它给的区间,计算出答案,这样子的方法固然没错,但是其时间复杂度达到了O(n*m),如果数据量稍微大一点就有可能超时,而我们如果使用前缀和的方法来做的话就能够将时间复杂度降到O(n+m),大大节省了运算时间。至于怎么用,请看下面一小段代码

2020-11-12 15:47:44 348

原创 字符串的最大值

这题的思想还是比较容易想到的,先使用kmp算法将对应字符串的next数组初始化出来,然后通过从后往前进行扫描,每次跳转到对应next数组标记的位置处,如果有的话就对应加上当前记录过的次数,举个例子,例如字符串abababa,对应next数组为0,0,1,2,3,4,5。然后从后往前进行扫描,例如扫到str[6],发现next[6]的值是4,先初始化一个num数组,将num数组的值加上1,然后就跳转到str[4]的位置,接着发现next[4]的值是2,先把num[4]的值加1,再加上它的“儿子”num[6].

2020-08-12 07:02:35 1698

原创 2020-08-09

神奇项链母亲节就要到了,小 H 准备送给她一个特殊的项链。这个项链可以看作一个用小写字母组成的字符串,每个小写字母表示一种颜色。为了制作这个项链,小 H 购买了两个机器。第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个字符串的后缀和一个字符串的前缀是完全相同的,那么可以将这个重复部分重叠。例如:aba和aca连接起来,可以生成串abaaca或 abaca。现在给出目标项链的样式,询问你需要使用第二个机器多少次才能生成这个特殊的项链。

2020-08-09 17:41:07 94

原创 将字符串型数字转化成对应的整型数字

使用atoi函数即可,具体操作如下:#include<bits/stdc++.h>using namespace std;string a,b,c;int main(){ cin>>a>>b>>c; int m=atoi(a.c_str()); cout<<m<<endl; int n=atoi(b.c_str()); cout<<n<<endl;}相应操

2020-08-05 08:25:30 958

原创 洛谷P1125笨小猴题解

洛谷P1125笨小猴题解题目描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。输入格式一个单词,其中只可能出现小写字母,并且长度小于100100。输出格式共两行,第一行是一个字符串

2020-08-04 20:01:46 1222

空空如也

空空如也

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

TA关注的人

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