蓝桥杯
王文波~
清。。
展开
-
糖果。。。。。。。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 110;const int M = 1 << 21;int f[M];int a[N];int n, m, k;int main(){ scanf("%d%d%d", &n, &m, &am原创 2021-03-24 16:03:47 · 264 阅读 · 0 评论 -
糖果
//ö¾ÙËùÓеÄ×Ó¼¯ for (int i = s; i; i = (i - 1) & s)#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <set>using namespace std;const int N = 110;const int M = (1 << 22) + 1原创 2021-03-23 21:52:02 · 102 阅读 · 0 评论 -
外卖店优先级
外卖店优先级#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <map>using namespace std;typedef pair<int, int> PII;map<int, PII> mp;const int N = 1e5 + 10;bool st[N];PII a[原创 2021-03-23 20:48:51 · 117 阅读 · 0 评论 -
第十一届蓝桥杯大赛第二场省赛试题
A门牌制作#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int calc(int x){ int ans = 0; while(x){ int temp = x % 10; if (temp == 2) ans ++; x /= 10; } return ans;}int m原创 2021-03-23 13:37:07 · 315 阅读 · 0 评论 -
回文日期
在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。一个 8 位数字是回文的,当且仅当对于所有的 i(1...原创 2020-05-31 17:31:43 · 163 阅读 · 1 评论 -
错误票据
某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。输入格式第一行包含整数 NN,表示后面共有 NN 行数据。接下来 NN 行,每行包含空格分开的若干个(不大于100个)正整数(不大于100000),每个整数代表一个ID号。输出格式要求程序输原创 2020-05-31 17:07:07 · 605 阅读 · 0 评论 -
特别数的和
小明对数位中含有 2、0、1、92、0、1、9 的数字很感兴趣(不包括前导 00),在 11 到 4040 中这样的数包括 1、2、9、101、2、9、10 至 32、3932、39 和 4040,共 2828 个,他们的和是 574574。请问,在 11 到 nn 中,所有这样的数的和是多少?输入格式共一行,包含一个整数 nn。输出格式共一行,包含一个整数,表示满足条件的数的和。数据范围1≤n≤100001≤n≤10000输入样例:40输出样例:574#include <io原创 2020-05-31 16:44:55 · 897 阅读 · 0 评论 -
递增三元组
给定三个整数数组A=[A1,A2,…AN]A=[A1,A2,…AN],B=[B1,B2,…BN]B=[B1,B2,…BN],C=[C1,C2,…CN]C=[C1,C2,…CN],请你统计有多少个三元组 (i,j,k)(i,j,k)满足:1≤i,j,k≤N1≤i,j,k≤NAi<Bj<CkAi<Bj<Ck输入格式第一行包含一个整数 NN。第二行包含 NN个整数 A1,A2,…ANA1,A2,…AN。第三行包含 NN个整数 B1,B2,…BNB1,B2,…BN。原创 2020-05-31 16:31:24 · 145 阅读 · 0 评论 -
连号区间数
小明这些天一直在思考这样一个奇怪而有趣的问题:在 1∼N1∼N的某个排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间 [L,R][L,R]里的所有元素(即此排列的第 LL个到第 RR个元素)递增排序后能得到一个长度为 R−L+1R−L+1的“连续”数列,则称这个区间连号区间。当 NN很小的时候,小明可以很快地算出答案,但是当 NN变大的时候,问题就不是那么简单了,现在小明需要你的帮助。输入格式第一行是一个正整数 NN,表示排列的规模。第二行是 NN个不同的数字 PiPi,表原创 2020-05-31 15:46:15 · 217 阅读 · 0 评论 -
地宫取宝
X 国王有一个地宫宝库,是 n×mn×m 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是 kk 件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 kk 件宝贝。输入格式第一行 33 个整数,n,m,kn,m,原创 2020-05-31 15:20:50 · 103 阅读 · 0 评论 -
最长上升子序列
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤1000,−109≤数列中的数≤109−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4#include <iostream>#include <cstdio>#include <cstring>#include &l原创 2020-05-31 14:35:57 · 159 阅读 · 0 评论 -
摘花生
Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。 输入格式第一行是一个整数T,代表一共有多少组数据。接下来是T组数据。每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。每组数据的接下来R行数据,从北向南依次描述每行花原创 2020-05-31 14:23:43 · 171 阅读 · 0 评论 -
01背包问题
有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vivi,价值是 wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有 NN 行,每行两个整数 vi,wivi,wi,用空格隔开,分别表示第 ii 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<N,V≤10000原创 2020-05-31 14:14:32 · 120 阅读 · 0 评论 -
饮料换购
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 nn 瓶饮料,最后他一共能喝到多少瓶饮料。输入格式输入一个整数 nn,表示初始买入的饮料数量。输出格式输出一个整数,表示一共能够喝到的饮料数量。数据范围0<n<100000<n<10000输入样例:100输出样例:149#include <iostrea原创 2020-05-31 14:07:01 · 105 阅读 · 0 评论 -
蚂蚁感冒
长 100100 厘米的细长直杆子上有 nn 只蚂蚁。它们的头有的朝左,有的朝右。每只蚂蚁都只能沿着杆子向前爬,速度是 11 厘米/秒。当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。这些蚂蚁中,有 11 只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。输入格式第一行输入一个整数 nn, 表示蚂蚁的总数。接着的一行是 nn 个用空格分开的整数 XiXi, XiXi 的绝对值表示蚂蚁离开杆子左边端点的距离。正值表示原创 2020-05-31 14:00:14 · 155 阅读 · 0 评论 -
数学与简单DP----------买不到的数目
小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入格式两个正整数 n,mn,m,表示每种包装中糖的颗数。输出格式一个正整数,表示最大不能买到的糖数。数据范围2≤n,m≤100原创 2020-05-31 13:36:40 · 128 阅读 · 0 评论 -
二分与前缀和----------------K倍区间
给定一个长度为 NN 的数列,A1,A2,…ANA1,A2,…AN,如果其中一段连续的子序列 Ai,Ai+1,…AjAi,Ai+1,…Aj 之和是 KK 的倍数,我们就称这个区间 [i,j][i,j] 是 KK 倍区间。你能求出数列中总共有多少个 KK 倍区间吗?输入格式第一行包含两个整数 NN 和 KK。以下 NN 行每行包含一个整数 AiAi。输出格式输出一个整数,代表 KK 倍区间的数目。数据范围1≤N,K≤1000001≤N,K≤100000,1≤Ai≤1000001≤Ai≤100原创 2020-05-30 22:24:35 · 93 阅读 · 0 评论 -
二分与前缀和---------激光炸弹
地图上有 NN个目标,用整数Xi,YiXi,Yi表示目标在地图上的位置,每个目标都有一个价值WiWi。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁一个包含 R×RR×R个位置的正方形内的所有目标。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和x,yx,y轴平行。求一颗炸弹最多能炸掉地图上总价值为多少的目标。输入格式第一行输入正整数 NN和 RR,分别代表地图上的目标数目和正方形的边长,数据用空格隔开。接下来NN行,每行输入一组数据,原创 2020-05-30 22:00:21 · 105 阅读 · 0 评论 -
二分与前缀和----------分巧克力
儿童节那天有 KK位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 NN块巧克力,其中第 ii块是 Hi×WiHi×Wi的方格组成的长方形。为了公平起见,小明需要从这 NN块巧克力中切出 KK块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数 大小相同 例如一块 6×56×5的巧克力可以切出 66块 2×22×2的巧克力或者 22块 3×33×3的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入格式第一行原创 2020-05-30 18:12:12 · 147 阅读 · 0 评论 -
二分与前缀和--------------四平方和
四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多 44 个正整数的平方和。如果把 00 包括进去,就正好可以表示为 44 个数的平方和。比如:5=02+02+12+225=02+02+12+227=12+12+12+227=12+12+12+22对于一个给定的正整数,可能存在多种平方和的表示法。要求你对 44 个数排序:0≤a≤b≤c≤d0≤a≤b≤c≤d并对所有的可能表示法按 a,b,c,da,b,c,d 为联合主键升序排列,最后输出第一个表示法。输入格式输入一个正整数原创 2020-05-30 17:14:43 · 184 阅读 · 0 评论 -
二分与前缀和---------------机器人跳跃问题
机器人正在玩一个古老的基于DOS的游戏。游戏中有N+1座建筑——从0到N编号,从左到右排列。编号为0的建筑高度为0个单位,编号为 i 的建筑高度为H(i)个单位。起初,机器人在编号为0的建筑处。每一步,它跳到下一个(右边)建筑。假设机器人在第k个建筑,且它现在的能量值是E,下一步它将跳到第k+1个建筑。如果H(k+1)>E,那么机器人就失去H(k+1)-E的能量值,否则它将得到E-H(k+1)的能量值。游戏目标是到达第N个建筑,在这个过程中能量值不能为负数个单位。现在的问题是机器人至少原创 2020-05-30 16:52:27 · 117 阅读 · 0 评论 -
子矩阵的和
输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。输出格式共q行,每行输出一个询问的结果。数据范围1≤n,m≤10001≤n,m≤1000,1≤q≤2000001≤q≤200000,1≤x1≤x2≤n1≤x1≤x2≤原创 2020-05-30 16:28:43 · 163 阅读 · 0 评论 -
二分与前缀和-----------数的三次方根
给定一个浮点数n,求它的三次方根。输入格式共一行,包含一个浮点数n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。数据范围−10000≤n≤10000−10000≤n≤10000输入样例:1000.00输出样例:10.000000#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace原创 2020-05-30 16:20:50 · 96 阅读 · 0 评论 -
二分与前缀和-----------------数的范围
给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回“-1 -1”。数据范围1≤n≤1000001≤n原创 2020-05-30 16:07:37 · 85 阅读 · 0 评论 -
递归与递推--------------翻硬币
小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:oo*oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作。输入格式两行等长的字符串,分别表示初始状态和要达到的目标状态。输出格式一个整数,表示最小操作步数数据范围输入原创 2020-05-30 15:46:59 · 135 阅读 · 0 评论 -
递归与递推---------------飞行员兄弟
飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个4х4的矩阵,您可以改变任何一个位置[i,j]上把手的状态。但是,这也会使得第i行和第j列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。输入格式输入一共包含四行,每行包含四个把手的初始状态。符号“+”表示把手处于闭合状态,而符号“-”表示把手处于打开状态。至少一个手柄的初始状态是关闭的。原创 2020-05-30 15:33:13 · 101 阅读 · 0 评论 -
带分数
100100 可以表示为带分数的形式:100=3+69258714100=3+69258714还可以表示为:100=82+3546197100=82+3546197注意特征:带分数中,数字 1∼91∼9 分别出现且只出现一次(不包含 00)。类似这样的带分数,100100 有 1111 种表示法。输入格式一个正整数。输出格式输出输入数字用数码 1∼91∼9 不重复不遗漏地组成带分数表示的全部种数。数据范围1≤N<1061≤N<106输入样例1:100输出样例1:11输原创 2020-05-30 14:47:21 · 93 阅读 · 0 评论 -
递归实现组合型枚举----------------递归与递推
从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。输入格式两个整数 n,mn,m ,在同一行用空格隔开。输出格式按照从小到大的顺序输出所有方案,每行1个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1 3 5 7排在1 3 6 8前面)。数据范围n>0n>0 ,0≤m≤n0≤m≤n ,n+(n−m)≤25n+(n−m)≤25输入样例:5 3输出样例:1 2 31 2原创 2020-05-30 13:58:10 · 122 阅读 · 0 评论 -
递归与递推-------------------费解的开关
你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变成:0111111101101111000011011再改变它正中间的灯后状态将变成:0111111001原创 2020-05-30 13:25:49 · 775 阅读 · 0 评论 -
递归与递推-----------简单斐波那契
以下数列0 1 1 2 3 5 8 13 21 …被称为斐波纳契数列。这个数列从第3项开始,每一项都等于前两项之和。输入一个整数N,请你输出这个序列的前N项。输入格式一个整数N。输出格式在一行中输出斐波那契数列的前N项,数字之间用空格隔开。数据范围0<N<460<N<46输入样例:5输出样例:0 1 1 2 3#include <iostream>#include <cstdio>#include <cstring>原创 2020-05-30 13:00:03 · 122 阅读 · 0 评论 -
递归实现排列型枚举
把 1~nn 这 nn 个整数排成一行后随机打乱顺序,输出所有可能的次序。输入格式一个整数n。输出格式按照从小到大的顺序输出所有方案,每行1个。首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。数据范围1≤n≤91≤n≤9输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1#include <iostream>#include <cstdio>#include原创 2020-05-30 12:12:15 · 100 阅读 · 0 评论 -
递归与递推--------递归实现指数型枚举
从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤151≤n≤15输入样例:3输出样例:322 311 31 21 2 3#include <iostream>#include <cstdio>#inclu原创 2020-05-30 11:43:50 · 88 阅读 · 0 评论