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分钟写完代码, ...
随机推荐
- 谈对“Git”的认识与理解
自诞生于2005年以来,Git日臻完善,在高度易用的同时,仍然保留着初期设定的目标.它的速度飞快,及其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求.接着说说 ...
- 我是一名IT小小鸟
我是一只it小小鸟 书中介绍了it界大牛们大学期间的学习方法和对未来的职业规划,相比他们,自我感觉相距甚远,对这学科的热情程度也远远比不上他们. 就拿目前数据结构这门高深的课程,应通过更多的课外扩展来 ...
- Python开发【第五篇】迭代器、生成器、递归函数、二分法
阅读目录 一.迭代器 1. 迭代的概念 #迭代器即迭代的工具(自定义的函数),那什么是迭代呢? #迭代:指一个重复的过程,每次重复都可以称之为一次迭代,并且每一次重复的结果是下一个迭代的初始值(例如: ...
- angularJS1笔记-(6)-自定义过滤器
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- Android:java.lang.OutOfMemoryError:GC overhead limit exceeded
Android编译:java.lang.OutOfMemoryError:GC overhead limit exceeded 百度好多什么JVM啊之类的东西,新手简单粗暴的办法: 1.在的Model ...
- 使用w3m访问页面执行函数
Ubuntu系统中 在计划任务中使用 w3m命令访问地址 locahost/index.php,或许使用curl "locahost/index.php"来访问地址
- 基于 Jmeter 的 web 端接口自动化测试平台
简介 基于之前的react+unittest+flask的接口自动化平台开发经验,和趟过的坑,我重新开发了这个接口自动化平台.平台前端采用的antd+dva+umi的antd-pro模板,结合平台业务 ...
- POJ1637_Sightseeing tour
给一个联通图,有的是单向边,有的是双向边,问是否存在欧拉回路. 乍一看毫无思路,可以这样来搞,对于每条无向边,我们随便指定一个方向,看看是否能够做到所有点的度数之和为偶数. 接下来,对于我们指定的边, ...
- springmvc+mybatis 实现分页查询
为简化分页功能,设计了一个分页的JSP标签,只需要在页面使用分页标签,就可以完成所有页面的分页功能. 1. 项目结构和数据库设计 (1) 项目结构: (2) 数据库设计 2. PageModel.ja ...
- P4314 CPU监控
题面 这是一道堪称"线段树3"的线段树好题,对于\(lazy\)标记的操作可以说是非常巧妙 我们用结构体来记录\(lazy\)标记,结构体中定义\(a,b\)两个元素,\(a\)表 ...