AcWing 93. 递归实现组合型枚举
递归实现组合型枚举从 $1∼n$ 这 $n$ 个整数中随机选出 $m$ 个,输出所有可能的选择方案。
输入格式两个整数 $n,m$ ,在同一行用空格隔开。
输出格式按照从小到大的顺序输出所有方案,每行 $1$ 个。
首先,同一行内的数升序排列,相邻两个数用一个空格隔开。
其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如 1 3 5 7 排在 1 3 6 8 前面)。
数据范围$n>0 ,$$0≤m≤n ,$$n+(n−m)≤25$
输入样例:15 3
输出样例:123456789101 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5
题解123456789101112131415161718192021222324252627282930313233343536373839#include<bits/stdc++.h>using namespace std;int n,m;vector<int> num;void dfs(int k){ //如题解 ...
《阅微草堂笔记》笔记
《阅微草堂笔记》笔记卷一滦阳消夏录一
乾隆巳酉夏,以编排秘籍,于役滦 <luán> 陽,时校理久竟,特督视官吏,题签庋 <guĭ> 架而已,昼长无事,追录见闻,忆及即书,都无体例,小说稗 <bài> 官,知无关于著述。街谈巷议,或有益于劝惩,聊付抄胥存之,命曰:滦陽消夏录云尔。
于役滦陽:<名>劳役。《捕蛇者说》:“更若役,复若赋,则何如?”
时校理久竟:<动>完毕;结束。《廉颇蔺相如列传》:“秦王竟酒,终不能加胜于赵。”
特督视官吏:<副>仅;只;不过。《廉颇蔺相如列传》:“相如度秦王特以诈佯为予赵城,实不可得。”
题签庋架而已:<动>放置;搁起来。《黄生借书说》:“若业为吾所有,必高束焉,庋藏焉。”
小说稗官:<形>卑微。
聊付抄胥存之:
聊:<副>姑且;暂且。《归去来兮辞》:“聊乘化以归尽,乐夫天命复奚疑。”
付:<动>交付;交给。《出师表》:“若有作奸犯科及忠善者,宜付有司论其刑赏。”《赤壁之战》:“操当以肃还付乡党。”
胥:<名>小吏。《狱中 ...
SCOI2005扫雷
[SCOI2005]扫雷题目描述相信大家都玩过扫雷的游戏。那是在一个$n\times m$的矩阵里面有一些雷,要你根据一些信息找出雷来。万圣节到了,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和它8连通的格子里面雷的数目。现在棋盘是$n\times 2$的,第一列里面某些格子是雷,而第二列没有雷,如下图:
由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放方案。
输入格式第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)
输出格式一个数,即第一列中雷的摆放方案数。
样例 #1样例输入 #11221 1
样例输出 #112
题解AC代码123456789101112131415161718192021222324252627282930#include <iostream>using namespace std;int p[10010],a[10010],N,ans=2;void solve(){ fo ...
SCOI2009生日礼物
[SCOI2009]生日礼物题目背景四川2009NOI省选
题目描述小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有N个,分为K种。简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上。
小布生日快到了,于是小西打算剪一段彩带送给小布。为了让礼物彩带足够漂亮,小西希望这一段彩带中能包含所有种类的彩珠。同时,为了方便,小西希望这段彩带尽可能短,你能帮助小西计算这个最短的长度么?彩带的长度即为彩带开始位置到结束位置的位置差。
输入格式第一行包含两个整数N, K,分别表示彩珠的总数以及种类数。接下来K行,每行第一个数为Ti,表示第i种彩珠的数目。接下来按升序给出Ti个非负整数,为这Ti个彩珠分别出现的位置。
输出格式输出应包含一行,为最短彩带长度。
样例 #1样例输入 #112346 31 52 1 73 1 3 8
样例输出 #113
提示【样例说明】
有多种方案可选,其中比较短的是1~5和5~8。后者长度为3最短。
【数据规模】
对于50%的数据, N≤10000;
对于80%的数据, N≤800000 ...
NC207040丢手绢
[NC207040] 丢手绢题目描述“丢~丢~丢手绢,轻轻地放在小朋友的后面,大家不要告诉她,快点快点抓住她,快点快点抓住她。”
牛客幼儿园的小朋友们围成了一个圆圈准备玩丢手绢的游戏,但是小朋友们太小了,不能围成一个均匀的圆圈,即每个小朋友的间隔可能会不一致。为了大家能够愉快的玩耍,我们需要知道离得最远的两个小朋友离得有多远(如果太远的话牛老师就要来帮忙调整队形啦!)。
因为是玩丢手绢,所以小朋友只能沿着圆圈外围跑,所以我们定义两个小朋友的距离为沿着圆圈顺时针走或者逆时针走的最近距离。
输入描述:第一行一个整数 $N$,表示有 $N$ 个小朋友玩丢手绢的游戏。接下来的第 $2$ 到第 $n$ 行,第 $i$ 行有一个整数,表示第 $i-1$ 个小朋友顺时针到第 $i$ 个小朋友的距离。最后一行是第 $N$ 个小朋友顺时针到第一个小朋友的距离。
输出描述:输出一个整数,为离得最远的两个小朋友的距离。
输入12343123
输出13
备注:$2≤N≤100000$距离和(圆圈周长)小于等于 $2147483647$
题解AC代码1234567891011121314151617181920 ...
NC204370牛牛的木板
[NC204370] 牛牛的木板题目描述牛牛从牛毕那里拿了一根长度为n的白木板,木板被等分成了 $n$ 段(没有被切割,只是虚拟划分成了 $n$ 段),其中有些段被牛毕用颜料染成了黑色。
牛牛非常不喜欢黑色,它找来了一桶清洗剂决定对木板进行清洗,但是牛牛发现自己的清洗剂最多只能清洗 $m$ 段。 清洗完后,牛牛会把木板锯成纯色的几段。例如假设木板是 (黑黑黑白白白白黑黑黑 ),就会被锯成(黑黑黑)(白白白白)(黑黑黑)三段。 牛牛想知道,它足够聪明地清洗木板,能获得的纯白色木板的最大长度是多少。
#示例1输入16,1, [1,0,0,1,1,1]
返回值14
说明1染成了[1,0,1,1,1,1]
#示例2输入16,2, [1,0,0,1,1,1]
返回值16
说明1染成了[1,1,1,1,1,1]
备注:给定 $n,m$ 两个整数和一个长度为 $n$ 的数组 $a$ , 为 $1$ 表示白色,为 $0$ 表示黑色$(1≤n≤10^6 , 1≤m≤n)$$(0≤a_i≤1)$
AC代码123456789101112131415161718192021222324252627/ ...
NC224938加减
[NC224938] 加减题目题目描述
小红拿到了一个长度为 $n$ 的数组。她每次操作可以让某个数加 $1$ 或者某个数减 $1$ 。小红最多能进行 $k$ 次操作。她希望操作结束后,该数组出现次数最多的元素次数尽可能多。你能求出这个最大的次数吗?
输入描述
第一行两个正整数 $n$ 和 $k$第二行有 $n$ 个正整数 $a_i$
$1≤n≤10^5$$1≤k≤10^{12}$$1≤a_i≤10^9$
输出描述
不超过 $k$ 次操作之后,数组中可能出现最多次数元素的次数。
示例1
输入
125 36 3 20 8 1
输出
12
说明
共 $3$ 次操作如下:第一个数加一。第二个数加一。第四个数减一。数组变成了 $7,4,20,7,1$ ,共有 $2$ 个相同的数:$7$ 。可以证明,$2$ 为最优解。另外,此上操作并不是唯一的操作。
题解知识点:二分,前缀和,双指针,枚举。
排序好数列中,若要构成相同的数字,那么构成子串是同样情况下花费次数最少的,因此考虑遍历所有左端点,且每次左移左端点不需要回调右端点,因为左移端点后区间长度一定小于等于原来合法最大值,就算区间内有合法右端点但 ...
HNOI2003激光炸弹
[HNOI2003]激光炸弹题目描述一种新型的激光炸弹,可以摧毁一个边长为 $m$ 的正方形内的所有目标。现在地图上有 $n$ 个目标,用整数 $x_i$ , $y_i$ 表示目标在地图上的位置,每个目标都有一个价值 $v_i$ .激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆破范围,即那个边长为 $m$ 的边必须与 $x$ 轴, $y$ 轴平行。若目标位于爆破正方形的边上,该目标不会被摧毁。
现在你的任务是计算一颗炸弹最多能炸掉地图上总价值为多少的目标。
输入格式输入的第一行为整数 $n$ 和整数 $m$,
接下来的 $n$ 行,每行有 $3$ 个整数 $x, y, v$,表示一个目标的坐标与价值。
输出格式输出仅有一个正整数,表示一颗炸弹最多能炸掉地图上总价值为多少的目标(结果不会超过 $32767$ )。
样例 #1样例输入 #11232 10 0 11 1 1
样例输出 #111
提示数据规模与约定
对于 $100\%$ 的数据,保证 $1 \le n \le 10^4$,$0 \le x_i ,y_i \le 5\times 10^3$,$1 \le m \le 5 ...
NC202498货物种类
[NC202498] 货物种类题目描述 某电商平台有$n$个仓库,编号从$1$到$n$。
当购进某种货物的时候,商家会把货物分散的放在编号相邻的几个仓库中。
我们暂时不考虑售出,你是否能知道,当所有货物购买完毕,存放货物种类最多的仓库编号为多少?
输入描述:在第一行中给出两个正整数 $n,m,1≤n,m≤10^5$,分别代表仓库的数目和进货的次数。接下来 $m$ 行,每行三个正整数 $l,r,d,1 \le l,r \le n, 1 \le d \le 10^9$ 。编号在 $l$ 和 $r$ 之间的仓库收进编号为 $d$ 的货物。(包括 $l$ 和 $r$)
输出描述:在一行中输出存放货物种类最多的仓库编号,若满足条件的仓库不止一个,则输出编号最小的那个。
示例1
输入
1234565 51 1 13 3 12 5 25 5 14 5 1
输出
13
AC代码:123456789101112131415161718192021222324252627282930313233343536373839404142434445#include <iostr ...
CQOI2009中位数
[CQOI2009] 中位数题目描述给出 $1,2,…,n$ 的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 $b$。中位数是指把所有元素从小到大排列后,位于中间的数。
输入格式第一行为两个正整数 $n$ 和 $b$,第二行为 $1,2,…,n$ 的排列。
输出格式输出一个整数,即中位数为 $b$ 的连续子序列个数。
样例 #1样例输入 #1127 45 7 2 4 3 1 6
样例输出 #114
提示数据规模与约定对于 $30\%$ 的数据中,满足 $n \le 100$;
对于 $60\%$ 的数据中,满足 $n \le 1000$;
对于 $100\%$ 的数据中,满足 $n \le 100000,1 \le b \le n$。
AC代码12345678910111213141516171819202122232425262728293031#include <iostream>#include <map>#define LL long longusing namespace std;int n,b,p[100010]{} ...