BZOJ 4806 - 4809 象棋四题
4806: 炮
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 103 Solved: 72
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
#include<cstdio>
#define N 105
#define P 999983
int n,m;long long f[N][N][N],ans;
inline long long C(int a,int b){
return b==?a:(1LL*a*(a-)/)%P;
}
main(){
scanf("%d%d",&n,&m),f[][m][]=;
for(int i=;i<n;++i)
for(int j=;j<=m;++j)
for(int k=;k<=m;++k)
if(f[i][j][k]){
(f[i+][j][k]+=f[i][j][k])%=P;
if(j>)(f[i+][j-][k+]+=f[i][j][k]*C(j,))%=P;
if(j>)(f[i+][j-][k+]+=f[i][j][k]*C(j,))%=P;
if(j>)(f[i+][j-][k]+=f[i][j][k]*C(j,)%P*C(k,))%=P;
if(k>)(f[i+][j][k-]+=f[i][j][k]*C(k,))%=P;
if(k>)(f[i+][j][k-]+=f[i][j][k]*C(k,))%=P;
}
for(int i=;i<=m;++i)
for(int j=;j<=m;++j)
ans=(ans+f[n][i][j])%P;
printf("%lld\n",ans);
}
4807: 車
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 126 Solved: 45
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
#include<cstdio>
#define N 1000005
int n,m,t,pri[N],que[N],cnt[N],ans[],tot=,mor;
void calc(int lim,int flg){
for(int i=;i<=lim;++i)
for(int num=i;num!=;)
cnt[pri[num]]+=flg,num/=pri[num];
}
main(){
scanf("%d%d",&n,&m);
if(n<m)n^=m^=n^=m;
for(int i=;i<=n;++i){
if(!pri[i])que[++t]=pri[i]=i;
for(int j=;j<=t&&i*que[j]<=n;++j){
pri[que[j]*i]=que[j];
if(!(i%que[j]))break;
}
}
ans[]=;
calc(n,+);
calc(m,-);
calc(n-m,-);
for(int i=;i<=t;++i)
for(int j=;j<=cnt[que[i]];++j){tot+=;
for(int k=;k<=tot;++k)ans[k]*=que[i];
for(int k=;k<=tot;++k)ans[k+]+=ans[k]/,ans[k]%=;
while(tot&&!ans[tot])--tot;if(tot>)tot=;
}
while(tot&&!ans[tot])--tot;
for(int i=tot;i;--i)putchar(''+ans[i]);
}
4808: 马
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 106 Solved: 43
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 1 0
0 1 0
Sample Output
HINT
Source
#include <cstdio> template <class T>
inline T min(const T &a, const T &b)
{
return a < b ? a : b;
} inline int nextInt(void)
{
int r = ;
int f = ;
int c = getchar(); for (; c < ; c = getchar())
if (c == '-')f = ; for (; c > ; c = getchar())
r = r * + c - ; return f ? -r : r;
} const int mxn = ;
const int mxm = ;
const int inf = ; int s;
int t;
int tt;
int hd[mxn];
int nt[mxm];
int to[mxm];
int fl[mxm]; inline void add(int x, int y)
{
nt[tt] = hd[x], to[tt] = y, fl[tt] = , hd[x] = tt++;
nt[tt] = hd[y], to[tt] = x, fl[tt] = , hd[y] = tt++;
} int dep[mxn];
int que[mxn];
int cur[mxn]; inline bool bfs(void)
{
for (int i = s; i <= t; ++i)
dep[i] = ; int l = , r = ;
dep[s] = ;
que[] = s; while (l != r)
{
int u = que[l++], v; for (int i = hd[u]; ~i; i = nt[i])
if (v = to[i], !dep[v] && fl[i])
dep[que[r++] = v] = dep[u] + ;
} return dep[t];
} int dfs(int u, int f)
{
if (!f || u == t)
return f; int used = , flow, v; for (int &i = cur[u]; ~i; i = nt[i])
if (v = to[i], fl[i] && dep[v] == dep[u] + )
{
flow = dfs(v, min(f - used, fl[i])); used += flow;
fl[i] -= flow;
fl[i^] += flow; if (used == f)
return used;
} if (!used)
dep[u] = ; return used;
} inline int flow(void)
{
int ret = , tmp; while (bfs())
{
for (int i = s; i <= t; ++i)
cur[i] = hd[i]; while (tmp = dfs(s, inf))
ret += tmp;
} return ret;
} int n, m, id[][]; const int mov[][] =
{
{+, +},
{+, -},
{-, +},
{-, -},
{+, +},
{+, -},
{-, +},
{-, -}
}; signed main(void)
{
n = nextInt();
m = nextInt(); for (int i = ; i <= n; ++i)
for (int j = ; j <= m; ++j)
if (!nextInt())id[i][j] = ++t; ++t; for (int i = s; i <= t; ++i)
hd[i] = -; for (int i = ; i <= n; ++i)
for (int j = ; j <= m; ++j)
if (id[i][j])
{
if ((i ^ j) & )
add(s, id[i][j]);
else
add(id[i][j], t);
} for (int i = ; i <= n; ++i)
for (int j = ; j <= m; ++j)
if (((i ^ j) & ) && id[i][j])
for (int k = ; k < ; ++k)
{
int x = i + mov[k][];
int y = j + mov[k][]; if (x < || x > n)continue;
if (y < || y > m)continue; if (!id[x][y])continue; add(id[i][j], id[x][y]);
} printf("%d\n", t - - flow());
}
4809: 皇后
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 123 Solved: 62
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 0 1 1
1 1 1 0
0 1 1 1
1 1 0 1
Sample Output
HINT
Source
#include <cstdio> inline int nextInt(void)
{
int r = ;
int c = getchar(); for (; c < ; c = getchar());
for (; c > ; c = getchar())
r = r * + c - ; return r;
} const int mxn = ; typedef unsigned long long lnt; int n, ans, map[mxn][mxn]; void search(int x, lnt a, lnt b, lnt c)
{
if (x == n)++ans;
else
{
lnt d = a | b | c; for (register int y = ; y < n; ++y)
if (!map[x][y] && !((d >> y) & ))
search(x + ,
(a | (1ULL << y)),
(b | (1ULL << y)) >> ,
(c | (1ULL << y)) << );
}
} signed main(void)
{
n = nextInt(); for (int i = ; i < n; ++i)
for (int j = ; j < n; ++j)
map[i][j] = nextInt(); search(, , , ); printf("%d\n", ans);
}
@Author: YouSiki
BZOJ 4806 - 4809 象棋四题的更多相关文章
- Java-集合(没做出来)第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如: List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Learn”); //此时list 为Hello World Learn reverseL
没做出来 第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列. 例如: List list = new ArrayList(); list.a ...
- 经典算法题每日演练——第十四题 Prim算法
原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...
- NOIP2010-普及组复赛-第四题-三国游戏
题目描述 Description 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不 ...
- CTF---Web入门第十四题 忘记密码了
忘记密码了分值:20 来源: Justatest 难度:中 参与人数:7706人 Get Flag:2232人 答题人数:2386人 解题通过率:94% 找回密码 格式:SimCTF{ } 解题链接: ...
- hiho_offer收割18_题解报告_差第四题
I.求逆元欧几里得方法 II.模拟细心+耐心 *本人感悟:自己的错误在于:对于这道模拟题没有耐心静下来一字一字看题,一行一行调错,一步一步调试,我要引以为戒. III.dpf[i][j][k]=max ...
- bzoj 3208 花神的秒题计划I
bzoj 3208 花神的秒题计划I Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题-- 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪 ...
- 第六届蓝桥杯java b组第四题
第四题 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153….. 其循环节为[846153] 共有6位. 下面的方法,可以求出循环 ...
- 网络流二十四题,题解summary
没有全部写完,有几题以后再补吧. 第一题:最简单的:飞行员配对方案问题 讲讲这个题目为什么可以用网络流? 因为这个题目是要进行两两之间的匹配,这个就可以想到用二分图匹配,二分图匹配又可以用网络流写. ...
- bzoj usaco 金组水题题解(2.5)
bzoj 2197: [Usaco2011 Mar]Tree Decoration 树形dp..f[i]表示处理完以i为根的子树的最小时间. 因为一个点上可以挂无数个,所以在点i上挂东西的单位花费就是 ...
随机推荐
- InnoDB 文件系统
1. 操作系统文件系统inode 2. InnoDB的存储结构 2.1Innodb inode page 参考 http://mysql.taobao.org/monthly/2016/02/01/ ...
- 关于node.js的进程管理
如果是单纯的运行一个node进程,那会比较简单,例如: node ./example.js 但是一般来说,当我们运行一个node进程之后,我们可能希望对这个进程进行更多的管理,例如,当node程序是一 ...
- 如何设置本机电脑的固定IP地址?
最近使用Loadrunner需要用到IP欺骗,但是我打开设置IP欺骗却提示我:IP向导不支持启用DHCP的网卡.您的卡启用了DHCP或者配置了无效设置.请与系统管理员联系. 我就方了,于是百度了一下, ...
- Python-元组-10
元祖 Why:对于容器型数据类型list,无论谁都可以对其增删改查,那么有一些重要的数据放在list中是不安全的,所以需要一种容器类的数据类型存放重要的数据,创建之初只能查看而不能增删改,这种数据类型 ...
- 这是一个数学题牛客训练赛E
题目描述 https://www.nowcoder.net/acm/contest/78/E 已知有一个n+1个数的数列,对于给定的A0和An ,当i满足当1<=i<=n-1时有 ...
- 《Linux内核分析》第八周笔记 进程的切换和系统的一般执行过程
20135132陈雨鑫 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- Linux内核分析:期中总结
第一章:计算机是如何工作的 计算机大部分都是用冯诺依曼体系结构,即存储程序计算机. 两个层面: 1.硬件: cpu(IP寄存器:指针,指向内存的某块区域)——总线——内存(代码与数据) 2.程序员: ...
- 第七周linux内核分析
可执行程序的装载 作者 黎静+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 ...
- 结对项目https://github.com/bxoing1994/test/blob/master/源代码
所选项目名称:文本替换 结对人:曲承玉 github地址 :https://github.com/bxoing1994/test/blob/master/源代码 结对人github地址:ht ...
- C学习随笔
1)要经常复习,一些基础的知识点,学过的.讲过的实例,应多看一下,学习并掌握编程的语法.思路.实验中可看出,不少同学对以前知识没有掌握,对讲过的实例没有理解2)要经常实践,纸上得来终觉浅,绝知此事要躬 ...