CodeForces 938E Max History 题解】的更多相关文章

参考自:https://blog.csdn.net/dreaming__ldx/article/details/84976834 https://blog.csdn.net/acterminate/article/details/79339494 题意: 给你一个数组,将数组里的所有元素进行全排列,然后 借助这两个条件求出Σfa 即可. 分析: n可以取到10^6,Time limit 是 3000 ms,直接枚举有n!种情况,显然优先认为这是个组合数学问题,找出一个通式本题即可AC. 从n个位…
题目链接:http://codeforces.com/problemset/problem/938/E 题意: 定义f(a): 初始时f(a) = 0, M = 1. 枚举i = 2 to n,如果a[i] > a[M],那么f(a) += a[M], M = i. 给定长度为n的数组a,问你它的所有排列的f(a)之和 MOD 1e9+7. 题解: 对于某个确定排列中的一个数a[i],如果所有大于等于a[i]的数都排在a[i]之后,那么一定ans += a[i]. 所以就要求每个a[i]对于答案…
传送门 唉最开始居然把题给看错了. 其实是组合数学傻逼题呢. 题意简述:给出一个数列,定义一个与数列有关的fff函数,fff函数定义如下: 首先f=0,M=1f=0,M=1f=0,M=1,一直重复如下操作:在222~nnn中找到第一个比aMa_MaM​大的aia_iai​,然后f+=aM,M=if+=a_M,M=if+=aM​,M=i 求该数列n!n!n!个排列的fff函数之和. 这题一看就是统计每个数对答案的贡献次数. 具体说说就是看每个数在哪些排列中能有贡献. 于是考虑aia_iai​的贡献…
题面 >CF传送门< >洛谷传送门< 解法 显而易见,对于一个数\(a_i\),若果它出现在\(f\)序列中,必定\(a_i\)之前的元素要小于\(a_i\),我们设\(cnt_i\)为序列\(a\)中小于\(i\)的元素, 那么得到\(\sum_{i=1}^n a_i \times (\sum_{j=1}^{cnt_i+1} \frac{cnt_i!}{(j-1)!\times(cnt_i-j+1)!} \times (j - 1)! \times (n-j)!)\) 化简得\(…
Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下的元素从左往右每\(k\)个一组,最后一组可以不满.给定你一个大小为\(|S|\)的可重集,要求你分出的组中至少有一组构成的可重集包含了给定的可重集. 构造一种符合条件的删数方案. \(n,m,k,|S|\le 5*10^5\) 写了\(1h\)才过,感觉身败名裂. 考虑枚举一个右端点\(r\),显…
Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个格子里都有一个数,对于任意一行和任意一列,要求把这\(n+m-1\)个数重新用正整数编号,并且对于这一行,数与数之间的大小关系不变,对于这一列同理.求出任意一行和任意一列编号使用的最大编号的最小值. 题解 读题读半天... 看懂了题目就不难了. 对于每一行和每一列先分别离散,记录每个位置在离散后的值…
Codeforces Round #539 Div1 题解 听说这场很适合上分QwQ 然而太晚了QaQ A. Sasha and a Bit of Relax 翻译 有一个长度为\(n\)的数组,问有多少个长度为偶数的连续区间,使得其前一半的异或和等于后一半的异或和. 题解 显然就是求长度为偶数且异或和为\(0\)的区间个数 求异或和为\(0\)的区间个数很简单,对于整个区间求异或前缀和看看有多少个相等就好了. 求长度为偶数的也很简单,把每个位置的异或前缀和按照位置的奇偶性分开求个数每次计算一下…
[比赛链接] http://codeforces.com/contest/922 [题解] Problem A. Cloning Toys          [算法] 当y = 0 ,   不可以 当y = 1 , x不为0时 , 不可以 当 y - 1 <= x , (x - y + 1)为偶数时 , 可以 时间复杂度 : O(1) [代码] #include<bits/stdc++.h> using namespace std; template <typename T>…
D. Buy a Ticket 分析 建一个源点,连向所有结点,边的花费为那个结点的花费,图中原有的边花费翻倍,最后跑一遍最短路即可. code #include<bits/stdc++.h> using namespace std; const int N = 2e5 + 10; const long long INF = 2e18; struct Edge { int to; long long w; }; vector<Edge> G[N]; long long d[N];…
目录 Codeforces 7E - Defining Macros 题解 前言 做法 程序 结尾 Codeforces 7E - Defining Macros 题解 前言 开始使用博客园了,很想写点东西.(逃 这是一道Codeforces题目. 做法 一道大模拟 相信大家都看得懂题目意思,我就不赘述了. 首先我们读进来\(n\)行,对于每一行,我们把它初步分成一下四块内容: #号 define 宏的名字 宏的表达式 注意:#和define中间可能会有空格,define和宏的名字,宏的名字和宏…