自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 区间DP

对于某个求区间最优解的问题,将大区间划分为一个个小区间通过求解小区间最优解从而得到大区间最优解的问题。核心代码: for(int len=2;len<=n;len++){//枚举区间长度 for(int i=1;i<n && i+len-1<=n;i++){//枚举区间左端点 int j=i+len-1; for(int k=i;k<j;k++){//枚举断点位置 在K和k+1之间断开

2020-11-03 14:17:31 90

原创 2020HDU多校第三场Triangle Collision

题意不放了,就放个链接吧补题点我赛中思路想的是反射然后求新的Vx,Vy,然后发现会TLE 而且很难看到题解原来要用到镜中世界 假面骑士乱入将三角形不断沿每条边进行对称操作 得到如下图这样一来小球就是做直线运动,我们只需要二分答案,看通过的边数与k关系就行了那么 怎么看通过了多少边呢?我们可以看出 共有三类平行边1,2,3先来看边1 可知要求经过多少1类边,只要求出yy=y0+Vyt;H=√3/2l;当他向上走时 经过的边数 unt=⌊y/H⌋;当他向下走时(y<

2020-07-28 22:18:26 431 2

原创 DP习题解题报告

由于是写个自己看的,题意就不放了ProblemA思路:存数的数组 a[maxn]先建立二维数组 dp[i][j] 含义:前j个数分i组所得最大值在第j个数这,其选取有两种情况:(每种情况必须满足选后组份为i)case 1 :已经有了i-1组 slove:将a[j]作为单独一组加入 ---->dp[i][j]=max(dp[i-1][k])+a[j] i-1<=k<=j-1case 2 :已经有了i组 slove:将a[j]添加到前i组中的某一组

2020-07-17 17:00:12 139

原创 组合数递推公式

C(n,m)=C(n-1,m-1)+C(n-1,m)#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=1e3;const int MAXN=1e5;const long long mod=1e9+7;long long C[maxn][maxn];int main(){ int n,m; cin>>n

2020-07-17 11:32:27 1045 1

原创 基数排序(C++模板)&&计数排序(C++模板)

在学习后缀数组时发现一个非常有趣的排序 具体咋有趣不知,个人认为有意思具体实现方法看大佬博客 https://blog.csdn.net/weixin_39408343/article/details/107115403**我这里就专心码我的板子 **#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=1e5;int dat[max

2020-07-15 14:36:06 230

原创 第一周分享题(混合背包)

原题链接一道混合背包模板题,题目如下题解:将多重背包采取二进制优化,将三类背包问题分为只有01背包和完全背包,[目的:将时间复杂度从O(NVS)优化到O(NVlogS)] 然后判断背包类型采取不同dp方式时间复杂度:O(NVlogS)参考代码如下(有注释)/*********************************************************************//**********************************cyf**********

2020-07-11 20:29:14 163

原创 混合背包&&分组背包

混合背包啥是混合背包呢,就是包含01背包,完全背包,多重背包。有n件物品,背包承重最大为m,w[i]代表重量,v[i]代表价值,s[i]代表种类。s[i]=-1,可用1次,s[i]=0,可用无限次,s[i]>0,可用s[i]次.解法:见代码const int maxn=1e4+5;int n,m,dp[M+1],w[N*S],v[N*S],s[N*S];int main(){ cin>>n>>m; int ant=0,x,y,z; fo

2020-07-08 13:39:53 164

原创 二维费用背包

二维费用背包此时,卷子不但有重量,还有体积,让我们重新定义:n卷子数,x最大承受重量,y最大承受体积w[i]单张卷子重量,v[i]单张卷子体积,g[i]单张卷子分数解法:多加一维就可const int maxn=1e4+5;int n,x,y,w[N+1],v[N+1],g[N+1];int dp[X+1][Y+1];int main(){ cin>>n>>x>>y; for(int i=1;i<=n;i++) c

2020-07-08 13:18:39 147 1

原创 多重背包

多重背包背景:n种试卷,每种个数不同,最多c张,背包容量还是m求最大金额一.无优化写法时间复杂度:O(NMC)方法:看成01背包就好代码如下const int maxn=1e4+5;int p[N+1],v[N+1],c[N+1],dp[M+1];int n,m;int main(){ cin>>n>>m; int ant=0; for(int i=1;i<=n;i++) { cin>>p[i]

2020-07-08 11:35:16 115

原创 完全背包

完全背包没想到背包有这么多那么完全背包是怎么回事呢?同01背包大背景,但海涛拥有n种试卷,每种都有无限多个,求最大奖金按照01背包的分析思路当j<p[i],可知此时选不了,dp[i][j]=dp[i-1][j]当j>=p[i], 此时可以选 可以不选,已知每种卷子无限 dp[i][j]=max(dp[i][j],dp[i][j-p[i]]+v[i])const int maxn=1e4+5;int dp[105][maxn];//储存最优解int p[105],v[105];//

2020-07-07 09:56:31 100

原创 01背包

先把东西按照理解的写一遍然后再去想应该会更好吧01背包为了鼓励海涛小朋友,他的班主任有天让他把考试卷子全带过去,总分数就是给他的奖金数 但是他把卷子找出来后发现,卷子被班主任施了魔法,变得很重很重,每张卷子重量都不一样,由于海涛小朋友平时不爱学习,因此只学了一种魔法,他给他的书包施加了咒语,让书包可以装下重量为m的卷子,超过m了咒语就会失效,海涛小朋友就会得不到奖励,但是他不会算怎样才能让奖金最大,因此他来求助你,假如你没能给出最好方案,他就会认为你把奖金独吞了,他就会来报复你。现已知他有n张卷子

2020-07-06 20:10:08 107

原创 二分查找(板子)

深夜就总想整理板子 淦int ef_find(int*str,int l,int r,int f){ while(l<r) { int mid=(l+r)/2; if(str[mid]==f) return f; else if(str[mid]>f) r=mid; else l=mid+1; } return -1;}//[lower_,upper) int lower_(int*str,

2020-07-06 01:12:31 289 1

原创 快速排序

时间复杂度:O(n log2 n)~O(n^2)void ks(int *str,int l,int r){ int key=str[l]; int i=l,j=r; if(i<j){ while(i<j) { while(i<j && str[j]>=key) j--; if(i<j) str[i]=str[j]; whi

2020-07-05 20:04:58 82

原创 冒泡排序

整理下几大排序时间复杂度:O(n2)void mp(int*str,int n){ int flag=0; for(int i=0;i<n-1;i++) { flag=0; for(int j=0;j<n-i-1;j++) { if(str[j]>str[j+1]) { int t=str[j]; st

2020-07-05 19:44:26 64

原创 归并排序(板子)

利用分治思想,将数组不断的分为两份,再合并时间复杂度O(nlogn)拆分:logn合并:O(n)const int maxn=1e5+5;int a[maxn];void hb(int*a,int l,int mid,int r)//合并[l,mid-1]and[mid,r]{ int b[maxn];//储存临时结果 memset(b,0,sizeof(b)); int i=l,j=mid,k=0; while(i<mid && j&lt

2020-07-05 16:32:58 181

原创 字典树习题(更新ing)

洛谷P2580(板子题)原题链接直接套用板子,将flag改为int型,0表示未出现,输出WRONG,1表示第一次出现输出OK并将其变为2,2输出REPEAT代码如下/*********************************************************************//**********************************cyf*******************************//**************************

2020-07-05 13:44:46 143

原创 字典树(板子)

一种以空间换时间的查询算法,多用来查询以某单词为前缀的单词数。简单来说就是一棵树,从上向下,树有许多分叉,主干部分就是其共同部分,分叉就是各不同部分。具体实现如下:const int maxn=2e6+5;int totle;//统计节点个数int tree[maxn][30];//存bool flag[maxn];//以某节点结尾的为一个单词int sum[maxn];//同前缀单词数void init_(char*str){ int len=strlen(str),id,r

2020-07-05 12:25:26 255

原创 wust2020个人赛1

B - To the Max题意:给定一个n*n的矩阵,从中找出一个小矩阵使其内元素和最大。思路:由于n最大为100,所以考虑暴力枚举。枚举方式:枚举小矩阵占据行的区间[r1,r2],然后只剩下列的选取,可近似看成一个一维数组求最大连续字段和,这里可选择DP或递推,递推则是扫一遍数组,用一个sum加上每个元素,sum<0时取0,求出最大sum。E - Chinese Girls’ ...

2020-04-30 18:48:05 193

原创 Codeforces Round #624 (Div. 3)(A~D)

A题:动动脑瓜子模拟一下就能想到:A==B时 ans=0;A>B时就要先减,由于减只能减偶数,所以A,B同奇或同偶时ans=1,否则ans=2;A<B则先加,加的是奇数,所以ans和上面相反代码#include<cstdio>#include<cstring>#include<iostream>#include<algorith...

2020-02-25 10:29:58 321

原创 Codeforces Round #618 (Div. 2).C. Anu Has a Function(c++)

题目链接题意大概就是给你一个公式:f(x,y)=(x|y)−y,其中 | 是按为或运算,再给你一个数组an,问怎样排列才能让f(f(…f(f(a1,a2),a3),…an−1),an)得到的结果最大。拿第一组数据来看将其转换成二进制:4: 1000: 00011:10116: 110这样,f(11,6) :(1011)|(110)-110(1011)|(110)=1111...

2020-02-19 14:42:40 122

空空如也

空空如也

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

TA关注的人

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