![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维题
文章平均质量分 72
Cichard
这个作者很懒,什么都没留下…
展开
-
codeforces1169D 思维题+一个推论
1169D 1900的题但他就是思维题,还是有点暴力的思维题题意:给你一个字符串,然后让你从其中选出一段[l,r],并且要这段中存在s[i]=s[i+j]=s[i+j2], l<=i,i+j2<=r。问你存在多少段这样的l,r。思路:对于这个题目我一开始的想法就是找个等差的数列,然后进行划分。但是好像有点难实现,之后列出一些字符串,可以找到一个规律,当你划分的这一段长度大于等于9时,一定存在某个i和j使得这个段符合题条件。之后想到这个之后就可以尝试暴力了,毕竟9还是ok的。虽然说是暴力原创 2020-07-27 10:31:32 · 130 阅读 · 0 评论 -
codeforces1169C 二分答案+思维
##1169C1700的题,然而比赛的时候没有做出来。。题意:给你一个n表示序列长度为n,还有一个m表示这个序列的最大值小于m然后对这个数组进行多次操作,一次操作为 对ai,aj,ap,等k个数进行+1且对m取模,最后让这个序列变成一个不递减的序列,可以证明通过x次操作你是一定可以使这个数组符合条件,现在的问题是求得最少的操作次数x。思路:从题意可以看出这个题目的答案一定是在0~m之间,因为对于任何一个数组操作至多m次之后都可以变成0000的数组,所以对答案进行二分,然后对每个操作次数x进行分析,可原创 2020-07-26 22:05:58 · 279 阅读 · 0 评论 -
华东月赛 E题,思维题
https://acm.ecnu.edu.cn/contest/292/problem/E/E-因数串题意:给定一个数n为几个素数的几次方,你要找到一个序列,使得不重复的输出数n的所有约数,同时这个序列的约束是a[i]要从a[i-1]乘上或除以某个素数,输出这个序列思路:找规律,不想说啥 从第一个素数的个数先全部乘上,然后乘上另一个素数的一次方,然后出去这个之前素数的,具体看图把#include <cstdio>#include <iostream>#include &原创 2020-07-26 14:53:36 · 196 阅读 · 1 评论 -
牛客暑假多校2020第四场H题, 思维题
https://ac.nowcoder.com/acm/contest/5669/HH-Harder Gcd Problem题意:在1~n中选出2*m个数,排成两列数组长度p,q分别为m,且gcd(p,q)>1,问m最大为多少,且打印出你的两列数组思路:先用素数筛法,从小到大把2~n的数存放进一个二维数组,其中每一列的开头为素数,之后的以为为这个素数的倍数,而且整个二维数组没有重复的数,这里要进行一个记录。然后从大到小对这些筛选出来的数进行挑出,如果长度为偶数,那么直接筛出,如果长度为奇数,那么原创 2020-07-20 19:18:43 · 197 阅读 · 0 评论 -
滑动窗口 双端队列+模拟
牛客滑动窗口原创 2020-11-09 19:08:50 · 237 阅读 · 0 评论 -
codeforces 1443D Extreme Subtraction 贪心或差分
1433D Extreme Subtraction原创 2020-11-09 19:08:09 · 199 阅读 · 2 评论 -
数码 思维+模拟 牛客
数码#pragma GCC optimize("Ofast","inline","-ffast-math")#pragma GCC target("avx,sse2,sse3,sse4,mmx")#include<bits/stdc++.h> using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int, int> pii;#define rep(i,原创 2020-11-09 15:16:01 · 114 阅读 · 0 评论 -
1468: [蓝桥杯2019初赛]灵能传输 思维题+前缀和
1468: [蓝桥杯2019初赛]灵能传输思路:#include<bits/stdc++.h> using namespace std;typedef long long ll;#define int ll#define rep(i, a, n) for(int i = a; i < (int)n; i++)#define per(i, a, n) for(int i = (int)n-1; i >= a; i--)const int maxn = 3e5+10;i原创 2020-10-06 15:30:44 · 389 阅读 · 1 评论 -
codeforces1405D. Tree Tag 树的直径+思维
1405D 1900原创 2020-09-19 20:26:45 · 237 阅读 · 0 评论 -
codeforces1175C 贪心+思维
1175C 1600题意:给定一个序列a,找出一个x使得di=|ai-x|,然后对数组d进行排序,将d(k+1),作为结果,求x的位置使得d(k+1)思路:有点考思维,看了代码之后都还是有点蒙,首先是我们能想到的是对与x取值的讨论,如果x在[a[i], a[i+k]]区间内,不考虑这个区间之外的数,(为什么这么说呢,因为如果考虑了,那么第k+1大的数就可能不再这个区间内了,那么问题就来了,那结论不就是错误的了吗,但是我是对i进行了一个遍历,之后如果有更小的,会进行更新,也就不存在这样的的问题了)可以得到原创 2020-09-17 19:58:53 · 146 阅读 · 0 评论 -
codeforces1176D 数筛+思维
1176题意:思路:原创 2020-09-17 11:18:32 · 316 阅读 · 0 评论 -
codeforces1367D 思维模拟
1367D 1800原创 2020-09-08 10:55:37 · 140 阅读 · 0 评论 -
codeforces1392D 字符串处理
1292D 1700原创 2020-09-08 10:20:11 · 250 阅读 · 0 评论 -
codeforces1400B 贪心
1400B 1700的题题意:两个人有p和f的金币,一个店铺里有cnts把剑,cntw把斧头,剑的价值是s,斧头的价值是w,两人的金币不能合起来用,问如何买才能得到最多数量的工具思路:贪心,设剑的价值更小,首先把价值更小的全部买完,如果不行,直接打印,如果能,那么对第一个人枚举买剑的数量,同时在此情况下,能买最多斧头,另一个人把剩下的剑买完,然后在买最多数量的斧头即可代码如下:#pragma GCC optimize("Ofast","inline","-ffast-math")#pragma G原创 2020-08-28 10:37:47 · 215 阅读 · 0 评论 -
codeforces1400D 思维
1400D 1900的水题题意:一个数组找出有多少组i,j,k,l,使得a[i]=a[k]&&a[j]=a[l]思路:看到范围可以想到应该是一个o(n^2)的复杂度,对于这四个值,我们肯定不能直接暴力枚举,可以现固定一个点然后对其他点进行枚举,那么选哪个点进行固定就成了一个问题如果从一开始就说k是不太现实的,但是可以经过分析得到我们要固定的点是k,为什么这么说呢,如果你固定了k,你可以在预处理i的值,同时在进行l的枚举的时候可以兼顾j的值,当你a[k]=a[l]的时候,可以通过预处理直原创 2020-08-28 09:58:56 · 265 阅读 · 0 评论 -
EOJ2020.7C 二维前缀和+差分
https://acm.ecnu.edu.cn/contest/292/problem/C/原创 2020-08-16 17:58:26 · 224 阅读 · 0 评论 -
cf1367E 思维+贪心
1367E 1900的题题意:给你n个字母,其中仅由a-z26个小写构成,选其中ans个字母围成一个圈使得这个圈逆时针旋转k个位置还是和一开始一样,求你能得到的最大的ans思路:一开始的思路是旋转k个位置后,每个字母的位置还是没有发生改变,那么就意味着,...原创 2020-08-16 17:17:44 · 125 阅读 · 0 评论 -
cf1333C 思维题+前缀和
cf1333C原创 2020-08-16 16:46:55 · 189 阅读 · 0 评论 -
codeforces1398D DP
1398D 1800的题,简单dp,但架不住我dp菜啊题意:现在给你R对红色小棒,对应的长度为ri, G对绿色小棒,对应长度为gi, B对蓝色小棒,对应长度为bi,现在让你把这些小棒组合成矩形(四根小棒),要求为对应的边颜色要一致,相邻的边颜色不一致,问你能得到的最大的矩形面积。思路:一开始想的是贪心,但后来想到了一个反例如下:6 66 65 5 5 5,如果按照贪心的话就是662,但是实际上他最大的面积是564,所以要用dp进行暴搜,然后取最优开个三维数组dp[i][j][k],表示R只考虑原创 2020-08-16 10:56:29 · 173 阅读 · 0 评论 -
codeforces1398C 思维题
1398C 1600的题题意:给你一列字符串,其中的字母在0~9之间,选择其中一个区间【l, r】,使得这个区间内的和等于r-l+1,问最多有多少个这样的区间。思路:这题主要是思路比较新把,或者说我很少碰到这样的题目,就是把求有多少个区间和等于r-l+1, 转化为有多少个区间和为零,那么如何转化呢,就是把之前的该数组所有的数都减去1即可,之后的实现就比较简单了,用一个map就可以,用数组存储是不行的,因为存储不下来,而且ans要开ll,因为最多的区间为(1+1e5)*1e5/2,显然爆了int的范围,血原创 2020-08-16 10:21:50 · 265 阅读 · 0 评论 -
codeforces 1375D 模拟+思维
1375D 1900的题题意:给你一个n,然后是一个数组,其中的值为0~n,定义mex为数组中0~n不存在的最小的那个,操作为可以将第i个数字为mex,使得这个数组为不递减的数组,可以证明操作次数在2n次内一定能实现,问你操作次数是多少,并输出相对应的索引,操作次数不要求是最优的。思路:看到在2n次内一定能实现,并且不要求是最优的,可以想到我们一定可以把这个数组变为一个我们想变成的数组,例如1~n的递增,或者说是0~n-1的递增,通过模拟可以知道这两种情况在特定的条件下都是能够实现的。首先当mex=n原创 2020-08-07 20:25:42 · 164 阅读 · 0 评论