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分钟写完代码, ...
随机推荐
- ubuntu16.04+cuda8.0+caffe
=========== 如果出现nvidia-smi failed to communicate with nvidia driver,循环登录情况,则: sudo apt-get remove -- ...
- POJ 3744 Scout YYF I 概率dp+矩阵快速幂
题目链接: http://poj.org/problem?id=3744 Scout YYF I Time Limit: 1000MSMemory Limit: 65536K 问题描述 YYF is ...
- 面试问题总结二(技术能力-PHP)----Ⅳ
57.Linux 的基本命令(重点,现在多数服务器都是Linux 系统) 答:arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmid ...
- 类似jq的即点即改
<?php namespace app\controllers; use Yii;use yii\filters\AccessControl;use yii\web\Controller;use ...
- mysql 简单sql语句
1.修改数据库的编码 alter database test character set utf8 2.创建新表 : create table text4(id int( ...
- springboot学习笔记-3 整合redis&mongodb
一.整合redis 1.1 建立实体类 @Entity @Table(name="user") public class User implements Serializable ...
- Python排序算法动态图形化演示(实现代码)
1.冒泡排序 冒泡排序是最简单也是最容易理解的排序方法,其原理就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是 ...
- MT【155】单调有界必有极限
(清华2017.4.29标准学术能力测试20) 已知数列$\{a_n\}$,其中$a_1=a$,$a_2=b$,$a_{n+2}=a_n-\dfrac 7{a_{n+1}}$,则_______ A.$ ...
- javascript循环事件只响应最后一次的问题处理
在所有的面向对象编程语言中,只要涉及到逻辑的代码,常见的问题都是循环创建很多个对象UI,在循环体中对这些对象添加事件.如果不做处理,和其他地方一样的添加事件,其结果都是只响应最后一次循环之后的结果.原 ...
- PHP是什么?
PHP是什么? PHP是一门后端动态解释型计算机高级语言,一般用来编写或者生成动态网页,主要负责数据的处理与渲染.(这里是指用PHP嵌入网页里面的形式,现在可以直接用一些JS的框架去渲染网页数据了,P ...