卡特兰数

#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. 软工实践-Beta 冲刺 (2/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  2. vue.js常用指令

    本文摘自:http://www.cnblogs.com/rik28/p/6024425.html Vue.js的常用指令 上面用到的v-model是Vue.js常用的一个指令,那么指令是什么呢? Vu ...

  3. Docker基础教程

    一.Docker是什么? KVM, Virtualbox, Vmware是虚拟出机器,让每个实例看到一个单独的机器:而Docker是虚拟出操作系统,实现应用之间的隔离,让各个应用觉得自己有一个自己的操 ...

  4. HDU 2061 Treasure the new start, freshmen!

    http://acm.hdu.edu.cn/showproblem.php?pid=2061 Problem Description background:A new semester comes , ...

  5. Mac配置环境变量

    Mac配置环境变量,以ant和maven为例 1.编辑 .bash_profile文件  cd vi .bash_profile    编辑内容为 ------------------------- ...

  6. Linux下更改正确国内时间

    Linux使用小Tips 整理些Linux些常遇到的问题. Linux下设置时间 提供两种最根本有效的方式,就是更改时区.这里以更改为国内上海时间例子,其他地方时区同理. 方法一 备份文件 mv /e ...

  7. 【Linux笔记】linux crontab实现自动化任务

    在服务器中我们经常需要定时自动让程序自动进行数据备份.程序备份.执行某个进程等等操作,在linux服务器一般使用crontab实现,而windows下使用计划任务实现,crontab是linux系统下 ...

  8. 将javaweb项目部署到阿里云服务器

    主要步骤:1. 购买阿里云服务器2. 远程连接3. 在云服务器上配javaweb环境:jdk,tomcat,MySQL4. 将项目的war文件放到Tomcat下关于云服务器ECS:如果还想在买服务器之 ...

  9. 查看临时表空间占用最多的用户与SQL

     select sess.username, sql.sql_text, sort1.blocks   from v$session sess, v$sqlarea sql, v$sort_usage ...

  10. 【原创】查询某个SQL在Oracle的会话

    select sql_Text,last_active_time from v$sql where sql_text like '%sql语句%'order by last_active_time