摘要: 二分算法适用于解的最优解具有单调性的题(如『较大的最小』或『较小的最大』或『合法条件与不合法条件』呈两侧分布之类) 1.数列分段 【题目描述】 对于给定的一个长度为N的正整数数列A,现在将其分成M段,并要求每段连续,且每段和的最大值最小。 【输入格式】 第一行包含两个正整数N,M。 第二行包含N个空 阅读全文
posted @ 2022-02-18 20:24 LZMiiu 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 1.划分数组 【题目描述】 给定一个长度为n的数列{ai},要求划分最少的段数,使得每一段要么单调不降,要么单调不升。 【输入格式】 第一行一个整数n。 第二行n个整数表示数列{ai}。 【输出格式】 一行一个整数,表示最少的划分数。 【样例】 输入: 6 1 2 3 2 2 1 输出: 2 【思路 阅读全文
posted @ 2022-02-17 21:01 LZMiiu 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-02-17 09:22 LZMiiu 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 题1:area 描述:编程计算由“1”号围成的下列图形的面积。面积计算方法是统计“1”所围成的闭合曲线 中水平线和垂直线交点的数目。如下图所示,在 10*10 的二维数组中,有“1”围住了15个点, 因此面积为15。 【样例输入】 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 阅读全文
posted @ 2022-01-27 15:45 LZMiiu 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 题目1:迷宫问题 问题描述:设有一个N*N(2<=N<10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中分别放0和1,0表示可通,1表示不能,入口和出口处肯定是0。迷宫走的规则如下: 从某点开始,有八个方向可走,前进方格中数字为0时表示可通过,为1时表示不可通过,要另找路径。找出所有从入口 阅读全文
posted @ 2022-01-25 15:57 LZMiiu 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 题目:从三个元素的集合[A,B,C]中选取元素生成一个N个字符组成的序列,使得没有两个相邻字的子序列(长度=2)相同;对于由键盘输入的N(1<=N<=12),求出满足条件的N个字符的所有序列和其总数 参考数据: 输入:4 输出:72 注意:只限制相邻子序列 程序: #include<bits/std 阅读全文
posted @ 2022-01-24 15:36 LZMiiu 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 题目:1~n个自然数中选择r个数的所有选择方案(顺序) 方法:深搜 程序: #include<bits/stdc++.h>using namespace std;int n,r,A[21],b[21]={0};void print(){ for(int i=1;i<=r;i++){ printf(" 阅读全文
posted @ 2022-01-24 08:27 LZMiiu 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 题目:1~n个自然数的全排列 算法:深搜 程序: #include<bits/stdc++.h>using namespace std;int n,a[10],b[10]={0};void print(){ for(int i=1;i<=n;i++){ printf("%5d",a[i]); } p 阅读全文
posted @ 2022-01-24 08:10 LZMiiu 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 题目:从n个数中选取r个数,列出所有排列(与顺序无关) 思路:一个一个选,做好标记不重复,不遗漏 程序1:递归回溯: #include<bits/stdc++.h>using namespace std;bool b[10001]={0};int num=0,a[10001]={0},n,r;voi 阅读全文
posted @ 2022-01-23 11:17 LZMiiu 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 题目:T组数据,n个人,第n个人体重w[n],分成两组,两组人数最大差1,求两组体重差绝对值最小值 思路:一共分两组,设第一组体重和为w1,第二组为w2,则w1+w2=W,|w1-w2|=|2*w1-W|。所以只需要找出其中一组总重量的二倍与全部人总重量的差的绝对值的最小值就可以。所以只需要求其中一 阅读全文
posted @ 2022-01-23 10:58 LZMiiu 阅读(43) 评论(0) 推荐(0) 编辑