BZOJ 4563: [Haoi2016]放棋子
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 389 Solved: 248
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 1
1 0
Sample Output
HINT
Source
交换阵法的行列对于答案是没有影响的,所以我们可以将阴阳玉都
换到对角线上, 然后答案就变为了求 n 的错排数, 通过递推式即可求出。
f[n]=(n-1)*(f[n-1]+f[n-2]);
高精
考试丧心病狂的数据最大到5000 需要压位高精 代码底下有 。
#include <cstring>
#include <cstdio>
#define N 500
#define MOD 10 inline int max(int a,int b) {return a>b?a:b;}
struct node
{
int a[N];
inline node operator+(node b)
{
node c;
c.a[]=max(a[],b.a[])+;
for(int i=;i<=c.a[];++i)
{
c.a[i]+=a[i]+b.a[i];
c.a[i+]+=c.a[i]/MOD;
c.a[i]=c.a[i]%MOD;
}
for(;c.a[]>&&c.a[c.a[]]==;c.a[]--);
return c;
}
node() {memset(a,,sizeof(a));}
}ans[N];
int G[N][N],n;
node operator*(int x,node b)
{
int t=;
node c;
c.a[]=b.a[]+;
for(int i=;i<=c.a[];++i) c.a[i]=b.a[i]*x;
for (int i=;i<=c.a[];i++)
{
c.a[i]+=t;
if (c.a[i]>=MOD){t=c.a[i]/MOD;c.a[i]%=MOD;}
else t=;
}
for(;t;t/=MOD) c.a[++c.a[]]=t%MOD;
for(;c.a[]>&&c.a[c.a[]]==;c.a[]--);
return c;
}
int Main()
{
scanf("%d",&n);
ans[].a[]=;ans[].a[]=,ans[].a[]=ans[].a[]=;
/* for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&G[i][j]);*/
for (int i=;i<=n;i++) ans[i]=(i-)*(ans[i-]+ans[i-]);
printf("%d",ans[n].a[ans[n].a[]]);
for (int i=ans[n].a[]-;i>=;i--) printf("%d",ans[n].a[i]);
return ;
}
int sb=Main();
int main(int argc,char *argv[]){;}
#include <cstring>
#include <cstdio>
#define N 5005
#define MOD 10000 inline int max(int a,int b) {return a>b?a:b;}
struct node
{
int a[N];
inline node operator+(node b)
{
node c;
c.a[]=max(a[],b.a[])+;
for(int i=;i<=c.a[];++i)
{
c.a[i]+=a[i]+b.a[i];
c.a[i+]+=c.a[i]/MOD;
c.a[i]=c.a[i]%MOD;
}
for(;c.a[]>&&c.a[c.a[]]==;c.a[]--);
return c;
}
node()
{memset(a,,sizeof(a));}
}ans[N];
int G[N][N],n;
node operator*(int x,node b)
{
int t=;
node c;
c.a[]=b.a[]+;
for(int i=;i<=c.a[];++i) c.a[i]=b.a[i]*x;
for (int i=;i<=c.a[];i++)
{
c.a[i]+=t;
if (c.a[i]>=MOD){t=c.a[i]/MOD;c.a[i]%=MOD;}
else t=;
}
for(;t;t/=MOD) c.a[++c.a[]]=t%MOD;
for(;c.a[]>&&c.a[c.a[]]==;c.a[]--);
return c;
}
int Main()
{
freopen("firstmeet.in","r",stdin);
freopen("firstmeet.out","w",stdout);
scanf("%d",&n);
ans[].a[]=;ans[].a[]=,ans[].a[]=ans[].a[]=;
/* for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&G[i][j]);
*/ for (int i=;i<=n;i++) ans[i]=(i-)*(ans[i-]+ans[i-]);
printf("%d",ans[n].a[ans[n].a[]]);
for (int i=ans[n].a[]-;i>=;i--) printf("%04d",ans[n].a[i]);
return ;
fclose(stdin);
fclose(stdout);
}
int sb=Main();
int main(int argc,char *argv[]){;}
丧心病狂的5000(压位)
BZOJ 4563: [Haoi2016]放棋子的更多相关文章
- BZOJ——T 4563: [Haoi2016]放棋子
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 387 Solved: 247[Submit][Status][Discuss] Descriptio ...
- bzoj4563: [Haoi2016]放棋子(错排+高精)
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 387 Solved: 247[Submit][Status] ...
- [Haoi2016]放棋子 题解
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 440 Solved: 285[Submit][Status] ...
- 【BZOJ4563】[Haoi2016]放棋子 错排+高精度
[BZOJ4563][Haoi2016]放棋子 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...
- 洛谷P3182 [HAOI2016]放棋子
P3182 [HAOI2016]放棋子 题目描述 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要 ...
- BZOJ4563:[HAOI2016]放棋子——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4563 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列 ...
- BZOJ4563: [Haoi2016]放棋子
Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在 这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足每行 ...
- BZOJ 3294: [Cqoi2011]放棋子
3294: [Cqoi2011]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 628 Solved: 238[Submit][Status] ...
- [HAOI2016] 放棋子及错排问题
题目 Description 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足 ...
随机推荐
- unique()函数
unique()是c++里面的一个去重函数,包含在<iostream>中. 该函数将重复的元素移至容器的末尾,返回的为前面的无重复项的尾地址. 由于返回的是地址,所以经常需要转换为数值使用 ...
- qpython 读入数据问题: EOF error with input / raw_input
直接使用input会报错 EOF error with input / raw_input 原因是在qpy里console mode 命令行模式不是完全和pc上的命令行一致,所以input和raw_i ...
- skb_store_bits() 和 skb_copy_bits()
int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len); int skb_store_bits(c ...
- 21.运行Consent Page
服务端把这个地方修改为true,需要设置 运行测试.服务端和客户端都运行起来 我们使用的用户是在这里配置的 服务端修改ConsentController 再次运行,但是页面都是乱码 openId和pr ...
- JS控制GridView行选择
ASP.NET里的GridView控件使用非常广泛,虽然其功能强大,但总有一些不尽如人意的地方.比如在选择行的时候,它就没有UltraWebGrid做的友好:UltraWebGrid允许用户设置是否显 ...
- 渲染路径-surface shader 光照函数与渲染路径
https://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html Lighting Model declaration Lighting mo ...
- 关于c语言中的字符串的问题
静态数组,动态数组,链表是c语言中处理存储数据最基本的三种方式. 1.静态数组,你先定好大小,直接赋值即可,不要超过定义的长度. 2.动态分配数组,在执行的时候,输入要分的内存大小,然后p=(vo ...
- vue中修改swiper样式
问题 vue单文件组件中无法修改swiper样式. 解决 1,单文件组件中:新增一个style 不加scoped 让它最终成为全局样式.只在其中操作swiper的样式. <style lang= ...
- eclipse中windows下的preferences左栏没有tomcat?
是因为缺少eclipse for tomcat 插件,到http://www.eclipsetotale.com/tomcatPlugin.html此网站下载,我的eclipse版本是4.4版本的,所 ...
- JDK自带反编译工具javap
在JDK的bin文件夹下,有许多自带工具: javap就是其中的一个,对应为 javap.exe javap可反编译查看Java编译器编译生成的字节码文件, 语法: javap [ options ] ...