codeforces 672 D】的更多相关文章

题目链接:http://codeforces.com/contest/672/problem A. Summer Camp(打表) 题意:123456789...一串字符串,问第n个是什么数字. 塞一个表进去. /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ mind! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃ノ) ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┃┃┃┃┃┃ ┻┻┻┻┻┻ */ #include <al…
题目链接:http://codeforces.com/problemset/problem/672/D 题目大意:进行k次操作,每次将最大值集合中最大值-1,最小值+1,问你K次操作之后,最大值和最小值的差值是多少 思路分析:二分寻找最大值和最小值,check函数很好写,但是关键的一点需要注意,就是二分的上下限,当k非常大 时,最后的结果就已经稳定在平均数位置,如果二分上下限没有选对,就会出现最小值>最大值的情况orz 代码: #include <iostream> #include &…
[Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more than \(\frac{n \cdot (n-1)}{2}-1\) exchange operations, he won't do this boring work." 例如:5,4,3,2,1 我们需要移动4+3+2+1=10次,也就是\(\frac{n \cdot (n-1)}{2}\)次,所以…
题目链接:https://codeforces.com/contest/1420/problem/D 前言 之前写过这场比赛的题解,不过感觉这一题还可以再单独拿出来好好捋一下思路. 题意 给出 $n$ 个闭区间,问 $k$ 个区间共区间共有多少种情况. 题解一 以区间为单位进行考虑,排序+优先队列. 将所有区间以左端点为第一关键字,右端点为第二关键字从小到大排序,优先队列中存储不小于当前区间左端点的之前区间的右端点,每个区间对答案的贡献即 $C_{(pque.size(),\ k - 1)}$…
比赛链接:https://codeforces.com/contest/1420 A. Cubes Sorting 题意 给出一个大小为 $n$ 的数组 $a$,每次只可以交换相邻的两个元素,最多交换 $\frac{n \cdot (n-1)}{2}-1$ 次,判断能否将数组变为非递减序. 题解一 交换次数最多为 $\frac{n \cdot (n-1)}{2}$,此时数组为严格递减序,即 $a_1 > a_2 > \dots > a_{n - 1} > a_n$,从小到大每个元素…
题目链接 题目大意 给你一个长为n(n<=1e5)的数组,让你求有多少对a[i]和a[j] (i!=j)满足a[i]&a[j]>a[i]^a[j] 题目思路 这些有关位运算的题目肯定是要把数字变成二进制的 在二进制中某一位的数只能是0或者1 0^0=0 0&0=0 0^1=1 0&1=0 1^0=1 1&0=0 1^1=0 1&1=0 这样你就会发现如果要&操做所获得的值更大,只有可能是最高位的1所处的位置相同 然后计算一下贡献即可 代码 #in…
题意:给你\(n\)个区间,从这\(n\)区间中选\(k\)个区间出来,要求这\(k\)个区间都要相交.问共有多少种情况. 题解:如果\(k\)个区间都要相交,最左边的区间和最右边的区间必须要相交,即\(min(r[1],...,r[k])>=max(l[1],...,l[k])\).我们先按左边界对所有区间进行排序,然后遍历左边界,遍历到某个区间时,说明这个区间的左边界目前是最大的,然后我们再判断当前左边界(\(l[i]\)就是最大的)和集合中右边界(\(rs.begin()\),一定是满足条…
题意:给你一组数\(a\),构造一个它的子序列\(b\),然后再求\(b_1-b2+b3-b4...\),问构造后的结果最大是多少. 题解:线性DP.我们用\(dp1[i]\)来表示在\(i\)位置,并且此时子序列的长度是奇数的情况,而\(dp2\)则是偶数情况,对于每个\(a_i\),\(dp[i]\)都可以选它或者不选,拿\(dp1[i]\)举例,如果选择\(a_i\),那么状态则可以从子序列中上一个位置转移过来,所以\(dp1[i]=dp2[i-1]+a[i]\),如果不选就是\(dp1[…
题意:给你一组数,求有多少对\((i,j)\),使得\(a_{i}\)&\(a_{j}\ge a_{i}\ xor\ a_{j}\). 题解:对于任意两个数的二进制来说,他们的最高位要么相同要么不相同,如果相同,那么肯定是满足题目条件的,因为异或是不进位的加法,所以我们只要找到所有最高位相同的数的个数,用桶存下来,然后再对他们求个和就行了. 代码: int t; int n; ll x; map<ll,ll> mp; int main() { ios::sync_with_stdio(…
题意:有一长度为\(n\)的一组数,每次可以交换两个数的位置,问能否在\(\frac{n*(n-1)}{2}-1\)次操作内使得数组非递减. 题解:不难发现,只有当整个数组严格递减的时候,操作次数是\(\frac{n*(n-1)}{2}\),所以我们可以直接遍历判断有无\(a[i]<=a[i+1]\)即可. 代码: int t; int n; int a[N]; int main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); ci…