BZOJ 3106: [cqoi2013]棋盘游戏
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 859 Solved: 356
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
n<=20
题解:暴力DP即可;
f[i][j][k][l][m][n]:表示:第I位,第一,二,三个数用了i,j,k个,n表示是否有进位;
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define clr(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const ll inf=0x3f3f3f3f3f3f3f3fll;
ll a,b,c;
ll la,lb,lc,len;
ll dp[][][][][];
void getlen(){len=max(log2(a)+,max(log2(b)+,log2(c)+));}
ll getnum(ll x)
{
ll sum=;
for(int i=;i<;++i) {if( x & (1ll<<i) ) sum++; }
return sum;
}
void work()
{
dp[][][][][]=;
for(ll i=;i<len;++i)
{
for(ll j=;j<=la;++j)
{
for(ll k=;k<=lb;++k)
{
for(ll l=;l<=lc;++l)
{
long long tmp=dp[i][j][k][l][];//枚举最后一位不进位的情况
dp[i+][j+][k+][l+][]=min(dp[i+][j+][k+][l+][],tmp+(<<i+));
dp[i+][j+][k][l+][]=min(dp[i+][j+][k][l+][],tmp+(<<i));
dp[i+][j][k+][l+][]=min(dp[i+][j][k+][l+][],tmp+(<<i));
dp[i+][j][k][l][]=min(dp[i+][j][k][l][],tmp);
tmp=dp[i][j][k][l][];//枚举最后一位进位的情况
dp[i+][j+][k+][l+][]=min(dp[i+][j+][k+][l+][],tmp+(<<i+));
dp[i+][j][k+][l][]=min(dp[i+][j][k+][l][],tmp+(<<i));
dp[i+][j+][k][l][]=min(dp[i+][j+][k][l][],tmp+(<<i));
dp[i+][j][k][l][]=min(dp[i+][j][k][l][],tmp);
}
}
}
}
//cout<<len<<" "<<la<<" "<<lb<<" "<<lc<<endl;
if(dp[len][la][lb][lc][]>=inf) printf("-1\n");
else printf("%d\n",dp[len][la][lb][lc][]);
} int main()
{
scanf("%lld%lld%lld",&a,&b,&c);
getlen(); memset(dp,inf,sizeof dp);
la=getnum(a);lb=getnum(b);lc=getnum(c);
work();
return ;
}
BZOJ 3106: [cqoi2013]棋盘游戏的更多相关文章
- BZOJ 3106: [cqoi2013]棋盘游戏(对抗搜索)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3106 对抗搜索,f[x][y][a][b][c][d]表示当前谁走,走了几步,及位置. (因为 ...
- 【BZOJ 3106】 3106: [cqoi2013]棋盘游戏 (对抗搜索)
3106: [cqoi2013]棋盘游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 544 Solved: 233 Description 一个 ...
- 3106: [cqoi2013]棋盘游戏
3106: [cqoi2013]棋盘游戏 链接 分析: 极大极小搜索 + 记忆化. 代码 #include<bits/stdc++.h> using namespace std; type ...
- BZOJ 3106 棋盘游戏
Description 一个\(n \times n(n \le 2)\)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...
- bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3106 白棋如果第一步不能赢,那么一定输 因为可以黑棋走的距离比白棋大,黑棋可以下一步吃掉白棋,也可以 ...
- bzoj 3105: [cqoi2013]新Nim游戏 异或高消 && 拟阵
3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 535 Solved: 317[Submit][Stat ...
- BZOJ 3108: [cqoi2013]图的逆变换
3108: [cqoi2013]图的逆变换 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 627 Solved: 415[Submit][Statu ...
- BZOJ 3107 [cqoi2013]二进制a+b (DP)
3107: [cqoi2013]二进制a+b Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 995 Solved: 444[Submit][Stat ...
- BZOJ 3105 [CQOI2013]新Nim游戏 ——线性基
[题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即 ...
随机推荐
- ToolStrip控件左右拖拽移动效果实现
1.主窗体下部添加一个Panel乘放ToolStrip控件以实现ToolStrip在窗体下部定位.2.当ToolStrip控件中子控件超出屏幕时,拖动控件可以实现滑动效果.拖动到控件边缘距窗体边缘1/ ...
- [干货]AspNetCore熟练应用CancellationToken,CTO会对你刮目相看
背景 已经有很多文章记录了 web程序中采用异步编程的优势和.Net异步编程的用法, 异步编程虽然不能解决查询数据库的瓶颈, 但是利用线程切换,能最大限度的弹性利用工作线程, 提高了web服务的响应能 ...
- 使用 Zephir 轻松构建 PHP 扩展
简介: 通过 PHP 扩展, 我们可以在 php 代码中使用一些特定的方法(大部分的 php 扩展都是用 C 写的). 比如,在 PHP 中需要与 SQLite3 交互,我们可以自己写方法与之进行连接 ...
- 力扣(LeetCode)查找常用字符 个人题解
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表.例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 ...
- mysql 导出 导入
一.导出 windows下 切换到mysql安装目录bin目录下 导出 数据库lz_garden 下的 所有表结构 到d盘并命名为lz_garden.sql: D:\dev\MySQL\MySQL S ...
- 从静态代理,jdk动态代理到cglib动态代理-一文搞懂代理模式
从代理模式到动态代理 代理模式是一种理论上非常简单,但是各种地方的实现往往却非常复杂.本文将从代理模式的基本概念出发,探讨代理模式在java领域的应用与实现.读完本文你将get到以下几点: 为什么需要 ...
- gcc在x64体系中如何传递参数,linux,mac,iOS适用
上一篇介绍了vc(windows)平台在x64体系当中,c函数的传参方式.本篇将要介绍gcc(类linux,mac)平台在x64中,c函数是如何传参的.为节约时间和篇幅,首先来定义一个有十个参数的函数 ...
- LVM弹性硬盘
LVM机制的基本概念 PV(物理卷) ----由多个pe组成 VG(卷组) LV(逻辑卷) 基本命令: 如: 服务器新增一块大小为1T的SCSI的硬盘(sdb) ,创建一个名字为(ceshi)的逻辑分 ...
- Hash Map 在java中的解释及示例
目录 HashMap在java中的应用及示例 HashMap的内部结构 HashMap的性能 同步HashMap HashMap的构造函数 HashMap的时间复杂度 HashMap的方法 1. vo ...
- PyQt5的安装及测试(pycharm)
参考链接:https://www.cnblogs.com/pywjh/articles/9835931.html https://blog.csdn.net/SeekAndFindYou/ar ...