05 2022 档案
摘要:A:Bookshelf Filling 分析:只能横着放 并且右边b至少还剩下一个 最小化宽度 可以先把横着能放的都先放过去 剩下的就是空格 最后二分一下就好 细节挺多的 #include<bits/stdc++.h> using namespace std; #define ll long lon
阅读全文
摘要:队友打的 思路是连续四个数就可以构造为0 例如 +7 -8 -9 +10 所以只要将前面的数字组合成17后面的连续四个为0 #include<bits/stdc++.h> using namespace std; int main () { int n; cin >> n; if (n < 4) {
阅读全文
摘要:比较简单的签到题 点击查看代码 #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long int T; ll gcd(ll aa,ll bb){ if(bb)return gc
阅读全文
摘要:分析:发现越到后面分出去 它对整个答案的贡献加的次数就越多 所以我们想尽可能最小的最后分出去 找到当前最小和次小的删去 两者合并 再加入原序列中 依次这样操作就可 #include<iostream> #include<cstdio> #include<queue> using namespace
阅读全文
摘要:题目大意: 一个坐标轴 要到0点 车子有初始的位置和油量 有n个加油站 每个最多可以加pi油 求到达0点最少需要加的次数 (油箱unlimit) 分析: 首先加油肯定是能加多少就加多少 对于路过的加油站我们放入待选区 等到我们需要他们的时候就加油 肯定是选之前所有路过能加最多的优先选择 用一个优先队
阅读全文
摘要:问题简化: 先给你6个数 a1 ~ a6 还有n个数b1 ~ bn 对于 b[i](1<=i<=n) 选择a1 ~ a6的任意一个减去,问最后b数组中的最大值与最小值的差的最小值为多少 分析: 首先dp肯定不行的 数字太大状态不能储存 硬着头皮想也想不出来 既然我们不知道到底该减哪个数 索性都减一遍
阅读全文
摘要:分析:首先小偷要躲过每一个灯塔 小偷躲过一个灯塔只需要横坐标或纵坐标大于即可 想到可以处理处每个小偷相对每个灯塔最少移动步数<ax,ay>分别表示纵坐标或者横坐标移动数 一组<ax,ay>只需要我们满足其中一个即可 这就回到一个模型上面 转化到这个模型上面还是有一定的难度的 https://zhua
阅读全文
摘要:简单地说,就是给出一张名字的列表,要找到一张字母表使得这张人名的列表是按字典序排列的。 这不就是今年天梯赛的原题嘛? 拓扑排序没的说 需要注意的点:可能存在前缀相等但是长度不等 判断possible或者impossible的时候这种情况非常容易忽略 再就是如果拓扑排序存在环 也就是最后仍然存在度数不
阅读全文
摘要:分析:类似最大子矩阵问题 判断条件修改一下就好 up[i][j] 表示点(i,j)最大向上扩展的高度 这个可以预处理出来 剩下的就是单调栈的模板题型 求最大矩形面积 对每一行进行单调栈处理 L[i][j] R[i][j] 分别表示点(i,j) 最大向左向右扩展的位置 #include<bits/st
阅读全文
摘要:分析: 不难发现首先我们找到二进制最大的为1的那个数maxx 我们得到的答案起码最高位是1 然后如果想要答案最大 就想尽可能使得后面为0的均为1 发现 maxx-1 就是后面位均为1 这样两者异或一定是最大的 但是可能[L,R]没有将两者包括 也就是说区间最高位都是1 那这样怎么办? 这时候发现无论
阅读全文
摘要:这个题目和费用提前算不太一样 两者本质上都是消除后效性 这个题不同的就是不知道后面到底哪些要选 而费用提前算是后面的一定都是会选的 所以这个题巧妙地从后往前转移 这样转移前面的一定是后面最优策略 转移方程非常像算期望值 #include <iostream> #include <cstdio> #i
阅读全文
摘要:签到题没啥好说的 点击查看代码 #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long const int maxn=105; int T; int a[maxn]; voi
阅读全文
摘要:#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<stdlib.h> #include<string.h> #define re register int #define fo(i,a,b
阅读全文
摘要:其实这个题数据大一点也可以的 根据小凯的疑惑这道题结论 n,m 最小不能组合的数为n×m-m-n 那么对于2 3 最小不能合成的数为1 所以特判一下1 剩下所有的数都可以组合出来 如果出现三个及以上 连续的段相差为1一定不满足题意 如果要出现连续的段相差为2 就有且仅有两个连续段 首先排序 考虑每个
阅读全文
摘要:假设列数大于行数 先一右一下的走 最后只剩一排的时候只能 一上一右 一下一右 判断剩下为奇数还是偶数即可 还要特判不能走到的情况 点击查看代码 #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define
阅读全文
摘要:枚举一下就好 点击查看代码 #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long int T; int ksm(int a,int b){ int res=1; while
阅读全文
摘要:由于鄙人能力有限 只做了三道题 签到题 没啥好说的 点击查看代码 #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long const int maxn=5e4+5; void
阅读全文
摘要:当时做的时候感觉快要搞出来了的 但是最后还是没有 向鱼骨一样错开,比如 111110 000001 100000 111111 111110 000001 100000 111111 111110 000001 首先这样能保证合并之后全图都是0 考虑如果该点强制是1 那么该点是0的矩阵就变成1就好
阅读全文
摘要:https://www.luogu.com.cn/problem/P1984 当时一直在推 发现根本就推不出来 发现别人都是直接上OEIS 学到了 #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;
阅读全文