2014 GCJ Round 1B New Lottery Game(数位dp,x小于等于A,y小于等于B,并且x&y值小于等于K的数字个数)
来源:互联网 发布:个人网上开店平台 知乎 编辑:程序博客网 时间:2024/04/29 21:27
题目链接:
2014 GCJ Round 1B New Lottery Game
题意:
求
数据范围:
分析:
官方题解在这里:Here。通篇读下来很有意思,对于理解数位dp很有帮助。
一般的数位dp我们在dfs
的时候只记录一个
// GCJ 2014 #Round1B New Lottery Game//https://code.google.com/codejam/contest/2994486/dashboard#s=p1&a=1#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;typedef long long ll;int T, cases = 0;ll A, B, K;ll vis[35][3][3][3];ll solve(int cur, int lessA, int lessB, int lessK){ if (cur == -1) return lessA && lessB && lessK; if (vis[cur][lessA][lessB][lessK] != -1) return vis[cur][lessA][lessB][lessK]; int MaxA = lessA || ((A >> cur) & 1); int MaxB = lessB || ((B >> cur) & 1); int MaxK = lessK || ((K >> cur) & 1); ll ret = solve(cur - 1, MaxA, MaxB, MaxK); // 0 & 0 = 0 if (MaxA) ret += solve(cur - 1, lessA, MaxB, MaxK); // 0 & 1 = 0 if (MaxB) ret += solve(cur - 1, MaxA, lessB, MaxK); // 1 & 0 = 0 if (MaxA && MaxB && MaxK) ret += solve(cur - 1, lessA, lessB, lessK); // 0 & 0 = 0 return vis[cur][lessA][lessB][lessK] = ret;}int main(){ scanf("%d", &T); while (T--) { scanf("%lld%lld%lld", &A, &B, &K); memset(vis, -1, sizeof(vis)); printf("Case #%d: %lld\n", ++cases, solve(31, 0, 0, 0)); } return 0;}
0 0
- 2014 GCJ Round 1B New Lottery Game(数位dp,x小于等于A,y小于等于B,并且x&y值小于等于K的数字个数)
- 如果大于等于80分,小于等于100分的同学评级为A,小于80分为B.
- 如果大于等于80分,小于等于100分的同学评级为A,小于80分为B.
- [数学知识]求小于等于a^b的与a^b互质的数的个数与和
- 求小于等于n的质数个数
- c语言取整数,小于等于x的最大整数
- mongoDB 大于,小于,大于等于,小于等于
- el表达式小于等于不等于小于等于
- el表达式小于等于不等于小于等于
- ibatis 大于等于小于等于的写法
- Ibatis大于,小于等于
- 大于、小于还是等于
- 实现随机整数[a,b),大于等于a,小于b
- x或y等于x加y
- x或y等于x加y
- 用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有一种1/3元/只得小鸡,分别记为下,x,y,z只,编程求解x,y,z所有可能解
- 动态规划求小于等于n的质数个数
- 值x将链表划分为两部分,小于x的结点排在大于或等于x 的结点之前
- Android studio编译报错:Error:Execution failed for task ':app:transformClasses_enhancedWithInstantReloadD
- 编译spark源码
- 第二章-宝箱抽奖模块与代码设计(二)
- AlertDialog使用
- 从头开始学SQL 入门(二) select的用法
- 2014 GCJ Round 1B New Lottery Game(数位dp,x小于等于A,y小于等于B,并且x&y值小于等于K的数字个数)
- vue.js的插入dom节点方式
- 解决多线程编程中大并发数等待唤醒的问题
- Unity四种坐标系
- Tomcat 8.x 《设计模式》Lifecycle & State 模式
- php用户登录代码session、cookie自动记忆功能
- Python学习笔记——高级特性
- Java对象和引用变量
- Real-Time Rendering 翻译 4.变换【下】