随笔分类 - 蓝桥杯
摘要:#include<iostream> #include<map> #include<string> #include<queue> #include<cstring> using namespace std; const int N = 400000; #define state pair<int,
阅读全文
摘要:问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5种铺法: 4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+2 4=2+2 编程用递归的方法
阅读全文
摘要:问题描述 如下图所示,3 x 3 的格子中填写了一些整数。 + +--+ |10 1|52| +--***--+ |20|30 1| *******--+ | 1| 2| 3| +--+--+--+ 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60。 我们沿着图中的星号线剪开,得到两
阅读全文
摘要:问题描述 小D接到一项任务,要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点,每层的高度都不一样,同时,小D也拥有一项特殊能力,可以一次向上跳跃一层或两层,但是这项能力无法连续使用。已知向上1高度消耗的时间为1,跳跃不消耗时间。由于事态紧急,小D想知道他最少需要多少时间到达顶层。
阅读全文
摘要:\[ \begin{array} \ 设集合D = \{a, -b\},首项为x.\\ S = x + (x + d_1) + (x + d_1 + d_2) + (x + d_1 + d_2 + d_3) + ... + (x + ... + d_{n-1})\\ \ \ \ = nx + (n
阅读全文
摘要:问题描述 A同学的学习成绩十分不稳定,于是老师对他说:“只要你连续4天成绩有进步,那我就奖励给你一朵小红花。”可是这对于A同学太困难了。于是,老师对他放宽了要求:“只要你有4天成绩是递增的,我就奖励你一朵小红花。”即只要对于第i、j、k、l四天,满足i<j<k<l并且对于成绩wi<wj<wk<wl,
阅读全文
摘要:$f(i) = f(i + 1) + f(i + 2) ,st[i] = 0;\ f(i) = 0, st[i] = 1;$ #include<iostream> using namespace std; const int N = 50; int n, m; int st[N], f[N]; in
阅读全文
摘要:状态表示:f(i, j, k, c) 表示走到(i, j)格子,已经取到k件宝物,并且最后一件宝物的价值为c的所有取法的集合,存储数量属性 状态计算:集合划分 \(f(i, j, k, c)=\) 集合中所有的数量加起来 通过集合分析得到状态转移方程: $ f(i, j, k, c) = f(i-1
阅读全文
摘要:LIS:最长上升子序列问题,经典dp问题。 状态用一维来表示f(i) #include<iostream> using namespace std; const int N = 1010; int f[N]; int s[N]; int n, res; int main(){ cin >> n; f
阅读全文
摘要:f(i, j) 表示从(1, 1)走到(i, j) 的所有走法集合,存储集合中的路线中能够拿到的最大的花生数目。 f(i, j) 可以被不重不漏的分成两个部分: 从i - 1, j向南走一步到i, j的所有走法 从i, j - 1向东走一步到i, j的所有走法 所以有:\(f(i, j) = max
阅读全文
摘要:技巧:蚂蚁相撞反向行驶,可以看成是两个蚂蚁穿过了对方,这个不影响答案 #include<iostream> using namespace std; const int N = 60; int a[N]; int n; int main(){ cin >> n; for(int i = 0; i <
阅读全文
摘要:首先说明两个数如果不互质那么本题无解 裴蜀定理: \(gcd(a, b) = c, 如果c > 1那么一定存在x和y使得xa + yb = c\) 假设两个数不互质,假设存在最大的能表示的数m,那么有: \(xa + yb = m, 由于gcd(a, b) = c, 那么m = kc, 即xa +
阅读全文
摘要:问题描述 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在
阅读全文
摘要:#include<iostream> using namespace std; /* e > h[k + 1],跳到k + 1 塔上的能量:e + e - h[k + 1] = 2 * e - h[k + 1] e <= h[k + 1], 跳到k + 1 塔上的能量:e - (h[k + 1] -
阅读全文
摘要:注意二分的范围 #include<iostream> using namespace std; const int N = 100010; int h[N], w[N], n, k; /* 答案二段性:如果一个边长t满足,那么所有小于等于t的边长一定满足, 此时需要找最大的t */ int chec
阅读全文
摘要:推导过程: 前缀和数组:s[0 ~ n] 计算任意一端区间[l, r] (l, r属于[1 ~ n]) 的和使用公式s[r] - s[l - 1] 设l - 1 = t 本题要枚举r,res += s[t] (t 属于0 ~ r - 1)内的和s[r] 模k同余的数的个数 所以开一个cnt数组记一下
阅读全文
摘要:资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 n个人参加某项特殊考试。 为了公平,要求任何两个认识的人不能分在同一个考场。 求是少需要分几个考场才能满足条件。 输入格式 第一行,一个整数n(1<n<100),表示参加考试的人数。 第二行,一个整数m,表示接下来有m行数据 以下m行
阅读全文
摘要:四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多 4个正整数的平方和。如果把 0包括进去,就正好可以表示为 4个数的平方和。 比如: $5=02+02+12+22$ $7=12+12+12+22$ 对于一个给定的正整数,可能存在多种平方和的表示法。 要求你对 4 个数排序: $0≤a≤b
阅读全文
摘要:前缀和 #include<iostream> using namespace std; const int N = 1010; int a[N][N]; int n, m, q; int main(){ cin >> n >> m >> q; for(int i = 1; i <= n; i ++)
阅读全文
摘要:#include<iostream> #include<cstdio> using namespace std; int main(){ double n; cin >> n; double l = -10000, r = 10000; while(r - l > 1e-8){ // 由于要保留6位
阅读全文

浙公网安备 33010602011771号