自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql

约束外键约束员工表就是从表 ,部门表就是主表员工表和部分表的例子逆向模型数据库设计表关系 (一对一)在任意一放加入外键,关联另一方的主键,并且设置外键为唯一unique表关系(一对多)在多的一方建立外键, 指向一的一方的主键表关系(多对多)需要建立一个中间表,中间表包含俩个外键,分别关联双方主键从次图可以发现一个订单对应多个商品, 然后一个商品对应不同的订单多表查询连接查询内连接查询查询AB交集的数据隐式内连接显示内连接sql可以给表指定别名外

2022-05-02 17:59:54 756

原创 python复习

数据的输入输出以及格式化# password = input("请输入密码:")# 三种类型 %d %s %fpassword = 14print(f"您输入的密码是:{password}")print("您输入的密码是:%s" % password)数据类型转换int(x[,base]) #将x转化为整数float(x) #将x转化为浮点数str(X) #将x转化为字符串eval(str) #用来计算字符串中的有效python表达式,并返回一个对象tuple(s) #讲序列

2021-03-13 18:52:33 138

原创 区间合并

思路:左端点从小到大进行排序,遍历合并区间,主要有俩种大情况,1.当前区间左端点大于上一个区间的右端点,此时说明上一个区间已经合并完成了,2.当前左端点小于或者等于上一个区间的右端点,则保持左端点不动,右端点取一个最大值即可code:#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#define INF 0x3fusing n...

2021-02-08 16:58:19 157

原创 位运算

求n的第k位数字: n >> k &1求n的二进制中的最后一个1表示的数字: lowbit (x) =x & -x;题目:二进制中1的个数code://二进制补码表示负整数#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int lowbit(int x){//返回最后一个1表示的数...

2021-02-08 15:58:31 114

原创 双指针算法

双指针算法的核心思想:这个就不是那种直接暴力,而是i和 j指针遍历俩遍数组 ,所以是O(2 * n)的题目:最长连续不重复子序列code:#include<iostream>#include<cstdio> #include<algorithm>using namespace std;const int N = 100010;int a[N];int s[N];//记录每一个数出现的次数int main(){...

2021-02-06 22:41:49 70

原创 二维前缀和与差分

二维前缀和:原理:矩阵的前缀和存在一个地推关系,如下图所示解决的问题:子矩阵中所有数的和公式:a[x2][y2] - a[x1 - 1][y2] - a[x2][y1 - 1] + a[x1 - 1][y1 - 1];code;#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N = 1100;in...

2021-02-06 15:26:45 313

原创 AtCoder Regular Contest 111

题目连接:https://atcoder.jp/contests/arc111/tasks/arc111_aA - Simple Math 2这个是官方的题解思路:和 是等价的先关的证明如上所示 。这就相当于对 M^2取余code:#include<iostream> #include<algorithm>#include<cstdio>using namespace std;typedef ...

2021-01-10 12:26:25 392 1

原创 矩阵连乘问题,找零钱问题(贪心)

