2017 国庆湖南 Day1
卡特兰数
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; int f[]; int main()
{
freopen("stack.in","r",stdin);
freopen("stack.out","w",stdout);
int n;
scanf("%d",&n);
f[]=; f[]=;
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
f[i]=(f[i]+f[j-]*f[i-j])%;
printf("%d",f[n]);
}
没看到取模的高精
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; struct node
{
int len,a[]; node()
{
len=;
memset(a,,sizeof(a));
} void operator = (int k)
{
a[]=k; len=;
} void operator = (node b)
{
len=b.len;
for(int i=;i<=len;i++) a[i]=b.a[i];
} node operator * (int b)
{
node tmp;
for(int i=;i<=len;i++) tmp.a[i]=a[i]*b;
for(int i=;i<=len;i++) tmp.a[i+]+=tmp.a[i]/,tmp.a[i]%=;
tmp.len=tmp.a[len+] ? len+ : len;
while(tmp.a[tmp.len]>=) tmp.a[++tmp.len]=tmp.a[tmp.len-]/,tmp.a[tmp.len-]%=;
return tmp;
} node operator / (int b)
{
node tmp,an;
for(int i=len,j=;i;i--,j++) tmp.a[j]=a[i];
int x=;
for(int i=;i<=len;i++)
{
x=x*+tmp.a[i];
if(x>=b)
{
an.a[i]=x/b;
x-=an.a[i]*b;
}
}
int L=;
for(int i=;i<=len;i++)
if(an.a[i])
{
for(int j=len,k=;j>=i;j--,L++,k++) tmp.a[k]=an.a[j];
break;
}
tmp.len=L;
return tmp;
} void print()
{
for(int i=len;i;i--) printf("%d",a[i]);
} }f[]; int main()
{
int n;
scanf("%d",&n);
f[]=; f[]=;
for(int i=;i<=n;i++) f[i]=f[i-]*(*i-)/(i+);
f[n].print();
}
加权并查集
#include<cstdio> using namespace std; #define N 30001 int fa[N],under[N],siz[N]; int find(int i)
{
if(i!=fa[i])
{
int f=find(fa[i]);
under[i]+=under[fa[i]];
return fa[i]=f;
}
return i;
} void unionn(int x,int y)
{
int X=find(x),Y=find(y);
under[X]+=siz[Y];
siz[Y]+=siz[X];
fa[X]=Y;
} int main()
{
freopen("cube.in","r",stdin);
freopen("cube.out","w",stdout);
int n,m;
scanf("%d",&n); m=n;
for(int i=;i<=n;i++) fa[i]=i,siz[i]=;
char s[]; int x,y;
while(m--)
{
scanf("%s",s);
if(s[]=='M')
{
scanf("%d%d",&x,&y);
unionn(x,y);
}
else
{
scanf("%d",&x);
find(x);
printf("%d\n",under[x]);
}
}
}
区间DP
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring> using namespace std; const int N = + ; int dp[N][N];
int n;
char s[N];
int num[N], col[N], tot; int main() {
freopen("zuma.in", "r", stdin);
freopen("zuma.out", "w", stdout); scanf("%s", s + );
n = strlen(s + );
int now = s[] - '', cnt = ;
for (int i = ; i <= n; i ++)
{
if (s[i] - '' == now)
{
cnt ++;
}
else
{
num[++ tot] = cnt;
col[tot] = now;
cnt = ;
now = s[i] - '';
}
}
num[++ tot] = cnt;
col[tot] = now; for (int i = ; i <= tot; i ++) dp[i][i] = - num[i]; for (int len = ; len <= tot; len ++)
{
for (int i = , j = i + len - ; j <= tot; i ++, j ++)
{
dp[i][j] = ;
if (col[i] == col[j])
{
dp[i][j] = min(dp[i][j], dp[i + ][j - ] + (num[i] + num[j] < ? : ));
for (int k = i + ; k < j; k ++)
if (col[k] == col[i]) dp[i][j] = min(dp[i][j], dp[i + ][k - ] + dp[k + ][j - ]);
}
for (int k = i; k < j; k ++) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + ][j]);
}
}
printf("%d\n", dp[][tot]);
return ;
}
75分大爆搜
#include<cstdio>
#include<cstring> #define N 201 using namespace std; int n,len; int l,r,tot; char s[N];
int col[N]; int ans=; void find(int x)
{
l=x-; r=x+; tot=;
if(col[x]!=-) tot++;
while(col[x]==- && x>) x--;
if(x && col[x]!=-)
{
while(col[l]==col[x] || col[l]==-)
{
if(!l) break;
if(col[l]==col[x]) tot++;
l--;
if(!l) break;
}
}
if(col[x]==- || !x)
while(col[x]==- && x<len) x++;
while(col[r]==col[x] || col[r]==-)
{
if(r==len+) break;
if(col[r]==col[x]) tot++;
r++;
if(r==len+) break;
}
} void dfs(int sum,int last)
{
if(sum>=ans) return;
if(sum>len*) return;
if(!n) { ans=sum; return; }
int m[N]; bool f; int tmp=n;
for(int i=;i<=len;i++) m[i]=col[i];
for(int i=last;i<=len;i++)
if(col[i]!=-)
{
f=false;
find(i);
if(tot>=) f=true;
n-=tot;
for(int j=l+;j<i;j++) col[j]=-;
for(int j=r-;j>=i;j--) col[j]=-;
while(n)
{
find(i);
if(tot>=)
{
n-=tot;
for(int j=l+;j<i;j++) col[j]=-;
for(int j=r-;j>=i;j--) col[j]=-;
}
else break;
}
if(f) dfs(sum+,i+);
else dfs(sum+,i+);
n=tmp;
for(int j=;j<=len;j++) col[j]=m[j];
}
} int main()
{
freopen("zuma.in","r",stdin);
freopen("zuma.out","w",stdout);
scanf("%s",s+);
len=strlen(s+); n=len;
for(int i=;i<=len;i++) col[i]=s[i]=='';
dfs(,);
printf("%d",ans);
}
2017 国庆湖南 Day1的更多相关文章
- 2017 国庆湖南 Day5
期望得分:76+80+30=186 实际得分:72+10+0=82 先看第一问: 本题不是求方案数,所以我们不关心 选的数是什么以及的选的顺序 只关心选了某个数后,对当前gcd的影响 预处理 cnt[ ...
- 2017 国庆湖南 Day6
期望得分:100+100+60=260 实际得分:100+85+0=185 二分最后一条相交线段的位置 #include<cstdio> #include<iostream> ...
- 2017 国庆湖南 Day3
期望得分:100+30+60=190 实际得分:10+0+55=65 到了233 2是奇数位 或223 第2个2是偶数位就会223 .233 循环 #include<cstdio> #de ...
- 2017 国庆湖南 Day4
期望得分:20+40+100=160 实际得分:20+20+100=140 破题关键: f(i)=i 证明:设[1,i]中与i互质的数分别为a1,a2……aφ(i) 那么 i-a1,i-a2,…… i ...
- 2017 国庆湖南Day2
期望得分:100+30+100=230 实际得分:100+30+70=200 T3 数组开小了 ..... 记录 1的前缀和,0的后缀和 枚举第一个1的出现位置 #include<cstdio& ...
- 国庆集训 Day1 T2 生成图 DP
国庆集训 Day1 T2 生成图 现在要生成一张\(n\)个点的有向图.要求满足: 1.若有 a->b的边,则有 b->a 的边 2.若有 a->b 的边和 b->c 的边,则 ...
- 牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并)
牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \ ...
- 学大伟业 2017 国庆 Day1
期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是 ...
- 2017国庆 清北学堂 北京综合强化班 Day1
期望得分:60+ +0=60+ 实际得分:30+56+0=86 时间规划极端不合理,T2忘了叉积计算,用解析几何算,还有的情况很难处理,浪费太多时间,最后gg 导致T3只剩50分钟,20分钟写完代码, ...
随机推荐
- android 的helloworld没跑起来 原因
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com. ...
- 啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头
package yun3; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Cale ...
- 【CS231N】2、多类SVM
一.疑问 1. assignments1 linear_svm.py文件的函数 svm_loss_naive中,使用循环的方式实现梯度计算 linear_svm.py文件的函数 svm_loss_ve ...
- ThoughtWorks.QRCode类库
ThoughtWorks.QRCode一个二维码生成类库.
- 个人作业2--APP案例分析
产品 选择产品:酷狗音乐播放器 版本:Android版 选择理由:是我高中就开始用的音乐播放软件,在平时使用频率比较高,平时喜欢在累的时候听音乐放松. 调研 第一次上手体验 第一次使用的时候,感觉整个 ...
- 利用stream对map集合进行过滤
最近公司在大张旗鼓的进行代码审核,从中也发现自己写代码的不好习惯.一次无意的点到了公司封装的对map集合过滤的方法,发现了stream.于是研究了一下.并对原有的代码再次结合Optional进行重构下 ...
- NOIP2017 心路历程
虽然没能去考试,但是在学弟们考试前后也发生了很多事情. 周四晚上.学弟们出发前最后一天.单独找几个人谈了谈.面对退役他们还是有点慌啊.这个时候给他们调整心态或许有点迟了. 21:45.最后一分钟.为他 ...
- Error:Artifact 'xx.war exploded' has invalid extension
环境信息: IDEA 13 , MAVEN, JBOSS 7. 配置信息: 常规配置. 出错信息: Error:Artifact 'xx.war exploded' has invalid ext ...
- 洛谷 P4091 [HEOI2016/TJOI2016]求和 解题报告
P4091 [HEOI2016/TJOI2016]求和 题目描述 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: \[ f(n)=\sum_{i=0}^n\ ...
- 破解CobaltStrike3.12(转)
0x00 概述 CobaltStrike是一款内网渗透的商业远控软件,支持自定义脚本扩展,功能非常强大.前段时间Github上有好心人放出了CobaltStrike3.12的试用版,接着Lz1y ...