思维
思维题,靠脑子的题
为什么他们cf写的这么快
这个作者很懒,什么都没留下…
展开
-
cf1513 B. AND Sequences(位运算+思维)
题目链接思路:要想一个数组是good,那么a1=a2&a3…&an,a1&a2&a3…=an,那么可以得到的是a1=an=a1&a2&a3。。。&an=k,那么我们要找的就是有多少个a[i]=k,记cnt个,把他们分别放到两端,那么左右两边最后的结果一定会是k,那么结论就是C(cnt,1)*C(cnt-1,1)*A(n-2,n-2)。#include<bits/stdc++.h>using namespace std;typed原创 2021-04-19 16:33:36 · 232 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2) D. Orac and Medians(思维)
题目链接题意: 给定序列,每次可以选定一个区间将其所有数都变为该区间的中位数(偶数偏左,即取下整)。求能否将整个数组变为恒等于k。思路:是个水题。。。小的区间可以变换成大的。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=5e5+1;vector<int>g[maxn];ll a[maxn];int top=0,prime[maxn],isprime[m原创 2020-05-13 22:14:48 · 181 阅读 · 0 评论 -
Codeforces Round #576 (Div. 1) C. Matching vs Independent Set(思维好题)
题目链接题意:给出一个图包括3∗n个点和m条边,一个边的集合定义如下,边的两端点只能属于一条边;一个点的集合定义如下:没有一条边把任意两个点连接。如果有这样的一个大小是n的边的集合,输出"Matching"和边按输入顺序的序号,如果有这样一个大小是n的点的集合,输出”IndSet“和点的序号,如果都没有,输出”Impossible“。(∑n≤1e5,∑m≤5e5)。思路:这个思维也真的清奇...原创 2020-05-06 21:22:34 · 171 阅读 · 0 评论 -
hdu5701 中位数计数(思维)
题目链接Problem Description中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数。现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数。Input多组测试数据第一行一个数n(n≤8000)第二行n个数,0≤每个数≤109,OutputN个数,依次表示第i个数在多少包含其的区间中是中位...原创 2020-04-19 10:11:48 · 193 阅读 · 0 评论 -
Educational Codeforces Round 24 D. Multicolored Cars(思维)
题目链接#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6+1;vector<int>pos[maxn],temp;int n,A,a[maxn],cnt[maxn],num[maxn],ans[maxn],sum;int main(){ ...原创 2020-04-15 19:44:50 · 94 阅读 · 0 评论 -
Codeforces Round #462 (Div. 1) A. A Twisty Movement (LIS+思维)
题目链接题意:你可以任意选择一个区间,将该区间的数进行反转,求反转后最长的LIS。思路:dp1【i】【j】代表区间【i,j】的LIS长度,dp2【i】【j】是区间【i,j】反转后的LIS,一个区间反转后对整个答案的贡献就是dp1【1】【n】-dp1【i】【j】+dp2【i】【j】,由于n小于2000,大胆暴力就可以了。#include<bits/stdc++.h> using...原创 2020-04-03 19:26:46 · 127 阅读 · 0 评论 -
Codeforces Round #264 (Div. 2) D. Gargari and Permutations(思维)
题目链接题意:要你求n个数组的最长公共子序列。思路:我们可以思考一下,最后的答案肯定是第一个数组的一个子序列,那么我们是不是可以通过枚举第一数组来获取答案呢?显然是可以的,我们n^2枚举第一个数组的子序列,如何判断子序列对其他数组也符合要求呢?暴力判断一下子序列元素的下标关系是否和第一个一样就可以了,比如第一个数组4在2的前面,但后面有一个2在4的前面,那么4 2这个子序列就不行。#inc...原创 2020-04-02 22:18:31 · 111 阅读 · 0 评论 -
Codeforces Round #630 (Div. 2) C. K-Complete Word(思维+贪心)
题目链接题意:给定初始字符串,问你最少要执行几次字符变化操作,使得最后的字符串是个回文串并且每k个字符都是一个循环。思路:这个题首先要明白一点就是si=si+k,si=sn-i+1,打个表也容易看出来最后的字符串一点是可以分成n/k个字符串,且这n/k个字符串都一模一样且都是回文,发现不了这个很难做出来,明白了这个之后就是把应该相同的字符整合到一起,看看哪个字符串数目最多maxx,那么贡献...原创 2020-04-01 21:12:35 · 199 阅读 · 0 评论 -
牛客练习赛59 B 牛能和小镇(最小生成树+思维)
题目链接思路:这是个披着最小生成树的签到题。。。#include<bits/stdc++.h>using namespace std;typedef long long ll; const int maxn=1e5+5;ll a[maxn];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;++...原创 2020-03-14 20:19:14 · 95 阅读 · 0 评论 -
Manthan, Codefest 18 (rated, Div. 1 + Div. 2) D. Valid BFS?(思维)
题目链接题意:给定一棵树,现在规定对于一棵bfs树的遍历过程中,兄弟节点的入队顺序可以任意变换,给出一个序列问是不是bfs遍历序列的一种?思路:我们知道bfs是广搜也就是一层一层来的,所以dfs的时候可以记录深度,如果同层次的点深度不同肯定no,除了深度还有一个点要注意,如果同深度的节点,i先入队,再入队j,那么轮到i和j的子树的时候也一定是i的子树先入队,j的子树随后,那么这个怎么记录呢...原创 2020-03-18 21:38:01 · 108 阅读 · 0 评论 -
Codeforces Round #344 (Div. 2) C. Report(思维好题)
题目链接题意:给出n个无序的数以及m个操作,每个操作由两个数组成,第一个数是操作的方式,第二个数 i 是操作的范围,若第一个数是1,则给 1-i 个数按升序排序,若第二个数是2,则给 1-i 个数按降序排列。输出所有操作完成后的序列。思路:一开始写的时候并没有啥思路,看了大佬们的题解才会的,真的是神乎奇迹。。。首先,我们是可以利用栈来缩小我们的操作次数的,比如先给前3个数升序,再把前4个...原创 2020-03-19 20:35:07 · 191 阅读 · 0 评论 -
PAT顶级 1026 String of Colorful Beads (35分) (前缀和+思维)
题目链接Eva would like to buy a string of beads with no repeated colors so she went to a small shop of which the owner had a very long string of beads. However the owner would only like to cut one piece ...原创 2020-03-11 21:38:12 · 173 阅读 · 0 评论 -
Codeforces Round #581 (Div. 2) D2. Kirk and a Binary String (hard version)(思维)
题目链接思路:看了一下大佬的方法,真的是惊叹不已呀,O(n)就可以出结果了。。。想想看把哪些位置的1变为0不会影响LIS呢,其实当某一位为1的时候只要它后面的1的个数大于0的个数的话就不会影响了,所以我们从后往前枚举。#include<bits/stdc++.h>using namespace std;const int maxn=1e5+1;char s[maxn];...原创 2020-02-27 21:34:07 · 184 阅读 · 0 评论 -
Educational Codeforces Round 65 (Rated for Div. 2) E. Range Deleting(双指针+思维)
题目链接#include<bits/stdc++.h>using namespace std;#define mem(a,b) memset(a,b,sizeof(a))#define ll long long#define INF 0x3f3f3f3fconst int maxn=1e6+50;int n,x;///max{a[i]} <= xint a[ma...原创 2020-02-28 21:59:05 · 611 阅读 · 0 评论 -
Codeforces Round #620 (Div. 2) C. Air Conditioner(思维)
题目链接题意:就是说给你一个初始温度,有n个客人会按顺序进来,每个客人都有一个舒适的温度范围,范围为【li,hi】,可以在一秒钟内让温度升高一度或下降一度或不变,问能不能让所有客人都满意。思路:很显然,在每个时间维护一个温度区间,如果客人的舒适温度在这个区间内答案就是YES,温度区间动态维护下降的温度mi和上升的温度mx。注意mi要取最大,mx取最小#include<bits/st...原创 2020-02-16 16:27:57 · 188 阅读 · 0 评论 -
Codeforces Round #553 (Div. 2) B. Dima and a Bad XOR(异或+思维)
题目链接题意:在每一行选一个数,存不存在选取方案使得选取的数的异或和不为0思路:可以先异或第一列,若不为0直接输出,否则对于每一行,检查一下有没有和每行第一个不一样的数字,有就是YES,否则就NO。#include<bits/stdc++.h>using namespace std;const int maxn=5e3+1;int n,m,flag=0,a[maxn][m...原创 2020-02-18 19:49:47 · 130 阅读 · 0 评论 -
Codeforces Global Round 5 C2. Balanced Removals (Harder)(思维)
题目链接思路:保证点的顺序时单调的就行,先按xyz排序,然后先删x和y都相同的,再删x相同的,最后删剩下的。#include <bits/stdc++.h>using namespace std;const int maxn=5e4+1;typedef long long ll;bool vis[maxn];struct cxk{ int x,y,z,id;}s[...原创 2020-02-21 21:31:02 · 177 阅读 · 0 评论 -
Codeforces Global Round 6 D - Decreasing Debts(思维)
题意:给定n个人,m个债务关系,要你简化一下债务关系使得债务总和最小。思路:计算出每个人的盈or亏,分别放到两个数组里,然后随便乱连就行了。。。#include <bits/stdc++.h>using namespace std;typedef long long ll;struct node{ int l,r; ll w;};const int maxn=2e...原创 2020-01-31 21:14:08 · 266 阅读 · 0 评论 -
Codeforces Global Round 6 E - Spaceship Solitaire(思维)
题意:说实话这个题读了半天也没读懂题意,读懂后秒解。。。思路:用map记录一下每组的sj和tj,答案只和uj有关,不过看了半天也没看到输入里的那句如果有里程碑重复的话算后者。。。#include <bits/stdc++.h>using namespace std;const int maxn=2e5+1;typedef long long ll;#define M(a...原创 2020-01-31 21:17:53 · 215 阅读 · 1 评论 -
Codeforces Round #616 (Div. 2) B - Array Sharpening(思维)
题意:给定一个初始序列,你可以让序列的任何一个数字减小(注意只能减少不能上升),问能不能有办法通过减少一些数字把整个序列变成先递增后递减的序列。思路:定义两个指针i,j,i从前往后扫,看看序列能不能大于0 1 2 3 4 5,而j从后往前扫变成5 4 3 2 1 0,看看i和j最后停下来的位置,如果j的位置大于i的话,说明i到j这一段中有数字是不能再减少的,一定是不符合题意的。#inclu...原创 2020-02-04 11:51:57 · 189 阅读 · 0 评论 -
Codeforces Round #615 (Div. 3) D. MEX maximizing(思维好题)
题目链接题意:给定q次询问和x,每次询问都会加入一个数到数组(数组初始为空),你每次可以对数组中的任一数进行+x和-x的操作,问你当前数组未出现的最小整数。思路:连E和F都做出来了居然卡在这一题,感觉自己好像思维能力和观察能力不行。。。。其实每次可以无限加X和减去X就应该想到结果只会对x的模数有影响,找空位就行了。#include<bits/stdc++.h>using ...原创 2020-02-09 11:49:12 · 148 阅读 · 0 评论 -
Codeforces Round #618 (Div. 1) B. Aerodynamic(思维)
题目链接题意:说实话我到现在也不懂这个题意,这个图形有什么用。。。思路:不过并不影响做题,就是逆时针给你n个点,让你判断是不是中心对称,很显然奇数的时候肯定是no,判断中心对称看中点是不是一样就行了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+1;...原创 2020-02-11 22:04:13 · 156 阅读 · 0 评论 -
Codeforces Round #613 (Div. 2) E. Delete a Segment
题意:给定n条线段,如果线段之间有相交的,那么他们就会合并成一个新的线段,现在要删除一个线段,使得去掉后联合后的线段最多。思路:主要还是参考了大佬的解法(https://www.cnblogs.com/Lanly/p/12181097.html),思维很缜密,反正本菜鸟肯定想道这么细的。#include<bits/stdc++.h>using namespace std;co...转载 2020-01-13 17:15:51 · 183 阅读 · 0 评论 -
Codeforces Round #614 (Div. 2) C - NEKO's Maze Game(思维)
题意:有一个2*n的网格,目的是要从(1,1)走到(2,n),给出q个询问,每个询问给出一个坐标,表示该坐标点是死胡同不能走(如果给出的这个坐标点它已经是死胡同了,那么它又会变成可走的路)每次询问后问能不能从(1,1)走到(2,n)思路:线段树找死胡同的位置?其实不用,仔细观察会发现,假设一个点变成了死胡同,它只会对它对面的三个坐标有影响,比如(1,3)变成死胡同,那么如果对面的(2,2),...原创 2020-01-21 15:02:30 · 145 阅读 · 0 评论 -
Codeforces Round #607 (Div. 2) D - Beingawesomeism (思维)
题意:这个题。。。仔细看题容易崩溃,建议还是直接看样例?样例其实也并不难猜它在干嘛。好吧,言归正传,其实就是给你个nm的矩阵,矩阵有A和P两个字符,你每次操作可以选择一块连续的1x大小的只含A字符的矩阵,(x的大小随意,不超过矩阵大小就行)扫任意方向,在你扫过的路径的字符都会变成A,问你把整个矩阵的字符都变成A的最小操作数。思路:其实答案只有6个:0,1,2,3,4,没有。所以分类讨论就...原创 2020-01-25 15:56:50 · 177 阅读 · 0 评论 -
Codeforces Round #609 (Div. 1) B. Domino for Young (思维)
题意:给定一个递减的高度构成的图形,能你最多能不重复的填充几个12或21大小的矩形思路:很有意思的思维题,我们发现对于每一块高度,最后的结果都是最后一块要么有,要么没有,那么简单的每列高度/2累加即可?提交之后果不其然wa了一发,但推了几个样例发现,高度为奇数的列底下留的那一块,其实再某些时候是可以合并的。具体规律和情况看图,所以用栈来模拟,将高度为奇数的列压入栈,只要前后两个栈的间隔是偶数,...原创 2020-01-08 22:34:34 · 242 阅读 · 0 评论