题目链接:https://cn.vjudge.net/contest/274029#problem/D 题目大意:给你0-9每个数的个数,然后让你找出最大的数,满足的条件是任意三位相连的都能被三整除. 具体思路:首选数比较大,考虑用字符的方法存储,然后我们可以枚举开头两个数字,然后不停的往后找符合的串,然后再比较出这些最长的串中最大的就可以了. AC代码: #include<bits/stdc++.h> #include<string> #include<cstring>…
There are some beautiful girls in Arpa’s land as mentioned before. Once Arpa came up with an obvious problem: Given an array and a number x, count the number of pairs of indices i, j (1 ≤ i < j ≤ n) such that , where is bitwise xor operation (see not…
6324.Problem F. Grab The Tree 题目看着好难,但是题解说的很简单,写出来也很简单.能想出来就是简单的,想不出来就难(讲道理,就算是1+1的题目,看不出来就是难的啊). 和后面的东西一点关系都没有... 官方题解: 设sum为所有点权的异或和,A为先手得分,B为后手得分. 若sum=0,则A=B,故无论如何都是平局. 否则考虑sum二进制下最高的1所在那位,一定有奇数个点那一位为1.若先手拿走任意一个那一位为1的点,则B该位为0,故先手必胜. 时间复杂度O(n). 代码…
Gym - 101981EEva and Euro coins 题意:给你两个长度皆为n的01串s和t,能做的操作是把连续k个相同的字符反转过来,问s串能不能变成t串. 一开始把相同的漏看了,便以为是个差分模拟,然后懂了题意后一时也没想到,看了题解瞬间明了(题解做题法). 相同连续k个1可以变成0,而相同连续k个0可以变成1,然后调整1的位置,所以其实便是看把连续k个相同字符删去后,两个字符串还相不相同,直接栈模拟. #include<cstdio> #include<iostream&…
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…
题意: 给你一个数n,你需要输出它可以由那几个数相乘构成,我们设可以由x个数构成,这x个数中最小值为minn,最大值为maxx,那么要求maxx-minn<=1 问你满足上面要求的情况有多少种.如果一个数的构成方式由无数种就输出-1 样例解释: 输入: 12 输出: 3 1 12 3 2 3 2 2 4 3 12有三种满足题意的构成方式,分别是12.2*3*2.4*3 输入 1 输出 -1 因为1的构成可以是1.1*1.1*1*1.1*1*1*1无数种 题解: 你会发现输出-1的情况都是2的次幂…
题意: 给你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]]的数量 之后二进制枚举所有字母变成大写的情况. 然后枚举这个字母变成大写之后…
差点自闭,感谢大佬帮忙找bug 题目:https://codeforces.com/gym/101968/problem/A 找树的重心+思维 找到树的重心,如果重心只有一个,以重心为根节点dfs,求各节点深度,那么任意一对节点都符合题意,只要让先手mark深度小的节点即可,其中同样深度的节点,交换位置扔符合题意,要加上dep[i]*(dep[i]-1)/2 如果重心有两个,分别以两个重心为根节点dfs,以任意一对节点都符合题意为基础(ans=n*(n-1)/2),如果两个深度相同的节点分别挂在…
http://poj.org/problem?id=2828 学到的思维: 1.变化的或者后来的优先影响前面的,那么从最后一个往前看,最后一个就成了 确定的, 而且后来的也能够确定----假设从前往后,全部的随时都不是确定的 2.线段树叶子节点直接维护区间(线段)信息,非叶子节点v维护的是以v为树根的整个子树的信息,那么假设父节点rt信息为[l,r]那么左子树维护[l,mid],右子树维护[mid+1,r]的信息.假设假设是前缀和,rt里是1-n的和,左子树1~n/2的和,右子树是n/2+1~n…