SGU 221.Big Bishops(DP)
题意:
给一个n*n(n<=50)的棋盘,放上k个主教(斜走),求能放置的种类总数。
Solution :
同SGU 220,加个高精度就好了。
code
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std; string f[][][], ans;
int tem[];
int n, k, tol; string add (string a, string b) {
string c;
int s[] = {};
for (int i = ; i < a.size(); i++) s[i] += a[i] - '';
for (int i = ; i < b.size(); i++) s[i] += b[i] - '';
int len = max (a.size(), b.size() );
for (int i = ; i < len; ++i) {
if (s[i] >= ) {
s[i + ] += s[i] / , s[i] = s[i] % ;
if (i + == len) len++;
}
c += '' + s[i];
}
return c;
}
string operator * (string a, int k) {
string c;
int len = a.size(), x = ;
for (int i = , tem; i < len; ++i) {
tem = (a[i] - '') * k + x;
c += '' + tem % ;
x = tem / ;
}
for (; x; x /= ) c += '' + x % ;
return c;
}
string operator * (string a, string b) {
string c;
int s[] = {};
for (int i = ; i < a.size(); ++i)
for (int j = ; j < b.size(); ++j)
s[i + j] += (a[i] - '') * (b[j] - '');
int len = a.size() + b.size() - ;
for (int i = ; i < len; ++i) {
if (s[i] >= ) {
s[i + ] += s[i] / , s[i] %= ;
if (i + == len) len++;
}
c += '' + s[i];
}
return c;
}
void make (int x) {
tol = ;
for (int t = x; t <= n; t += ) {
tem[++tol] = t;
if (t != n) tem[++tol] = t;
}
f[x - ][][] = "";
string t;
for (int i = ; i <= tol; i++)
for (int j = ; j <= k; j++)
if (tem[i] >= j) {
if (j > ) t = f[x - ][i - ][j - ] * (tem[i] - j + );
else t = "";
f[x - ][i][j] = add (f[x - ][i - ][j] , t );
}
}
int main() {
ios::sync_with_stdio ();
cin >> n >> k;
make ();
make ();
ans = "";
for (int i = ; i <= k; i++)
ans = add (ans , f[][tol][i] * f[][ * n - - tol][k - i]);
while (* (ans.end() - ) == '' && ans.size() > ) ans.erase (ans.end() - );
reverse (ans.begin(), ans.end() );
cout << ans ;
}
SGU 221.Big Bishops(DP)的更多相关文章
- SGU 220.Little Bishops(DP)
题意: 给一个n*n(n<=10)的棋盘,放上k个主教(斜走),求能放置的种类总数. Solution: 一眼看上去感觉是状压DP,发现状态太多,没办法存下来... 下面是一个十分巧妙的处理: ...
- SGU 390-Tickets(数位dp)
题意:有标号l-r的票,要给路人发,当给的票的编号的各数位的总和(可能一个人多张票)不小k时,才开始发给下一个人,求能发多少人. 分析:这个题挺难想的,参考了一下题解,dp[i][sum][left] ...
- SGU 199 Beautiful People(DP+二分)
时间限制:0.25s 空间限制:4M 题意: 有n个人,每个人有两个能力值,只有一个人的两个能力都小于另一个的能力值,这两个人才能共存,求能同时共存的最大人数. Solution: 显然这是一个两个关 ...
- SGU 134.Centroid( 树形dp )
一道入门树dp, 求一棵树的重心...我是有多无聊去写这种题...傻X题写了也没啥卵用以后还是少写好.. ----------------------------------------------- ...
- sgu 131 状压DP
棋盘覆盖(二) 时间限制:1000 ms | 内存限制:65535 KB 描述 The banquet hall of Computer Scientists' Palace has a ...
- [LeetCode] 221. 最大正方形(DP)
题目 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出: 4 ...
- SGU 144. Meeting 概率dp 几何概率分布 难度:0
144. Meeting time limit per test: 0.25 sec. memory limit per test: 4096 KB Two of the three members ...
- SGU 乱乱开
本解题报告 乱抄,乱写,随性随心,不喜多喷! SGU 142: 思路:一个string的字串不会超过2^20个,我们枚举出来就好了. 我出错点:数组RE #include<stdio.h> ...
- HDU-4507-吉哥系列故事-恨7不成妻
题目描述 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7=7*2 ...
随机推荐
- 用cmd改计算机名.bat 无需重启电脑生效
echo offset /p cname=请输入计算机名: echo REGEDIT4 >reg.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr ...
- 前端开发者应当了解的 Web 缓存知识
缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备.对于前端开发者来说,浏览器充当了重要角色.除此外常见的还有各种各样的代理服务器也可以做缓存.当Web请求到达缓存时, ...
- java 深clone和浅clone
1. clone类 public class Person implements Cloneable, Serializable{ /** * */ private static final long ...
- [转]javascript中style.left和offsetLeft的使用
如果父div的position定义为relative,子div的position定义为absolute,那么子div的style.left的值是相对于父div的值,这同offsetLeft是相同的,区 ...
- Unit Test单元测试时如何模拟HttpContext
参考文章:http://blog.csdn.net/bclz_vs/article/details/6902638 http://www.cnblogs.com/PurpleTide/archive/ ...
- hibernate Java 时间和日期类型的 Hibernate 映射
基础知识: 在 Java 中, 代表时间和日期的类型包含: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java. ...
- 使用blktrace统计磁盘块I/O访问频率 + IO调度CFQ
http://blog.chinaunix.net/uid-24774106-id-4096470.html http://blog.csdn.net/wyzxg/article/details/74 ...
- storyBoard使用介绍
storyBoard使用介绍 转载地址:http://www.2cto.com/kf/201210/161737.html 一 .简述 Storyboard是你可以用来定义用户界面的一种新的方式,像x ...
- Java——(八)Map之LinkedHashMap、TreeMap、EnumMap实现类
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.LinkedHashMap实现类 LinkedHashMap需要维护意识的插入顺序,因此性能 ...
- Linux 关闭及重启方式
一.shutdown 命令 作用:关闭或重启系统 使用权限:超级管理员使用 常用选项 1. -r 关机后立即重启 2. -h关机后不重启 3. -f快速关机,重启时跳过fsck(file system ...