矩阵连乘问题算法思路:求A[1] 到 A[n]相乘的最小次数,这个问题是有最优子结构的,可以用区间dp来解决,我们可以通过加括号来决定矩阵连乘的顺序,对于i到j的矩阵相乘,因为每次都是将区间分为俩个部分,所以枚举中间节点k ,然后找到一个最小的值,同时记录一个分割点k还有这个最小值, st[i][j] = k,f[i][j] = min(f[i][j], f[i][k] + f[k + 1][j] + a[i] * a[j] * a[k +1] ,下面我们用一个集合表示发来表示一下这...

2021-01-04 20:43:55 505

原创 算法设计复习

1.汉诺塔问题需要用递归来完成有俩种类型 1,直接打印出所需要的最少的次数2.打印出移动的过程汉诺塔问题,条件如下:1、这里有A、B、C和D四座塔。2、这里有n个圆盘,n的数量是恒定的。3、每个圆盘的尺寸都不相同。4、所有的圆盘在开始时都堆叠在塔A上,且圆盘尺寸从塔顶到塔底逐渐增大。5、我们需要将所有的圆盘都从塔A转移到塔D上。6、每次可以移动一个圆盘,当塔为空塔或者塔顶圆盘尺寸大于被移动圆盘时,可将圆盘移至这座塔上。请你求出将所有圆盘从塔A...

2020-12-30 15:05:57 155

原创 矩阵乘法的计算

这里先说一下整数的数据范围:int:32位-2147483648~2147483647。long long 64位9223372036854775807unsigned long long 64位 18446744073709551615 一般在hash的时候用,溢出就相当于取模了__int128 128位 相对于longlong位数变为原来的2倍了通过这个函数就可以看出 ll占用 8个字节 __128占用 16个字节斐波那契的矩阵...

2020-12-28 12:46:08 211

原创 三维造型

三维造型-简单实体构建1.了解简单实体构建的过程;2.熟悉视点观察函数的设置和使用;3.熟悉3D图形变换的设置和使用;4.进一步熟悉基本3D图元的绘制。实验需要自己能想想出三维图形的模样其中v0是个顶点,以三棱锥的中心为原点,建立如图所示的坐标系吗,确定定点的坐标,然后每个面的颜色。以题上给出的颜色为顺序,找到每个面的顶点,首先是蓝色 (v0,v1,v2) ,vertice1存取顶点的序号 ,create直接画图, 画图之前要进行平移和旋转...

2020-12-18 16:14:08 1422 3

原创 立方体三维观察-模型变换

实验一:// 提示:在合适的地方修改或添加代码#include <GL/freeglut.h>#include<stdio.h>// 评测代码所用头文件-开始#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>// 评测代码所用头文件-结束GLint winWidth

2020-12-09 10:31:58 2973 6

原创 OpenGL二维几何变换(1 - 4)

实验一:实验步骤:首先要进行背景颜色的设定和显示的范围和图形的绘制,画一个凸多边形可以调用glBegin(GL_POLYGON),后边用glVertex2f( , )指定顶点坐标,需要注意凸多边形的顶点指定需要按逆时针方向然后在myDraw函数里面设置颜色红色:glColor3f(1.0,0.0,0.0);绿色:glColor3f(0.0,1.0,0.0);蓝色:glColor3f(0.0,1.0,0.0);平移函数 :glTranslatef(0.0,2.0,0.0);...

2020-12-02 11:29:52 2437 3

原创 mysql基本使用方法(持续更新)

mysql replace函数的使用select name ,replace(name,"a","b") from city;//从 city表中选择name列 ,然后将name列中字符‘a’换成‘b’;运行结果是其他的函数大家可以自行去看一下这里是数据处理函数日期和时间处理函数下面再对rtrim()以及 lrim()进行说明Select ID,NAME,COUNTRYCODE,DISTRICT,POPULATION FROM wor...

2020-11-30 23:23:51 190

原创 排列组合数学(四种情形)

第一种 (递推)给定nn组询问,每组询问给定两个整数a,ba,b,请你输出Cbamod(109+7)Cabmod(109+7)的值。输入格式第一行包含整数nn。接下来nn行,每行包含一组aa和bb。输出格式共nn行,每行输出一个询问的解。数据范围1≤n≤100001≤n≤10000,1≤b≤a≤20001≤b≤a≤2000输入样例:33 15 32 2输出样例:3101思路:注意一下a,b的数据的...

2020-11-22 23:15:58 861

原创 手写模拟队列

手写的队列:就是一个pair的数组q ,首先设置队首指针hh ,队尾指针 tt都初始化为0,然后每次取队首元素t = q[hh ++],这里不用pop队列了,然后就是在队列的尾部插入数据 q[++ tt] = x; (x为新加入的元素)....

2020-11-19 12:26:13 111

原创 01 完全 多重 分组 背包

整数划分经典的完全背包模型,f[i][j]表示前i个数,容量为j的方案数之和, 和求完全背包的最大值相比就变了一下属性变为了数量和,依然是给个图好理解接着就是如何进行优化了以上就可以看出就是一个完全背包的问题code:#include<iostream>#include<cstdio>using namespace std;const int N = 1100;const int mod = 1...

2020-11-13 09:26:43 80

原创 7-15 凑零钱 (30分)(dfs或则01背包记录路径)

这里给出了俩种解法首先是dfs(这种方法还是很香的,能骗几分是几分)详细解释请看代码参考了一下网上的其他的代码,发现最后一个测试点是所有钱加起来还小于m的#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N = 1e4 + 10;int a[N];int n,m;int path[N];int top;...

2020-11-05 16:12:59 340

原创 各种背包问题(01 完全 多重 分组待更新)

首先是 01背包问题:每个物品只能选择一次,选择总重量不大于V的最大价值先说一下二维的吧 f[i][j]:从前i件物品中选择容量不大于j的最大价值 表示的是一个集合接下来就是求状态转移方程也就是集合划分,下面给出一个集合划分的图f[i][j] = max(f[i -1][j] ,f[i -1][j - v[i]] + w[i]);找到了状态转移方程就可以写代码了,不过我们发现了f[i][j]属于第i层然后max后面这一堆都属于第j层的,然后就是同样j也是从...

2020-11-04 21:18:13 132

原创 L3-013 非常弹的球 (30分)

思路:当角度取45°的时候抛的是最远的经过推到得到x = v^2/g 然后每一次弹跳都会使动能得到损失,这个动能是不可能到达0的,所以精确到 1e-8就可以了code:#include<iostream>#include<cstdio>using namespace std;const double eps = 1e-6;int main(){ double ans = 0; double E = 1000,m,p; dou...

2020-11-01 20:57:14 163

原创 奇葩错误

会持续进行跟新输入double类型的数据要使用%lf 千万不要用%llf 输出 %f即可 如果是 ll类型则输入输出都是lldc++ scanf(%c)如果缓冲区有空格或则回车,会把空格或则回车输入,因此会导致输入出错,改成 scanf(" %c")或者用getchar()来吸收即可getline(cin,s)跟上一个错误也是一样的,会读取缓冲区的字符,如果缓冲区有个回车键则直接会导致结束输入...

2020-11-01 20:43:51 143

原创 L3-015 球队“食物链” (30分)

L3-015球队“食物链”(30分)某国的足球联赛中有N支参赛球队,编号从1至N。联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场。联赛战罢,结果已经尘埃落定。此时,联赛主席突发奇想,希望从中找出一条包含所有球队的“食物链”,来说明联赛的精彩程度。“食物链”为一个1至N的排列{T​1​​T​2​​⋯T​N​​},满足:球队T​1​​战胜过球队T​2​​,球队T​2​​战胜过球队T​3​​,⋯,球队T​(N−1)​​战胜过球队T​N​​,球队T​N​​战胜过球队T​1​​。...

2020-11-01 12:17:32 141

原创 浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛(同步赛)A

链接:https://ac.nowcoder.com/acm/contest/7872/A来源:牛客网时间限制:C/C++ 3秒,其他语言6秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld题目描述不知从什么时候开始,实验室里的大家都变成了伐木工。尤其是dzl学长每天总是能听到他欢快的“锯锯锯锯锯锯锯锯锯锯锯锯锯锯.....”。实验室里的大家都有一个码力数值,“锯锯”这个词实际上拥有神奇的魔力,每喊一声“锯锯”,如果被喊的那个人的码.

2020-10-31 19:17:31 358

原创 7-14 求整数段和 (15分)

注意:输出的格式问题 printf中的 %5d表示是右对齐整形宽度至少为5不够用空格填充%05d表示右对齐整形宽度至少为5不够用0填充这个题我们要保证输出最后一个不需要去换行的,然后一行只有五个,多余5个换行。code:#include<iostream>using namespace std;int main(){ int a,b; int ans = 0; int cnt = 0; cin >> a >&g...

2020-10-31 16:03:27 92

原创 日期模拟

注意判断日期是否合法如果有星期的话,只有找到合法日期的时候才会有星期+1(如果星期 > 7星期 = 1)的操作一定要熟悉这种模拟的过程本题总分:10 分【问题描述】小蓝每天都锻炼身体。正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步...

2020-10-30 23:07:14 253

原创 7段码(dfs,二进制枚举)

对每一段都有两种情况,选和不选,二进制枚举每一种情况(或则dfs),然后判断选择的段会组成几个连通块,当连通块的数量为1时答案+1code:#include<iostream>#include<cstring>using namespace std;const int N = 100;int head[N],e[N],ne[N];int cnt;int ans;bool st[10]; int fa[10];void add(int u,int.

2020-10-30 22:20:47 1274

原创 区间和(离散化)

离散化就是将很稀疏的点映射到1,2,3,4,5.....原理就是:二分将a[i]映射到i或者i+1https://www.acwing.com/problem/content/804/code:#include<iostream>#include<cstdio>#include<vector>#include<algorithm>using namespace std;typedef pair<int,...

2020-10-30 09:51:52 191

原创 博弈论(nim)

sg函数:每堆石子异或操作最终的状态肯定0^0^0^0 ......^0 = 0假设每堆石子的数量为xi x1^x2^x3^x4....^xn 这里记为f(x)f(x)不为0则先手必胜 f(x) == 0先手必败当f(x) != 0,先手可以走一步到达一种必败的状态0然后循环后手必败当f(x) == 0时同理code:#include<cstdio>using namespace std;int main(){ ...

2020-10-29 22:33:24 105

原创 区间合并

正好复习了一下vector的用法, vector的数组可以直接赋值比如 vector<int > a,b a =b; 将b的值赋值给a ,a原来的值被覆盖了,思路:贪心,左端点从小到大进行排序code:#include<iostream>#include<cstdio> #include<algorithm>#include<vector>#define INF 0x3f3f3f3f...

2020-10-22 23:11:03 69

原创 石子合并(区间dp)

题目连接:https://www.acwing.com/problem/content/284/思路:首先你需要知道最后一次合并石子,肯定是左右俩堆的合并,所以可以想到区间dp , f[i][j]表示石子i到j合并成一堆的集合之后就是对区间的划分了,如下图所示#include<iostream>#include<cstdio>#include<cstring>#define INF 0x3f3f3f3fus...

2020-10-15 16:35:37 289

原创 数的二分

题目连接 :https://www.acwing.com/problem/content/791/#include<iostream>#include<cstdio>using namespace std;const int N = 1e5+10;int a[N];int main(){ int n,q; scanf("%d%d",&n,&q); for(int i=1;i<= n;i++) sc..

2020-10-14 21:31:17 83

原创 Magic Potion(俩次匈牙利)

对两次匈牙利算法的理解其实第二次也是很好理解的:在第一次匈牙利以后match数组就已经更新了,在第一次基础上再次执行匈牙利算法会算出多出来的匹配数

2020-10-14 13:07:29 234

原创 匈牙利算法(核心过程)

二分图就是俩个部分,每个部分不能有边,只能俩个部分之间有边二分图的最大匹配数:二分图左右俩边连接边的最大数,只能一对一。也就是说不能两条边连接同一个点code:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N =510;const int M = 1e5+10;int head[N],ne[M],e[...

2020-10-12 16:02:12 235

原创 素筛

埃式筛法(时间复杂度O(nlogn))code:void init(){ for(int i=2;i<N;i++){ if(!vis[i]) prime[cnt++]=i; for(int j = 1ll*i*i;j<N;j+= i){ vis[j]=1; } }} 欧拉筛法(O(n))code:void init(){ for(int i=2;i<N;i++){ if(!vis[i]) p...

2020-10-12 11:07:36 117

原创 2019icpc南京 J - Prime Game

题目连接:https://vjudge.net/contest/400457#problem/J先素筛一下1e6内的质数再找质因子快一些思路:找a[i]的每个质因子,找到每个质因子所贡献的区间,注意会有重复的区间所以要减去,例如第二个例子中的2在a[1]和a[5]中都出现过一次那么a[5]中2所贡献的区间只有a[2]-a[5] a[2]-a[6] a[2]-a[7]........a[2]-a[10]后面一次类推我就不写了a[3]-a[5]a[4]-a[5]...

2020-10-12 10:39:42 169

原创 区间dp

密码脱落题目连接:https://www.acwing.com/problem/content/1224/思路:首先因为是dp题,需要集合划分,因为是求最大值,所以可以有重复但是不能遗漏,集合划分的依据:[l,r]之间回文子序列的集合区间dp的遍历方法一般是先遍历区间长度在遍历左端点,长度为len,左端点是l,则右端点l+len-1code:#include<iostream>#include<cstd...

2020-10-08 11:58:12 81

原创 Magic Points

题目连接:https://vjudge.net/problem/ZOJ-4032思路:首先可以确定n-1条边,i与i+n相连 ,最后一条边n-1和3*n-4相连code:#include<iostream>#include<cstdio>using namespace std;int main(){ int T; scanf("%d",&T); while(T--){ int n; scanf("%d",&...

2020-10-07 21:51:17 117

原创 Flippy Sequence

题目连接:https://vjudge.net/problem/ZOJ-4060思路:遍历找到俩个字符串不同的段数,通过观察可以发现,假设段数X1.X=0 C(n,2)+n2 X=1 2*(n-1)自己可以推算一下3X=2 64 X> =3 0code :#include<iostream>#include<cstdio>using namespace std;const int ...

2020-10-05 22:37:35 156

原创 Codeforces Round #666 (Div. 2)

A:简单是思维题#include<iostream>#include<cstdio>#include<cstring>#include<map>using namespace std;typedef long long ll;const int N=1100;char s[N][N];int n;int main(){ int t; scanf("%d",&t); char ch; while(t--){.

2020-09-01 20:33:53 106

原创 AtCoder Beginner Contest 176

AtCoder Beginner Contest 176Acode:#include<iostream>#include<cmath>using namespace std;int n,x, t;int main(){ cin>>n>>x>>t; double a=n*1.0/x; int ans=ceil(a); ans=ans*t; cout<<ans<<endl; ..

2020-08-23 16:47:30 63

空空如也

空空如也

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

TA关注的人

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