K - Subarrays OR Gym - 102152K (思维)】的更多相关文章

题目链接: K - Subarrays OR Gym - 102152K 题目大意:T组测试样例,然后n个数,让你求每一个l,r中有多少个不同的异或值. 具体思路: 对于(1,i)这个区间, 我们当前需要的信息是(1,i-1),(2.i-1),,,,(i-1.i-1)这个区间的信息,我们从第一个元素开始,将这些信息存储起来就好了,set去重. AC代码: #include<bits/stdc++.h> using namespace std; # define ll long long ; i…
题目链接: K - Video Reviews Gym - 101755K 题目大意: 一家公司想让个人给他们的产品评论,所以依次去找这个人,第i个人会评论当且仅当已经有个人评论或他确实对这个产品感兴趣,但是这个人都不对这个产品感兴趣,问这个公司至少要说服几个人对该产品该兴趣才能至少收到个人的评论. 具体思路:二分最小值,当当前的人发现满足的人数不够的时候,就通过二分的最小值给补上就可以了. AC代码: #include<bits/stdc++.h> using namespace std;…
传送:http://codeforces.com/gym/102152/problem/K 题意:给定$n(n\le10^5)$个数$a_i(a_i\le10^9)$,对于任一个子数组中的数进行或操作,问所有的值有多少种? 分析: 假设现在想要求解区间$[1,i]$内的答案,那么需要先处理出$[1,i-1],[2,i-1],[3,i-1]......[i-1,i-1]$.然后将这些答案暴力与$a_i$取$|$. 代码: #include<bits/stdc++.h> using namespa…
Gym - 101981EEva and Euro coins 题意:给你两个长度皆为n的01串s和t,能做的操作是把连续k个相同的字符反转过来,问s串能不能变成t串. 一开始把相同的漏看了,便以为是个差分模拟,然后懂了题意后一时也没想到,看了题解瞬间明了(题解做题法). 相同连续k个1可以变成0,而相同连续k个0可以变成1,然后调整1的位置,所以其实便是看把连续k个相同字符删去后,两个字符串还相不相同,直接栈模拟. #include<cstdio> #include<iostream&…
You are given an array a consisting of n integers. A subarray (l, r) from array a is defined as non-empty sequence of consecutive elements al, al + 1, ..., ar. The beauty of a subarray (l, r) is calculated as the bitwise AND for all elements in the s…
题目链接:https://cn.vjudge.net/contest/274029#problem/D 题目大意:给你0-9每个数的个数,然后让你找出最大的数,满足的条件是任意三位相连的都能被三整除. 具体思路:首选数比较大,考虑用字符的方法存储,然后我们可以枚举开头两个数字,然后不停的往后找符合的串,然后再比较出这些最长的串中最大的就可以了. AC代码: #include<bits/stdc++.h> #include<string> #include<cstring>…
Description 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. Input 第一行包含两个正整数n,m(1<=n,m<=100000),分别表示序列的长度和操作的个数. 第二行包含n个正整数a_1,a_2,...,a_n(1<=a_i<=10^9),分别表示序列中的每个元素. 接下来m行,每行两个正整数op(1<=op<=2),k,若op=…
题意: 给你n个数vi,你有k次操作.每一次操作你可以从n个数里面挑一个数,然后使得这个数乘于一个正整数.操作完之后,这n个数里面不同数的数量就是权值.你要使得这个值尽可能小. 题解: 如果a%b==0 && a!=b b%c==0 && b!=c 那么如果我们进行操作的话,肯定是把c变成a,因为这样消耗的最小操作数最少 我们最后的答案只需要在两种情况中取最小值就可以了 1.我们把n个数都往n个数的公倍数上变 2.如果这n个数里面出现了上面所示的a.b.c的情况,那么我们就…
题意1: 给你一个由小写字母构成的字符串s,你可以其中某些字符变成大写字母.如果s中有字母a,你如果想把a变成大写,那s字符串中的每一个a都要变成A 最后你需要要出来所有的字符对,s[i]和s[i-1]需要是辅音字母,且s[i]和s[i-1]中需要一个字母大写另一个小写.a.e.i.o.u.w.y这七个字母是元音 输出最大字符对数量 题解1: 首先预处理一下s字符串中字符相邻的数量,就是记录w[s[i-1]][s[i]]的数量 之后二进制枚举所有字母变成大写的情况. 然后枚举这个字母变成大写之后…
SaMer is building a simple robot that can move in the four directions: up (^), down (v), left (<), and right (>). The robot receives the commands to move as a string and executes them sequentially. The robot skips the commands that make it go outsid…