2017 国庆湖南 Day1】的更多相关文章

卡特兰数 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ]; int main() { freopen("stack.in","r",stdin); freopen("stack.out","w",stdout); int n; scanf("%d",&n);…
期望得分:76+80+30=186 实际得分:72+10+0=82 先看第一问: 本题不是求方案数,所以我们不关心 选的数是什么以及的选的顺序 只关心选了某个数后,对当前gcd的影响 预处理 cnt[i] 表示 i的倍数有多少个 g[i][j] 表示gcd(i,第j张卡片上的数) dp[i][j] 表示已经选了i个数,gcd=j 的 概率 再选k,要么gcd不变,要么变小 1.gcd不变 即k是j的倍数,因为已经选了i个且都是j的倍数,所以在剩下的n-i 个数中,还有 cnt[j]-i 个数可以…
期望得分:100+100+60=260 实际得分:100+85+0=185 二分最后一条相交线段的位置 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 100001 int x[N],y[N]; struct node { int b; double k; }Point[N]; void read(int &x) { x=; char c…
期望得分:100+30+60=190 实际得分:10+0+55=65 到了233 2是奇数位 或223 第2个2是偶数位就会223 .233 循环 #include<cstdio> #define N 1000001 using namespace std; ]; int main() { freopen("trans.in","r",stdin); freopen("trans.out","w",stdout);…
期望得分:20+40+100=160 实际得分:20+20+100=140 破题关键: f(i)=i 证明:设[1,i]中与i互质的数分别为a1,a2……aφ(i) 那么 i-a1,i-a2,…… i-aφ(i) 也与i互质 所以 Σ ai = i*φ(i)- Σ ai 所以 Σ ai = i*φ(i)/2 所以 f(i)Σai / φ(i) * 2 = i 问题转化为 求 Σ i^k 用拉格朗日差值法 我是真没看懂 题解: std: #include <cstring> #include &…
期望得分:100+30+100=230 实际得分:100+30+70=200 T3 数组开小了 ..... 记录 1的前缀和,0的后缀和 枚举第一个1的出现位置 #include<cstdio> #include<cstring> #include<algorithm> #define N 100002 using namespace std; char s[N]; int num[N]; int suf0[N],pre1[N]; int main() { freope…
国庆集训 Day1 T2 生成图 现在要生成一张\(n\)个点的有向图.要求满足: 1.若有 a->b的边,则有 b->a 的边 2.若有 a->b 的边和 b->c 的边,则有 a->c 的边 3.至少有一个点没有自环. 求方案数模上\(m\) \(n≤2000,2≤m≤1,000,000,007\) 样例: input 2 5 output 3 有点难度的DP,首先需要明确的是在一个连通图中每一个点都有自环(样例可体现),所以有点没有自环当且仅当这一个点独立为一个联通块.…
牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \(sum_{(u, v)}=sum_{(u, 1)} \bigoplus sum_{(v, 1)}\)那么我们可以预处理出所有简单路径上的异或值 对于路径上的最大权值来说,建图后,我们可以将边权进行排序,对于每一个权值为\(w_i(1-n)\)的连通块 现在我们已经得到了当前边权所在的连通块了,所以…
期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是右端点,且在第2个a之前,那么有贡献 如果 第2个a 前面出现的第1个b~z 是左端点,且在第1个a之后,那么有贡献 最后的贡献/2 #include<cstdio> #include<cstring> #define N 100001 using namespace std; cha…
期望得分:60+ +0=60+ 实际得分:30+56+0=86 时间规划极端不合理,T2忘了叉积计算,用解析几何算,还有的情况很难处理,浪费太多时间,最后gg 导致T3只剩50分钟,20分钟写完代码,没调出来 设sum[i][j] 表示字母j出现次数的前缀和 那么题目要求我们 最大化sum[r][x]-sum[l-1][x]-(sum[r][y]-sum[l-1][y]) 如果枚举r,再枚举y,时间复杂度为O(n*26),是可以承受的 但此时还有l-1未知,能否O(1)找到l-1呢? 我们发现式…