10 2023 档案

摘要:F - Robot Rotation 一句话不开LL,见祖宗 感谢大佬,和洛谷上的题解 上面已经将的很清楚了,但是如果你跟我一样一开始看不懂他们的代码,那么这篇可能为你解惑 点击查看代码 #include <bits/stdc++.h> using namespace std; #define LL 阅读全文
posted @ 2023-10-31 23:49 不o凡 阅读(30) 评论(0) 推荐(0)
摘要:P4999 烦人的数学作业 注意取模可能会产生负数 点击查看代码 #include <bits/stdc++.h> using namespace std; #define LL long long const int N=250,mod=1e9+7; LL f[106][200];//长度为i时, 阅读全文
posted @ 2023-10-31 16:37 不o凡 阅读(29) 评论(0) 推荐(0)
摘要:P8764 [蓝桥杯 2021 国 BC] 二进制问题 点击查看代码 #include <bits/stdc++.h> using namespace std; #define LL long long const int N=250,mod=998244353; LL f[106][106];// 阅读全文
posted @ 2023-10-31 16:15 不o凡 阅读(68) 评论(0) 推荐(0)
摘要:P2602 [ZJOI2010] 数字计数 没想到这么大,记得开LL 调试了许久,只能说灵茶太牛了 点击查看代码 #include <bits/stdc++.h> using namespace std; #define LL long long const int N=250,mod=998244 阅读全文
posted @ 2023-10-30 21:57 不o凡 阅读(17) 评论(0) 推荐(0)
摘要:神奇数 点击查看代码 #include <bits/stdc++.h> using namespace std; const int N=250,mod=998244353; int f[N][2000];//长度为i时,前pos-1项的和为j的合法数 string s; //pos位置,sum== 阅读全文
posted @ 2023-10-29 20:16 不o凡 阅读(18) 评论(0) 推荐(0)
摘要:bfs 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; #define LL long long int cnt,h[N],to[N*2],w[N*2],ne[N*2]; void add(int a,i 阅读全文
posted @ 2023-10-25 20:09 不o凡 阅读(13) 评论(0) 推荐(0)
摘要:E. Look Back 因为每次都是2,可以推出x<=y2^(n),转化成 x/y<=2^(n),求n直接取对数即可 注意: 1.答案很大要开LL 2.不要直接乘,会爆LL,直接利用原式即可,如果后面的大,就减去大多少的对数 3.记得向上取整 点击查看代码 #include<bits/stdc++ 阅读全文
posted @ 2023-10-23 17:20 不o凡 阅读(156) 评论(0) 推荐(0)
摘要:B. Friendly Arrays 依据异或特性,如果n为偶数,单调递减:与b[i]|越多越小 反之递增 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=2e5 + 10; #define LL long long i 阅读全文
posted @ 2023-10-22 17:43 不o凡 阅读(21) 评论(0) 推荐(0)
摘要:C. Colorful Table 设p1为最左边的a[p1]>=i,p2为最右边的a[p2]>=i,则i的面积大小为行的p1-p2,列的p1-p2,大小为2*(p2-p1+1) 但是如果暴力的去求每个点的左右端点,肯定会超时,有没有办法优化呢? 1.我们想到,大的数一定包含小的数:如果大的数算出来 阅读全文
posted @ 2023-10-22 16:03 不o凡 阅读(24) 评论(0) 推荐(0)
摘要:__builtin __builtin_popcount(x): 返回x的二进制表示中1的个数。 __builtin_clz(x): 返回x的二进制表示中从最高位开始连续0的个数,如果x的值为0,则返回所在类型的位宽。 __builtin_ctz(x): 返回x的二进制表示中从最低位开始连续0的个数 阅读全文
posted @ 2023-10-22 11:08 不o凡 阅读(35) 评论(0) 推荐(0)
摘要:B. Chips on the Board 题意:保证在n*n的棋盘上对于每一个点的列或者行都有一个筹码,也可以两个都有,问最小筹码:对于每一个筹码计算:a[i]+b[i]; 要使每个点都满足,最少的筹码的个数应该为n 1.对于行来看,如果每一行都有一个筹码,那么列就可以随便填:直接全选择最小的列 阅读全文
posted @ 2023-10-20 16:05 不o凡 阅读(32) 评论(0) 推荐(0)
摘要:P1525 [NOIP2010 提高组] 关押罪犯 法一:二分图 把犯人分配到两个监狱,使得监狱内的怒气值最大最小 分配到两个集合中,考虑二分染色 分析因为答案具有单调性所以可以二分: 判断x是否符合,只需要重建大于x的边,如果不能把它们分到两个集合中(二分染色失败),就往上调(考虑无限大,那么就不 阅读全文
posted @ 2023-10-19 19:38 不o凡 阅读(122) 评论(0) 推荐(0)
摘要:P1892 [BOI2003] 团伙 如果你wa,可能是合并的顺序出错 [1,n]表示朋友,[n+1,2*n]表示敌人 如果a,b是朋友,直接合并a,b 如果a,b是敌人: 1.合并a+n和b,a的敌人是b的朋友 2.合并a和b+n,b的敌人是a的朋友 点击查看代码 #include<bits/st 阅读全文
posted @ 2023-10-19 15:20 不o凡 阅读(11) 评论(0) 推荐(0)
摘要:P2024 [NOI2001] 食物链 法一:种类并查集 A->B->C->A [1,n]:表示同类, [n+1,2n]:表示猎物,[2n+1,3*3]:表示天敌 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N = 5e 阅读全文
posted @ 2023-10-18 22:11 不o凡 阅读(96) 评论(0) 推荐(0)
摘要:E. Cardboard for Pictures 如果没有过可能是爆LL,在循环判断即可 二分枚举宽度大小,比较两者面积 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N = 2e5+10,mod=1e11; #defi 阅读全文
posted @ 2023-10-17 17:06 不o凡 阅读(26) 评论(0) 推荐(0)
摘要:P1019 [NOIP2000 提高组] 单词接龙 注意:1.相邻不包含2.每个单词最多使用两次3.如果两部分可以接龙,直接退出,因为如果再继续,长度一定变短(因为相邻的会抵销)4.加个特殊字符,这样就可以不用特判了 因为n很小,直接暴力枚举 1.如果两个可以接龙直接合并(注意相邻相同要抵消) 2. 阅读全文
posted @ 2023-10-16 11:41 不o凡 阅读(176) 评论(0) 推荐(0)
摘要:T175410 分成互质组 因为n很小,直接暴力枚举 两种状态: 1.放入桶中。如果当前数字可以放入某个桶中,放入。如果可以放入多个桶,先一个一个来,全部枚举。 注意:枚举完之后记得恢复现场 2.新开辟一个桶。如果不能放入,则开辟一个桶。如果可以放入,也可以选着不放入,再新开辟一个桶:防止遗留 点击 阅读全文
posted @ 2023-10-16 11:17 不o凡 阅读(17) 评论(0) 推荐(0)
摘要:P1364 医院设置 方法1: 因为n很小,所以考虑暴力多源路径 直接算出每个点到所有点的最短路,然后把每个点都作为医院,暴力求解 点击查看代码 #include<bits/stdc++.h> using namespace std; #define LL long long const int N 阅读全文
posted @ 2023-10-15 21:07 不o凡 阅读(98) 评论(0) 推荐(0)
摘要:D - Square Permutation 须知:最大的平方数的平方一定小于等于10n,平方数最多为10(n/2)(因为再大会越界) 因为要求的数一定是原数的排列组合,所以它们的元素和对应的元素个数一定相同 所以只要判断平方数的字符串是否与原字符串相等即可(这里可以利用排序判断) 点击查看代码 # 阅读全文
posted @ 2023-10-15 16:26 不o凡 阅读(64) 评论(0) 推荐(0)
摘要:D. Divide and Equalize 思路: 1.某个数除以x,某个数再乘以x,可发现数组总的乘积没有变化 2.也就是说,要使数组中的每一个元素相同,它们总的质因子应该满足:某个质因子的数量%n==0 赛后才发现,痛失上大分 E. Block Sequence 简单的dp dp[i],表示删 阅读全文
posted @ 2023-10-13 20:46 不o凡 阅读(94) 评论(0) 推荐(0)
摘要:降雨量 可以利用线段树,st表 模板+模拟 思路: 1.利用st表,先算出每个区间内的最大值 2.模拟: 2.1因为true要求的条件更加苛刻,所以先对true分析: 1.两端年份存在 2.年份连续 3.俩年份内的最大值小于右端 4.左端降雨量小于等于右端 2.2 对false分析: 1.特判:如果 阅读全文
posted @ 2023-10-12 18:56 不o凡 阅读(27) 评论(0) 推荐(0)
摘要:P3865 【模板】ST 表 利用倍增 f[i][j]表示,范围[i,i+2^(j)-1]内的最大值是多少 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int f[N][22]; int ma 阅读全文
posted @ 2023-10-12 15:03 不o凡 阅读(10) 评论(0) 推荐(0)
摘要:A. Sum of Three 思路1: 1.把数拆成1,2,n-3 2.如果(n-3)%3==0,那么拆成1,4,n-5,可证明n-3如果可被3整除,那么再左移两位一定除不尽 思路2: 1.如果n是奇数,那么可取一个数为2,其他两数为相邻数,如果两数其中一位被整除,那么两者往外走 2.如果n为偶, 阅读全文
posted @ 2023-10-10 19:39 不o凡 阅读(23) 评论(0) 推荐(0)
摘要:D. Effects of Anti Pimples 思路: 1.设f[i]=max(a[i],a[i*2],...),选i时的最大值 2.f进行从大到小排序 3.我们如果选了f[i],要保证选法的最大值是f[i]的方法因该为2^(n-i),因为选后面的一定保证最大值小于f[i] 规律: 1.我们发 阅读全文
posted @ 2023-10-09 18:21 不o凡 阅读(36) 评论(0) 推荐(0)
摘要:C. Joyboard 找规律我们可以发现: 为了方便对a[n+1]取值为x 1.如果x=0,只有0,k=1 2.如果1<=x<=n,在i<=x,a[i]=0;在i>x ,a[i]=x,k=2 3.如果x>n,需要分类: 3.1 如果x%n==0,i<=n,a[i]=0,a[n+1]=x,k=2 3 阅读全文
posted @ 2023-10-09 16:41 不o凡 阅读(12) 评论(0) 推荐(0)
摘要:推荐视频:模意义下的乘法逆元 特点:除以一个数取模等于乘以这个数的逆元取模:a/n%mod==a* n^(mod-2)%mod(费马小定理) 1.费马小定理 前提:p为质数 n的逆元等于n^(p-2) 点击查看代码 #include<bits/stdc++.h> using namespace st 阅读全文
posted @ 2023-10-08 13:34 不o凡 阅读(13) 评论(0) 推荐(0)
摘要:E - Playlist 首先需要算出第x+0.5秒后,第一首歌播放的概率 1.要在x+0.5秒后播放第一首,需要在x,x-1,x-2,...,x-t[1]+1,时就要开始播放第一首,并且概率是1/n,概率之和除以n 2.概率dp,dp[i]表示播放i的概率,那么可以转换成,dp[i]+=dp[i- 阅读全文
posted @ 2023-10-08 13:04 不o凡 阅读(44) 评论(0) 推荐(0)
摘要:G. Vlad and the Mountains 题意:给你每个点的高度,从a到b需要消耗h[b]-h[a]的体力值(所以说下坡时体力值可以增加),询问一开始你有e的体力值,问是否可以从u->v点 分析: 1.a->b最终消耗的体力值一定为h[b]-h[a],如果一开始的体力值都达不到肯定无法过 阅读全文
posted @ 2023-10-07 14:54 不o凡 阅读(13) 评论(0) 推荐(0)
摘要:F. Lisa and the Martians 问题求y =(a[i] ^ x)& (a[j] ^ x)最大,可知x可自由选择,那么我们就考虑y怎么取最大值 1.根据&,可知a[i]a[j]1时,二进制该位置为1,若x可使得俩位置为1,那么就转换成最多的a[i]==a[j]的位置,也就是a[i]^ 阅读全文
posted @ 2023-10-06 22:49 不o凡 阅读(21) 评论(0) 推荐(0)
摘要:D. Prefix Permutation Sums 吐槽:读题不仔细,还以为原数组的取值是任意的,最后看题解的时候才发现取值在[1,n],当时因为看不懂直接跳过了 题意:给你一个缺了一个的前缀和数组,让你判断是否存在原数组,取值[1,n],每个数只存在一次 可以分类讨论 1 缺少最后一个前缀和 2 阅读全文
posted @ 2023-10-06 16:41 不o凡 阅读(36) 评论(0) 推荐(0)
摘要:E. Nastya and Potions 思路:直接对比制造这份药剂和直接买那个更好 判断特殊: 1.如果已经拥有就不用再买了 2.如果只能买,就直接买 方法: 1.dfs,因为要制造3,可能先要制造1,这样我们就dfs把条件从叶子节点全都往上传就行 优化: 1.如果之前已经知道了制造的价格,那么 阅读全文
posted @ 2023-10-06 14:56 不o凡 阅读(21) 评论(0) 推荐(0)
摘要:P3901 数列找不同 莫队:一种离线处理的优化暴力解法,时间复杂度在n * n^(1/2),会被卡常数,但是极为简单 推荐视频:莫队算法 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int 阅读全文
posted @ 2023-10-04 18:32 不o凡 阅读(12) 评论(0) 推荐(0)
摘要:G. Counting Graphs 题意:添加几条线段,使得图仍保持原先的最小生成树 通过画图我们发现,要添加u->v的线段,线段必须大于u->v的路径内的最大值,不然会破坏原先的最小生成树。 那么该怎么维护路径内的最大值呢? 方法: 1.我们对边的大小进行排序,这样当前边一定大于等于之前的边,只 阅读全文
posted @ 2023-10-04 10:57 不o凡 阅读(16) 评论(0) 推荐(0)
摘要:F. Sum and Product 吐槽:太疯狂了,想使用unordered_map快一些结果超时了十几次!,反而用普通的map快速AC,查了发现unordered_map依赖于散列表,如果哈希函数映射的关键码出现的冲突过多,则最坏时间复杂度可以达到是O(n)。真的会有人卡umap(哭) 此题就是 阅读全文
posted @ 2023-10-03 20:10 不o凡 阅读(13) 评论(0) 推荐(0)
摘要:E. Power of Points 题意很简单:从左到右取点,输出该点到每个点的距离之和 思路: 1.对一个有序的序列进行计算,我们发现从左往右,左边点数的距离会增加,右边点数的距离会减小 2.因此我们只需暴力的计算第一个点到所有点的距离之和,接下来的点只需一步就可计算出来 2.1 ans+=左边 阅读全文
posted @ 2023-10-03 15:28 不o凡 阅读(13) 评论(0) 推荐(0)
摘要:D. Strong Vertices 条件转移一下即可 由a[u]−a[v]≥b[u]−b[v],可得a[u]-b[u]>=a[v]-b[v]。 设c[i]=a[i]-b[i],由题意得只要c[i]>=cj,点i就有指向j的路。 因此题目就转化成:求c数组中最大元素的个数及其位置。 点击查看代码 # 阅读全文
posted @ 2023-10-03 14:25 不o凡 阅读(19) 评论(0) 推荐(0)
摘要:C. Assembly via Minimums 找规律 首先根据题意,B组数据的顺序是完全没有关系的,因为可以随意打乱,所以a组的值一定在b组里找,这不是废话。 其次我们观察数据可知,最小值出现的次数是n-1,比较好理解的方法是:分别把最小值放在开头和结尾,因为要取最小值所以在B组出现的次数一定是 阅读全文
posted @ 2023-10-02 21:32 不o凡 阅读(35) 评论(0) 推荐(0)
摘要:F - Vacation Query 此题与4301 Can you answer on these queries III类似 只不过要维护0和1两个值 解法: 区间修改和查询,可以利用线段树 1.两区间合并的答案,要么lc(左子树)中,要么在rc(右子树)中,但是也有可能出现在(lc的右端点连续 阅读全文
posted @ 2023-10-01 17:06 不o凡 阅读(90) 评论(0) 推荐(1)
摘要:E - Product Development 一眼看上去,选与不选,很像01背包问题,很显然当k=1时就是01背包 那我们可以想到设置dp[i],表示目标为i时所要花费的最小代价,直接套用01背包模板 但是题目写道要满足多个k值,也就是多个背包问题,那该怎么办 但是我们可以看到,p<=5,小于10 阅读全文
posted @ 2023-10-01 10:37 不o凡 阅读(55) 评论(1) 推荐(1)