
专题场
文章平均质量分 91
iuk11
我想去更远的地方看看,现在还缺少载具。
展开
-
codeforce#dp专项
1 https://codeforces.com/problemset/problem/467/C 【题意】给定一个长度为n的序列,找到k个长度为m的子串(不是子序列),求能得到的每个子串相加后的最大值。特别,子串下标不能重复且不能交叉 。 iii 表示下标 jjj 表示子串个数 不新增子串,那最大值与上一次的状态相同; 新增子串,那最大值为以当前下标 iii 结尾的 [i−m+1,i][i-m+1,i][i−m+1,i] 长度的子串,自然dp[i−m][j−1]dp[i-m][j-1]dp[i−m][j−原创 2022-03-13 00:11:46 · 470 阅读 · 0 评论 -
The Settlers of Catan——(第一场 递归与回溯)
https://ac.nowcoder.com/acm/problem/106855 n为点,m为边 m行一行两个点 开一个a[][],输入的两点x,y有a[x][y]=a[y][x]=1; 表示x和y之间有一条边,置1。 开始遍历二维数组中所有的点,从x开始,x和y有边的话,再去找y与其它点的边,直到搜索到0为止。然后再把走过的路径都消除,去找下一个点的连通路径是多长。 #include<iostream> #include<algorithm> #include<strin原创 2020-07-27 16:15:23 · 189 阅读 · 1 评论 -
Red and Black——(第一场 递归与回溯)
https://ac.nowcoder.com/acm/problem/106576 大意就是 X 不能走 . 可以走 @ 是初始位置,然后问从初始位置走完全部的 . 需要的最少步数。 初始化输入很简单,考点是dfs,先找满足条件,在红黑地板范围内 和 没走过 和 可以走 同时满足,走一步,加步数,然后走下一步,走不通了就回溯到上一步可以选择的时候,看其它方向哪里还可以走。 int dir[4][2]={ {1,0},{0,1},{-1,0},{0,-1} }; char a[25][25]; in原创 2020-07-27 15:36:53 · 178 阅读 · 0 评论 -
Fractal——(第一场 递归与回溯)
https://ac.nowcoder.com/acm/problem/106680 分形递归 进三个变量,n和横纵坐标 d是图形每次变换的长度,每次坐标定位到左上角,分成左上,左下,右上,右下,中。 可知,左上坐标不变,右上横坐标加两个图形长度,纵坐标不变。同理,其它位置也可以模拟出来。 边界条件是n=1,只有"X"。 int f(int n,int x,int y){ if(n==1){ a[x][y]='X'; return ; }else{原创 2020-07-27 15:28:01 · 171 阅读 · 0 评论 -
Symmetric Order——(第一场 递归与回溯)
链接:https://ac.nowcoder.com/acm/problem/106610 来源:牛客网 在信天翁马戏团管理公司(是的,它是由一群小丑运行的)的工作中,你刚刚完成了一个程序,它的输出是按长度顺序排列的名称列表(这样每个名称至少与前面的名称一样长)。但是,你的老板不喜欢输出的样子,相反,希望输出看起来更对称,顶部和底部的字符串越短,中间的字符串越长。他的规则是,每对名字都属于列表的两端,而这对名字中的第一个总是在列表的顶部。在下面的第一个例子中,Bo和Pat是第一对,原创 2020-07-27 15:07:29 · 219 阅读 · 0 评论 -
The Settlers of Catan——(第一场 递归与回溯)
多组输入 第一行两个数,n点数,m行数 接下来m行,一行两个数,表示两点相连 直接上代码输入,vis[i][j]用来储存(i,j)点是否走过。 a[x][y]<–>a[y][x]表示在x,y相连,标1,遍历的时候提出来 找出两点,第一个点i变成第二个点j,进去深搜递归,不断找下一个点,找不到为止,声明一个tt表示步数,每次更新坐标点都t++。 找不到回溯,走其它,vis都无法走了(条件表示vis[][]==0&&a[][]),结束。 int main(){ while(c原创 2020-07-26 16:10:15 · 195 阅读 · 0 评论 -
八皇后——(第一场 递归与回溯)
在一个8*8的棋盘上放置八个皇后,每个皇后在其本身行、列、对角线上不能出现其它皇后。总共有92种放置情况。 用r表示行,用c[r]表示列,判断条件,因为r是不断增加的行,只会找没有皇后的行,所以无需判断行数,然后条件减少成三条: 判断列、判断主对角线、判断负对角线.。 1.c[r]==c[j] j在r之前循环 2.c[r]-c[j]==r-j; 3.c[j]-c[r]==r-j; 寻找函数,到8了退出,做个边界,到了回溯。 void search(int r){ if(r==8){原创 2020-07-26 10:54:40 · 108 阅读 · 0 评论 -
放苹果——第一场(递归与回溯)
题目链接:https://ac.nowcoder.com/acm/problem/106261 来源:牛客网 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入描述: 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。 输出描述: 对输入的每组数据M和N,用一行输出相应的K。 三种情况 1.盘子数比苹果数多->f原创 2020-07-25 16:54:51 · 164 阅读 · 0 评论