卡特兰数

#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的更多相关文章

  1. 2017 国庆湖南 Day5

    期望得分:76+80+30=186 实际得分:72+10+0=82 先看第一问: 本题不是求方案数,所以我们不关心 选的数是什么以及的选的顺序 只关心选了某个数后,对当前gcd的影响 预处理 cnt[ ...

  2. 2017 国庆湖南 Day6

    期望得分:100+100+60=260 实际得分:100+85+0=185 二分最后一条相交线段的位置 #include<cstdio> #include<iostream> ...

  3. 2017 国庆湖南 Day3

    期望得分:100+30+60=190 实际得分:10+0+55=65 到了233 2是奇数位 或223 第2个2是偶数位就会223 .233 循环 #include<cstdio> #de ...

  4. 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 ...

  5. 2017 国庆湖南Day2

    期望得分:100+30+100=230 实际得分:100+30+70=200 T3 数组开小了 ..... 记录 1的前缀和,0的后缀和 枚举第一个1的出现位置 #include<cstdio& ...

  6. 国庆集训 Day1 T2 生成图 DP

    国庆集训 Day1 T2 生成图 现在要生成一张\(n\)个点的有向图.要求满足: 1.若有 a->b的边,则有 b->a 的边 2.若有 a->b 的边和 b->c 的边,则 ...

  7. 牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并)

    牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \ ...

  8. 学大伟业 2017 国庆 Day1

    期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是 ...

  9. 2017国庆 清北学堂 北京综合强化班 Day1

    期望得分:60+ +0=60+ 实际得分:30+56+0=86 时间规划极端不合理,T2忘了叉积计算,用解析几何算,还有的情况很难处理,浪费太多时间,最后gg 导致T3只剩50分钟,20分钟写完代码, ...

随机推荐

  1. 寒假作业第二篇随笔(A+B)

    Github链接:https://github.com/heihuifei/object-oriented A+B Format (20) Calculate a + b and output the ...

  2. FineReport基本使用

    FineReport官方开发文档链接:http://help.finereport.com 1.FineReport是帆软软件有限公司自主研发的一款企业级web报表软件产品.FineReport报表软 ...

  3. try…catch 结构

    try…catch 结构 一旦发生错误,程序就中止执行了.JavaScript 提供了try...catch结构,允许对错误进行处理,选择是否往下执行. try { throw new Error(' ...

  4. PHP数据库常用常量笔记

    参考:http://php.net/manual/zh/pdo.constants.php Warning 自 PHP 5.1 起,开始使用类常量.以前的版本使用类似 PDO_PARAM_BOOL 这 ...

  5. 软盘相关知识和通过BIOS中断访问软盘

    一. 软盘基础知识介绍 (1) 3.5英寸软盘 3.5英寸软盘分为上下两面,每面有80个磁道,每个磁道又分为18个扇区,每个扇区大小为512个字节. 软盘大小计算: 2面 * 80磁道 * 18扇区 ...

  6. Nginx负载均衡配置与负载策略

    原理 负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务. 应用场景 春节期间在12306网站上买过火车票的朋友应该深有体会,有时查询一张火车 ...

  7. Read N Characters Given Read4 II - Call multiple times

    The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is the actu ...

  8. ng-include 上ng-controller 无法获取控件

    A.Html内容如下 <div> <div kendo-grid="testGrid" k-options="testOptions"> ...

  9. C++解析命令行参数(仿C语言args)

    说好不造轮子的,就管不住这手 #include <cstdio> #include <string> #include <vector> bool ParseCha ...

  10. QQ分享-定制分享卡片

    一般H5页面在进行分享的时候,都会生成一个分享卡片,但是这些卡片的生成是很多时候是我们是想要生成的卡片, 对于QQ,我们只需要在html页面里加如3个标签即可,如下: <meta itempro ...