洛谷
千亚夫
这个作者很懒,什么都没留下…
展开
-
洛谷 18-03-14-P1443 马的遍历
对起点进行广搜,将一个点的坐标和到达该点所需要的步数建一个结构体。搜索一个点的八个方向,符合条件的点入队并记录步数标记该点已走过。如果有两条路径走到同一个点,那么因为广搜的原因,该点会自己记录到步数小的那个并且标记了ok数组已走过。#include<iostream>#include<cstdio>#include<queue>#include<cs...原创 2018-03-14 20:21:45 · 234 阅读 · 0 评论 -
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 · 318 阅读 · 0 评论 -
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 · 149 阅读 · 0 评论 -
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 · 291 阅读 · 0 评论 -
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 · 222 阅读 · 0 评论 -
洛谷 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 · 108 阅读 · 0 评论 -
洛谷 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 · 376 阅读 · 0 评论 -
洛谷 18-03-13- P1162 填涂颜色
题目描述由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=6),涂色前和涂色后的方阵如下:0 0 0 0 0 00 0 1 1 1 10 1 1 0 0 11 1 0 0 0 11 0 0 0 0 11 1 1 1 1 10 0 0 0 0 00 0 1 1 1 10 1 1 2 ...原创 2018-03-13 21:06:15 · 200 阅读 · 0 评论 -
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 · 194 阅读 · 0 评论 -
P1182 数列分段Section II
二分答案确定左边界和右边界后找中间值,验证该值是不是不满足要找到满足中最小的那个(不如说是找到不能满足的最大的那个+1)主要是怎么写好judge函数。将数列在保证分段和不超过mid的情况下 尽可能使得段数最少如果最少段数超过了m,说明满足最大值最小的(ans)一定比该二分答案大,也就是说mid不满足转而找右边的二分点如果没超过m,说明最大值最小的(ans)小于或等于mid,也就是说mid可能是最终...原创 2018-03-19 20:19:38 · 807 阅读 · 0 评论 -
洛谷18-03-12-P1019 单词接龙
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int maxlength=0;char str[30][30];int n;int use[20]={0};int leastlink(char str...原创 2018-03-12 21:35:27 · 140 阅读 · 0 评论 -
洛谷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 · 212 阅读 · 0 评论 -
洛谷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 · 143 阅读 · 0 评论 -
洛谷18-03-11-P1101单词方阵
设置一个对应的布尔数组,初始化为0.枚举每个点8个方向。判断该方向是否为 yizhong如果是将对应该方向7个布尔变量置1。#include<iostream>#include<cstdio>#include<cstring>using namespace std;char str[102][102];int ans[101][102];int r[...原创 2018-03-11 21:05:54 · 98 阅读 · 0 评论 -
洛谷 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 · 473 阅读 · 0 评论 -
洛谷 P1010 幂次方
//使用分治的思想,先将n化为二进制倒序(直接放里面存相当于倒着存)存放入字符数组//然后利用递归 将每一位是1的下标放入dfs()再进行一次转换//当循环到位数位二进制倒数第二位且有效时直接输出2//当循环到位数位二进制倒数第一位且有效时直接输出2(0)//除了第一位不放+号以外,其他只要不是0的项都放+号 #include<iostream>#include<c...原创 2018-03-16 20:51:55 · 184 阅读 · 0 评论 -
洛谷 P1226 取余运算||快速幂
#include<iostream>#include<cstdio>#include<cstring>using namespace std;typedef long long ll; ll a,n,m;int pow_mod(ll n)//幂取模算法 { if(n==0)return 1; ll x=pow_mod(n/2); ll ans...原创 2018-03-16 19:51:19 · 364 阅读 · 0 评论 -
洛谷18-03-15-P1141 01迷宫
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[4]={-1,1,0,0};int b[4]={0,0,1,-1};int n,m; char ans[1010][1010]; int Count;int Cou[1010][1010];...原创 2018-03-16 19:18:44 · 123 阅读 · 0 评论 -
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 · 198 阅读 · 0 评论