随笔分类 - Atcoder
摘要:题目链接 D: 看样例+分析得知,假设现在要选$i$个,那么能达到的最大的值就是$sum_=\sum^$, 最小值就是$sum=\sum^$,那么每次可选择的数量就是$sum_1-sum_2+1$,那么答案就为$\sum^{n+1}({sum_-sum_ + 1})$ #include<bits/s
阅读全文
摘要:题目链接 D: 完全模拟一定超时,设2个数组来存加在前面的/加在后面的,如果出现reverse操作,交换这两个数组即可 #include<bits/stdc++.h> using namespace std; #define ms(x,y) memset(x, y, sizeof(x)) #defi
阅读全文
摘要:题目链接 D: 将第一种关系建图,求出图上每个点,满足不相邻但可达且不含第二种关系的点的数量,直接建图,注意减数量的时候不要重复即可 #include<bits/stdc++.h> using namespace std; #define ms(x,y) memset(x, y, sizeof(x)
阅读全文
摘要:"题目链接" 题意还是比较清楚的,给你q个询问,对每组询问的模数和初始值不同,求满足条件$a_j~\textrm{mod}~m_i a_{j + 1}~\textrm{mod}~m_i$时,由于$a_i$是递增的,那么他只有在$a_{i+1} m, a_i using namespace std;
阅读全文
摘要:"题目链接" 也是简单的组合数学问题,每个位置可以移动走,也可以移动来,那么我们就需要找最终的状态,也就是最终的0的个数 假设有m个0,就有n m个非0空位,选择0的组合数为$\textrm{C}_{n}^{m}$,这m个位置转移到n m个位置的组合数为$\textrm{D}_{n m}^{m}$,
阅读全文
摘要:[题目链接]https://atcoder.jp/contests/abc156/tasks/abc156_d 简单数论问题,题意就是有n个数,不能组成a与b个数,问有多少种组合方式 那就是C(n,1)+C(n,2)+....+C(n,n) C(n,a) C(n,b) 和式部分为2^n 1 由于a,
阅读全文
摘要:简述题意 给你N个数对 表示坐标与状态(0/1), M个操作,给定一个区间,区间内的坐标的状态翻转 思路:看到区间修改,很容易想到差分,对数对sort,每个a_i与a_i-1异或构造差分数组b,每次对[l,r]区间操作时,只需要将b[l]与b[r+1]对1异或操作就行了 那么我们如何判断哪些操作需要
阅读全文
摘要:简述题意,给你一个大数,你可以选择10的次幂进行加减运算,问如何用最少的次数从0到达这个大数 考虑从这个大数到0,从最低位开始,每次都将这个位置取完,2种策略,贪心的话不好处理进位的情况,可以想到是DP 设dp[i][0]为取到第i位,将第i位直接拿完的最小次数,dp[i][1]为取到第i位,进位后
阅读全文
摘要:本题的模型是典型的求第k小问题,这个问题有2个不一样的点,一是任意选出2个数,不能是同一个,二是这个题有负数,那我们在原有的基础上就需要特判这两点,经典模型是2个数组相乘,此处是1个,那么一样可以枚举每一个数,计算比该数小的数的数量,运用容斥,将重复的去掉即可,第一个问题就解决了,假设要判断的数是a
阅读全文
摘要:梦回高中,定义的f(i,j)为从(0,0)到(i,j)一共有多少条路可以选择,易知我们要做i+j次选择,其中有i次是选择x轴,剩下的是y轴,所以f(i,j)=C(i+j,i)=C(i+j,j),给你一个范围[r1,r2],[c1,c2],求出所有的f(i,j)之和,我们可以用容斥,设g(r,c)为范
阅读全文
摘要:数位DP模板,记忆化+限制即可 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) typedef long long LL; int n, K, dp[5][105][3]; char str[105]
阅读全文

浙公网安备 33010602011771号