DP+高精度 URAL 1036 Lucky Tickets
- /*
- 题意:转换就是求n位数字,总和为s/2的方案数
- DP+高精度:状态转移方程:dp[cur^1][k+j] = dp[cur^1][k+j] + dp[cur][k];
- 高精度直接拿JayYe的:)
- 异或运算的规则:
- 0⊕0=0,0⊕1=1
- 1⊕0=1,1⊕1=0
- 口诀:相同取0,相异取1
- */
- #include <cstdio>
- #include <cstring>
- #include <string>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- const int numlen = ;
- const int numbit = ;
- const int addbit = ;
- const int maxn = numlen/numbit + ;
- struct bign {
- int len, s[numlen];
- bign() {
- memset(s, , sizeof(s));
- len = ;
- }
- bign(int num) { *this = num; }
- bign(const char *num) { *this = num; }
- bign operator = (const int num) {
- char s[numlen];
- sprintf(s, "%d", num);
- *this = s;
- return *this;
- }
- bign operator = (const char *num){
- int clen = strlen(num);
- while(clen > && num[] == '') num++, clen--;
- len = ;
- for(int i = clen-;i >= ; i -= numbit) {
- int top = min(numbit, i+), mul = ;
- s[len] = ;
- for(int j = ;j < top; j++) {
- s[len] += (num[i-j]-'')*mul;
- mul *= ;
- }
- len++;
- }
- deal();
- return *this;
- }
- void deal() {
- while(len > && !s[len-]) len--;
- }
- bign operator + (const bign &a) const {
- bign ret;
- ret.len = ;
- int top = max(len, a.len), add = ;
- for(int i = ;add || i < top; i++) {
- int now = add;
- if(i < len) now += s[i];
- if(i < a.len) now += a.s[i];
- ret.s[ret.len++] = now%addbit;
- add = now/addbit;
- }
- return ret;
- }
- bign operator * (const bign &a)const {
- bign ret;
- ret.len = len + a.len;
- for(int i = ;i < len; i++) {
- int pre = ;
- for(int j = ;j < a.len; j++) {
- int now = s[i]*a.s[j] + pre;
- pre = ;
- ret.s[i+j] += now;
- if(ret.s[i+j] >= addbit) {
- pre = ret.s[i+j]/addbit;
- ret.s[i+j] -= pre*addbit;
- }
- }
- if(pre) ret.s[i+a.len] = pre;
- }
- ret.deal();
- return ret;
- }
- }dp[][];
- istream& operator >> (istream &in, bign &x) {
- string s;
- in >> s;
- x = s.c_str();
- return in;
- }
- ostream& operator << (ostream &out, const bign &x) {
- printf("%d", x.s[x.len-]);
- for(int i = x.len-;i >= ; i--) printf("%04d", x.s[i]);
- return out;
- }
- int main(void) //URAL 1036 Lucky Tickets
- {
- //freopen ("W.in", "r", stdin);
- int n, s;
- while (scanf ("%d%d", &n, &s) == )
- {
- if (s & ) {puts (""); continue;}
- dp[][] = ;
- int cur = ;
- for (int i=; i<=n; ++i)
- {
- for (int j=; j<=s/; ++j) dp[cur^][j] = ;
- for (int j=; j<=; ++j)
- {
- for (int k=; k+j<=s/; ++k)
- dp[cur^][k+j] = dp[cur^][k+j] + dp[cur][k];
- }
- cur ^= ;
- }
- cout << dp[cur][s/] * dp[cur][s/] << endl;
- }
- return ;
- }
DP+高精度 URAL 1036 Lucky Tickets的更多相关文章
- Ural 1036 Lucky Tickets
Lucky Tickets Time Limit: 2000ms Memory Limit: 16384KB This problem will be judged on Ural. Original ...
- URAL 1036(dp+高精度)
Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Pract ...
- POJ-2346 Lucky tickets(线性DP)
Lucky tickets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3298 Accepted: 2174 Descrip ...
- Codeforces Gym 100418J Lucky tickets 数位DP
Lucky ticketsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...
- 递推DP URAL 1031 Railway Tickets
题目传送门 /* 简单递推DP:读题烦!在区间内的都更新一遍,dp[]初始化INF 注意:s1与s2大小不一定,坑! 详细解释:http://blog.csdn.net/kk303/article/d ...
- ural 1217. Unlucky Tickets
1217. Unlucky Tickets Time limit: 1.0 secondMemory limit: 64 MB Strange people live in Moscow! Each ...
- POJ 2346:Lucky tickets
Lucky tickets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3247 Accepted: 2136 Des ...
- 1166 矩阵取数游戏[区间dp+高精度]
1166 矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description [ ...
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
随机推荐
- 关于hbase集群
1 一个hadoop data node上运行一个region server region server和data node在同一台机器上,这样就保证了数据的局部性. 2 hbase region s ...
- bash_action
https://stackoverflow.com/questions/12076326/how-to-install-maven2-on-redhat-linux #!/bin/bash # Tar ...
- hdfs namenode出错
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html 健壮性 HDFS的主要目标就是即使在出错的情况下也要保证数据存储的可靠性.常见的三种出 ...
- extjs 4 checkboxgroup Panel的简单用法
Ext.require([ 'Ext.tree.*', 'Ext.data.*', 'Ext.window.MessageBox', 'Ext.tip.*' ]); Ext.onReady(funct ...
- activity四种状态
finish() 使得activity死掉 activity 部分可见进入pause状态.全部不可见进入stop状态 .界面从死亡——运行(启动) MainAdctivity.onCreate.on ...
- 百度自然语言处理api用法
def words url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token=1111111" param ...
- 如何使用git 生成patch 和打入patch【转】
本文转载自:http://blog.csdn.net/liuhaomatou/article/details/54410361 平时我们在使用git 管理项目的时候,会遇到这样一种情况,那就是客户使用 ...
- bzoj4664: Count
是bzoj4498: 魔法的碰撞的哥哥题,我只写了一种 不一样的地方在于贡献有负数,第三维要保存的不能仅仅是0~L,这样空间会炸裂 考虑如何把贡献变成正的 假如要求最优解,那么一定是按顺序排,混乱度为 ...
- 探讨Ajax中有关readyState(状态值)和status(状态码)的问题
先看下面一段代码,然后给大家详细介绍,Ajax中有关readyState(状态值)和status(状态码)的问题,具体内容如下所示: var getXmlHttpRequest = function ...
- 类、对象(java基础知识六)
1.Java约定俗成 java约定俗成 1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写 2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用 ...