自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 背包问题模版

常用的三个模版。01背包无优化:for(int i=1;i<=n;i++)//n表示物品数量 { for(int j=0;j<=m;j++)//m表示规定体积/重量等等 { dp[i][j]=dp[i-1][j];//dp[i][j]表示前i个物品XX为j时最大xx if(j>=w[i])//w[i]表示第i个物品的XXX dp[i][j]=...

2018-05-10 20:49:58 111

原创 P1379 八数码问题

经典的bfs问题,将每个棋盘看成一个状态,从而转换为一个路径寻找问题。用取模找0的标号坐标,假设0的位置为nx=(n-1)/3+1,    y=(n-1)%3+1;#include<iostream>#include<cstdio>#include<map>#include<set>#include<queue>#include...

2018-04-29 20:54:38 192

原创 UVa129 困难的串

输入依旧是坑。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int n,L;int cnt;int S[100];int dfs(int cur)//表示...

2018-04-28 23:38:10 176

原创 Uva524 素数环

素数打表,然后回溯搜索,输出格式真尼玛坑。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int prime[20];int vis[20];int ans[...

2018-04-28 21:32:38 142

原创 P1219 八皇后(经典回溯问题)

两种代码,第二种稍微快一点。。#include<iostream>#include<cstdio> using namespace std;int a[15];int Count=0;int n;void f(int cur){ if(cur==n){ Count++; if(Count<=3) { for(int k=0;k<n...

2018-04-28 20:32:19 306

原创 P1160 队列安排

刚做完紫书链表章节的移动盒子,正好用来练练手。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 100000 + 10;int LL[maxn],RR[maxn];int n...

2018-04-28 00:52:53 138

原创 P1115 最大子段和

题目有几种做法,不过复杂度有区别,穷举On^3,前缀和On^2,分治Onlogn,dp On 。贴一个dp的。#include<iostream>#include<cstdio>using namespace std;const int maxn = 200000 + 10;int ans[maxn];int dp[maxn]={0};//dp[i]表示以i结尾最...

2018-04-27 22:21:51 262

原创 P1996 约瑟夫问题

手动写一个循环链表,算是复习了一遍吧。。被指针弄得烦死。#include<iostream>#include<cstdio>using namespace std;struct List{ int data; bool tag; List *next; List():data(0),tag(true),next(NULL){}};int n,m;int ...

2018-04-27 22:19:21 208

原创 UVa548 树

好多细节,自己的代码改了好多遍,最后改成源码。。。有时间再敲一遍。#include<iostream>#include<cstdio>#include<cstring>#include<sstream>using namespace std;const int maxn = 10000 + 10; int in_order[maxn],p...

2018-04-26 21:23:15 122

原创 UVa122 树的层序遍历

重新复习了下树的遍历,我是直接在主函数先写了一次遍历的代码,然后改成无限次遍历但最后不是以文件结束,但题目要求是以文件结束,因为不是做工程,也懒得改成函数了,在读写字符串的时候判断一下EOF,直接return 0。输出也是坑,最后一个元素输出还不能有空格。。。整理下出错的地方:1、新建结点时应该新建指针,node*类型的。2、必须写构造函数并且赋值空指针NULL,要不就初始化的时候直接NULL,不...

2018-04-26 00:09:22 108

原创 UVa 514 Rails

坑死了,一个低级错误找了好久,每次操作都应该新建一个栈,而我都是用的一个栈。。。#include<iostream>#include<cstdio>#include<stack>#include<algorithm>using namespace std;const int maxn = 1000 + 10; int n;int an...

2018-04-25 00:26:00 114

原创 高精度模版

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 100000;struct bn{ int bt[maxn],len;//bt[0]存符号位 0为正,1为负 void...

2018-04-23 23:18:49 73

原创 UVa 156反片语

#include<iostream>#include<cstdio>#include<cctype>#include<set>#include<map>#include<cstring>#include<algorithm>#include<vector>using na

2018-04-23 18:23:30 122

原创 16蓝桥杯 一步之遥

明明用扩欧甚至穷举都可以一下出结果,我却搜索了半天。。。#include<iostream>#include<cstdio>using namespace std;void ex_gcd(int a,int b,int& d,int& x,int& y){ if(!b){ d=a;x=1;y=0; } else{ ex_gcd(...

2018-04-22 20:59:00 252

原创 16蓝桥杯决赛 凑平方数

用全排列直接搜索,可行的结果放到set里面判重,注意一下用long long就行了。#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>#include<set>#include<cstdli...

2018-04-22 19:59:01 211

原创 17蓝桥杯决赛 磁砖样式

用dfs搜索回溯模拟铺砖块,按从左到右,从上到下铺,n表示铺第几块砖,然后取模转化为x,y表示坐标。 初始化-1,用1,0分别表示一种颜色,每个点要不铺1,要不铺0(必须铺砖的两个点都为-1),不能铺返回上个点,铺过了的直接到下一个点 最后判重(也可以在铺的时候判断,花的时间更少,因为是填空题就算了)答案105760 刚开始想,初始化0,用1表示一种颜色,每个点可以横铺1,竖铺1,或者不铺三种情况...

2018-04-18 20:32:58 258

原创 17蓝桥杯决赛 对局匹配

dp问题先转换为权值数据,把权值数据化为K组(K1,K2……)数据每一组数据相当于k等于1的子问题。 最后将最后k个加起来就是答案。比如说样例21 21 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6转化为权值数据为1 2 3 4 5 6分成两组1 3 5  k12 4 6  k2k1子问题的答案是1+5=6k2子问题的答案是2+6=8最后问题的答案就是14。#in...

2018-04-16 19:22:07 371

原创 17蓝桥杯决赛 发现环

无向图找环。用dfs来搜索环,两个参数,dfs(x,y),x表示当前点的位置,y表示前驱位置然后搜除了前驱位置的点(也就是不回走,将有向图转为无向图),每走一个点给布尔数组赋1,直到搜到重复的点,说明发现了环。值得注意的时, 搜完有两种情况,起点在环上,起点不在环上。当起点不在环上,再用一个dfs将起点与环节点(除了record)中间的所有布尔数组赋0。最后输出布尔数组就好了。 #include&...

2018-04-11 20:28:16 1058 1

原创 蓝桥杯 买不到的数目

动态规划,当可以被凑出来的数的连续个数等于最小的那个a时,之后所有的数都可以被凑出。与凑包子那题一样。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int ans[100000];int a,b;int ...

2018-03-31 21:16:01 399 2

原创 蓝桥杯 剪格子

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int ans[15][15];int ok[15][15];int Min=100000;int Count=0;int n,m;int sum=0;...

2018-03-31 20:42:52 111

原创 欧几里得算法求最大公约数和最小公倍数

求多个最大公约数 直接叠加即可比如求三个数的最大公约数,先把前两个数的最大公约数求出来,再把这个数与第三个数求最大公约数。多个数同理。两个数的乘积等于这两个数的最大公约数和最小公倍数的成绩,所以最大公倍数直接拿两个数乘积除以最小公约数就好了。多个数同理。#include<iostream>#include<cstdio>int gcd(int a,int b)//欧几里...

2018-03-31 19:58:18 433

原创 17蓝桥杯 方格分割

这题搜边更好做,从4,4点开始搜,每走一步中心对称的那个也标记走过,直到走到边界,最后结果除以4#include<iostream>#include<cstdio>#include<cstring> int ans[10][10];int Count=0;void dfs(int x,int y){ ans[x][y]=1;//标记已走 ans[...

2018-03-31 17:52:59 149

原创 17蓝桥杯 迷宫

直接dfs,走到边界就+1把字母转换为数字 输入方便#include<iostream>#include<cstdio>#include<cstring>using namespace std;int ans[20][20];int ok[20][20];int Count=0;void dfs(int x,int y){ ok[x][y]=0...

2018-03-31 15:30:36 176

原创 16蓝桥杯剪邮票

先用全排列选出5张邮票,然后再判断是不是连通图就好了。 dfs和bfs都可以做 #include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>using namespace std;int ans[12]={0,0,0,...

2018-03-30 20:31:19 120

原创 17蓝桥杯 包子凑数

扩展欧几里德算法,如果给定n种蒸笼的最大公约数不等于1,那么就有无限多个否则算出不能凑出的数量。dp布尔数组,dp[i]表示i能不能被凑出,能赋值1,不能赋值0。先把初始的蒸笼数全部赋值1,然后从dp[1]开始找,一直到10010(假设边界不超过这个数)。 如果dp[i]不能被凑出,那么直接计数+1如果能凑出,那么将dp[i]的i加上n个蒸笼的数赋值1,也就是将dp[ans[0]]~dp[ans[...

2018-03-26 20:37:20 114

原创 17蓝桥杯 分巧克力

//二分答案 #include<iostream>#include<cstdio>#include<algorithm>using namespace std;int n,k,l,r,ans;struct cho{ int x,y;};cho c[100010];int judge(int x){ int tot=0;//表示以x为边长的巧...

2018-03-25 21:18:09 90

原创 17蓝桥杯 日期问题

我的做法是,先把三种表示法都写出来,再判断合不合法,用然后放入set集合里面去重排序,另外闰年的29号合法,需要另外判断 ,合法就输出,注意如果两种表示法表示的一样,只输出一个,比如02/02/29,只输出2029-02-02。#include<iostream>#include<cstdio>#include<cstring>#include<al...

2018-03-25 20:53:45 128

原创 14蓝桥杯 地宫取宝

使用一个四维数组来进行记忆化dfsx,y表示坐标,z表示当前已拿物品,Max表示当前拿到的最大价值物品那么ok[x][y][z][Max]表示 在点(x,y)处拿了z个物品最大价值为Max这个状态 到 点(n,m)处拿了k物品 这个状态有多少条走法。其中在初始位置拿的最大价值应该是-1,因为后面会有0价值的物品。判出递归边界有两个情况。情况1:不拿最后一个物品就已经有k个物品了情况2:可以拿最后一...

2018-03-24 19:38:35 110

原创 14蓝桥杯 蚂蚁感冒

贪心法先将所有蚂蚁位置按绝对值排序,并记录第一只蚂蚁所在的位置(数组中的位置) 两只蚂蚁碰面后方向调换,其实和不调换一样,题目只是计数,并没有要求记录哪些蚂蚁感冒了所以,有两种情况。 情况1,第一只感冒蚂蚁朝向的那方没有一只与它方向相反的蚂蚁,输出1。 情况2,有的话,将感冒蚂蚁朝向那方所有与它方向相反的蚂蚁计数,并且将感冒蚂蚁背后与它同向的蚂蚁也计数。 将上述两种情况,左右方向各写一次,便可求出...

2018-03-22 08:54:46 97

原创 13蓝桥杯 连号区间

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int ans[100010];int n,Count=0;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",...

2018-03-21 20:43:53 124

原创 13蓝桥杯 带分数

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int ans[9]={1,2,3,4,5,6,7,8,9};//把所有排列弄出来 int Count=0;int main(){ int n; scanf("%d",&n); do{ ...

2018-03-21 19:57:44 113

原创 13年蓝桥杯 翻硬币

贪心法 先将字符串转换为布尔数组01然后从第一个开始比较,如果不同就翻相邻的两个硬币并计数+1 直到结束,一定是最少翻的 #include<iostream>#include<cstdio>#include<cstring> char str1[1005];char str2[1005];int ans1[1005];int ans2[1005];...

2018-03-20 21:20:26 294

原创 洛谷 P1316 丢瓶盖

二分答案#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int ans[100010];int a,b,l=100000000,r,n;bool judge(int x)// { int now=ans[1],tot=1; for(int i=2;...

2018-03-20 19:41:29 100

原创 洛谷 P1308 统计单词数

#include<iostream>#include<cstdio>#include<cstring> using namespace std;char str1[11];char str2[1000010];int Count=0,first=-1;int main(){ gets(str1); gets(str2); int len1=...

2018-03-20 19:33:16 355

原创 P1135 奇怪的电梯

#include<iostream>#include<cstdio>#include<queue>using namespace std;int n,a,b;int ans[210];int ok[210]={0};int bfs(int x)//x为当前楼层 { queue<int> q; q.push(x); while(!...

2018-03-19 21:00:32 184

原创 P1182 数列分段Section II

二分答案确定左边界和右边界后找中间值,验证该值是不是不满足要找到满足中最小的那个(不如说是找到不能满足的最大的那个+1)主要是怎么写好judge函数。将数列在保证分段和不超过mid的情况下 尽可能使得段数最少如果最少段数超过了m,说明满足最大值最小的(ans)一定比该二分答案大,也就是说mid不满足转而找右边的二分点如果没超过m,说明最大值最小的(ans)小于或等于mid,也就是说mid可能是最终...

2018-03-19 20:19:38 771

原创 洛谷P1057 传球游戏

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n;//记忆化搜索 int ans[33][33]; int f(int x,int y)//当前位置和 剩余次数 { if(y==0){ if(x==0)return ans[0][0]=1...

2018-03-18 19:32:46 205

原创 洛谷P1025 数的划分

和放苹果类似,将程序记忆化搜索#include<iostream>#include<cstdio>#include<cstring>using namespace std;int ans[210][8];//记忆化搜索 int f(int n,int k){ if(n<k)return f(n,n); if(n==0)return ans[...

2018-03-18 19:00:03 132

原创 洛谷 P1029 最大公约数和最小公倍数问题

假设p=x0*k1,q=x0*k2;k1与k2一定互质,如果不互质就存在更大的最大公约数 又因为两个数的乘积等于他们的最大公约数和最小公倍数的乘积 所以p*q=x0*x0*k1*k2=x0*y0即y0=x0*k1*k2将y0/x0,如果除不尽说明不存在这样的p与q除尽了,至少有两对pq组合。然后从x0到sqrt(y0/x0)穷举,得出两个数k1,k2,若k1与k2互质,说明又是两对。 #inclu...

2018-03-17 20:41:21 444

原创 洛谷 P1010 幂次方

//使用分治的思想,先将n化为二进制倒序(直接放里面存相当于倒着存)存放入字符数组//然后利用递归 将每一位是1的下标放入dfs()再进行一次转换//当循环到位数位二进制倒数第二位且有效时直接输出2//当循环到位数位二进制倒数第一位且有效时直接输出2(0)//除了第一位不放+号以外,其他只要不是0的项都放+号 #include<iostream>#include<c...

2018-03-16 20:51:55 177

空空如也

空空如也

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

TA关注的人

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