题目链接:https://codeforces.com/contest/1359/problem/E 题意 有一大小为 $k$ 的数组,每个元素的值在 $[1,n]$ 间,若元素间两两不等,问有多少数组对于任意非负整数 $x$ 满足: $x\ \%\ a_{1} \ \%\  a_{2} \ \%\  ...  \ \%\  a_{k} = x \ \%\  a_{p1} \ \%\  a_{p2} \ \%\  ...  \ \%\  a_{p_k}$ 其中,$p$ 为 $k$ 的任一种排列,…
题目链接:https://codeforces.com/contest/1359/problem/B 题意 有一块 $n \times m$ 的地板和两种瓷砖: $1 \times 1$,每块花费为 $x$ $1 \times 2$,每块花费为 $y$ 地板为 '.' 表示未铺瓷砖,瓷砖不可旋转, 问铺满瓷砖的最小花费. 题解 因为 $1 \times 2$ 的瓷砖不能旋转,所以每次逐行考虑即可,注意 $y$ 取 $min(2x, y)$ . 代码 #include <bits/stdc++.h…
题目链接:https://codeforces.com/contest/1359/problem/D 题意 有一个大小为 $n$ 的数组,可以选取一段连续区间去掉其中的最大值求和,问求和的最大值为多少. 题解 枚举所有可能的情况,其中一定有一个是正确答案. 即每次枚举去掉的最大值,取最大连续子序列的和. 代码 #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; int a[n] =…
题目链接:https://codeforces.com/contest/1359/problem/A 题意 $n$ 张牌可以刚好被平分给 $k$ 个人,其中有 $m$ 张 joker,当一个人手中的 joker 牌最多时获得胜利,他的分数为比其他有最多 joker 牌的人多出 joker 牌的张数. 题解 先给第一个人分配尽可能多的 joker 牌,其余的 joker 牌对其余人数取上整是平均分的话一个人最多有多少张,取下整是平均分的话一个人最少有多少张,本题取上整. 代码 #include <…
题目链接:https://codeforces.com/contest/1359/problem/C 题意 热水温度为 $h$,冷水温度为 $c\ (c < h)$,依次轮流取等杯的热冷水,问二者在一容器中混合至最接近温度 $t$ 最少需要取多少杯. 题解 设取了 $x$ 杯热水,那么总的温度有两种情况: 取的冷水杯数与热水相同:$\frac{xh + xc}{2x}$ 取的冷水杯数比热水少一杯:$\frac{xh + (x - 1)c}{2x - 1}$ 第一种情况: $\frac{xh +…
题目链接:E.Modular Stability 题意: 给你一个n数,一个k,在1,2,3...n里挑选k个数,使得对于任意非负整数x,对于这k个数的任何排列顺序,然后用x对这个排列一次取模,如果最后取模结果不变,那么称它为稳定的,求稳定数组的个数. 题解: 我们知道y%x%y!=y%y%x,那么如果要想满足题意那么这个最后的结果应该是0,也就是说这n个数里面那一个最小的x,这个x可以把剩下k-1个数整除,这样的话结果就肯定是0 比如如果k=3,n=10,那么(2,4,6,8,10),我们只需…
题意: 给你一个含n个数a1,a2...an的数组,你要找到一个区间[l,r],使得al+a(l+1)+...+a(r-1)+ar减去max(al,a(l+1),...,a(r-1),ar)的值尽可能大 n<=1e5 -30<=ai<=30 题解: 因为ai的范围特别小,我们可以枚举区间[l,r]的最大值,然后就是暴力循环(这一点看代码) 代码: #include<stdio.h> #include<algorithm> #include<iostream&…
题目链接:B.New Theatre Square 题意: 你要把所有"." 都变成"*",你可以有两个选择,第一种就是一次铺一个方块(1*1),第二种就是同一行一次铺两个(1*2).第一种花费x,第二种花费y.问最少花费多少能把所有铺完 题解: 如果y>=2*x,那么就直接找到所有".",然后乘于x就行 否则就找俩俩一对就行了 代码: 1 #include<stdio.h> 2 #include<algorithm>…
传送门 参考资料: [1]:https://blog.csdn.net/weixin_43262291/article/details/90271693 题意: 给你一个包含 n 个数的序列 a,并且 max{ai} ≤ x: 定义一个操作 f(L,R) 将序列 a 中  L ≤ ai ≤ R 的数删除: 问有多少对满足条件的 (L,R) 使得执行完 f(L,R) 操作后的序列非递减: 题解: [1]博文看了一晚上,终于理解了: 枚举左区间 i,找到符合条件的最小的右区间 ki,f(1,k1),…
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;long long a[300007],b[300007];long long dp[300007][5];long long ans;int main(){ ios::sync_with_stdio(false);//多组数据输入cin,cout容易超时 cin.tie(NULL); cout.tie(NULL); int q; cin>>…