摘要:
设f[i][p2][p3][p5][p7][j][k]表示前i位,2,3,5,7的次数,前i位是否等于x,是否有数字的方案数然后数位DP即可,ans=cal(r)-cal(l)#includetypedef long long ll;int n,a[20],len,i,j,m2,m3,m5,m7,t... 阅读全文
摘要:
后缀平衡树+线段树。$O(1)$比较大小的标号法真是强大。#include#include#define N 300010#define M 500010using namespace std;typedef unsigned long long ll;const ll inf=1ULL='0')&... 阅读全文
摘要:
设delta表示翻转后的增量,flip表示是否翻转,第x个位置对应原来位置为(flip?n+2-x+delta:x-delta)%n再根据x,y的大小关系以及flip的是否讨论出现在作用的区间用线段树维护最左端最右端的颜色和块数这种神级码农题我居然一遍AC…#include#define N 500... 阅读全文
摘要:
求出前缀和对于每个结尾i,设现在取的区间是[j+1,i],则i-R#include#include#define N 500010#define M 10000000using namespace std;int n,i,j,K,L,R,sum[N],b[N],l[M],r[M],val[M],ro... 阅读全文
摘要:
关于如何判断一个集合是否出现过:给每个元素随机一个hash权值,然后xor起来即可插入删除都只需xor线段树维护区间有效人数和,以及打标记表示这个区间的集合要全部标记为出现过,并把区间内sum值都置0写hash用了map被虐了TAT#include#include#define N 100010#d... 阅读全文