LYDSY模拟赛day9 2048】的更多相关文章

/* 大模拟题,做的时候思路还是比较清晰的 */ #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #define ll long long #define fo(i,l,r) for(int i = l;i <= r;i++) #define fd(i,l,r) for(int i = r;i >= l…
/* 暴力枚举两个后缀,计算最长能匹配多少前缀. 最优策略一定是贪心改掉前 k 个失配的字符. 时间复杂度 O(n3). */ #include<cstdio> ],b[]; int main(){ freopen("master.in","r",stdin);freopen("master.out","w",stdout); scanf(,b+); ;i<=n;i++);j<=n;j++) ;x<…
/* 假设路径是 a − b − c − d,考虑枚举中间这条边 b − c,计 算有多少可行的 a 和 d. 设 degx 表示点 x 的度数,那么边 b − c 对答案的贡献为 (degb − 1)(degc − 1)− 经过 b − c 这条边的三元环个数. 计算三元环的个数只需要枚举除 b; c 之外的另一个点即可. 位运算优化 */ #include<cstdio> ; ],m,n,i,j,d[N];char g[N][N];long long ans; ]+cnt[x&];…
/* 依旧考虑新增 2^20 个点. i 只需要向 i 去掉某一位的 1 的点连边. 这样一来图的边数就被压缩到了 20 · 2^20 + 2n + m,然后 BFS 求出 1 到每个点的最短路即可. 时间复杂度 O(20 · 2^20 + n + m) */ #include<cstdio> ,M=; int n,m,i,x,y,cnt,g0[N],g1[N],v[M],nxt[M],ed,h,t,q[N],d[N]; void add(int*g,int x,int y){v[++ed]=…
/* 注意分解质因数,如果i是,那么n/i也是,这样就可以解决分解质因数的时间问题了 当 k ≥ 1 时,只有这些数的约数才会对答案产生贡献. 求出 m 个数的所有不超过 n 的约数,去重后统计即可. 求出 k = 1 到 m 的所有答案后,剩下的数字个数就是 k = 0 的答案. 时间复杂度 O(m2√a) */ #include<cstdio> #include<algorithm> ; ],f[N]; ;i<=n/i;i++))b[++cnt]=i,b[++cnt]=n…
/* orz claris,这个题的解法非常巧妙,首先是时间问题,其实这个问题只要离线处理一下就可以了,把物品和询问都按照时间排序,然后看一下能不能满足.然后,因为容量<=10^9,显然是不可能开一个这么大的数组,而且这么大一个容量,价值又很小,我们可以考虑用二分解决 对每个询问二分答案,需要判定用容量为 M 的背包是否可 以装下 mid 的价值. 设 fi 表示装了 i 价值所需的最小容量,gi 表示 min(fi,fi+1,fi+2,……). 那么只需要检查 gmid 是否不超过 M 即可.…
/* 弃坑 */ #include<cstdio> #include<algorithm> using namespace std; ,M=N*; ],nxt[N<<],ed,cur,ans[N]; int size[N],f[N],d[N],son[N],top[N]; int fa[N],dep[N],A[N],B[N]; ],V[M],W[M],NXT[M],ED; ]; void add(int x,int y){v[++ed]=y;nxt[ed]=g[x];g…
NOIP不考可持久,弃坑…
/* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #include <queue> using namespace std; typedef long long ll; ,mod=; int c[N][N],s[N][N],…
[ 问题描述]有一天, 小 A 得到了一个长度为 n 的序列.他把这个序列的所有连续子序列都列了出来, 并对每一个子序列都求了其平均值, 然后他把这些平均值写在纸上, 并对它们进行排序,最后他报出了第 k 小的平均值.你要做的就是模仿他的过程.[ 输入格式]第一行两个整数 n,k, 意义如题中所述.第二行 n 个正整数, 即为小 A 得到的序列.[ 输出格式]一行一个实数, 表示第 k 小的平均值, 保留到小数点后 4 位.[ 样例输入输出] ave.in ave.out 6 103 5 4 6…