两次记忆化搜索,第一次找最小的gap,第二次找最少的次数。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int INF = 0x3f3f3f3f;
int n,x;
int a[];
int b[];
int dp[][];
int abs(int a)
{
return a > ? a : -a;
}
int dfs(int cur,int gap)
{
if(dp[cur][gap] != -)
return dp[cur][gap];
if(cur == n)
{
return dp[cur][gap] = abs(gap);
}
int x = dfs(cur + ,gap + a[cur] - b[cur]);
int y = dfs(cur + ,gap + b[cur] - a[cur]);
return dp[cur][gap] = min(x, y);
}
int dfs2(int cur,int gap)
{
if(dp[cur][gap] != -)
return dp[cur][gap];
if(cur == n)
{
if(abs(gap) == x)
return dp[cur][gap] = ;
return dp[cur][gap] = INF;
}
int p = dfs2(cur + ,gap + a[cur] - b[cur]);
int q = dfs2(cur + ,gap + b[cur] - a[cur]) + ;
return dp[cur][gap] = min(p, q);
}
int main()
{
cin >> n;
for(int i = ;i < n;i ++)
{
scanf("%d%d",&a[i],&b[i]);
}
memset(dp,-,sizeof(dp));
x = dfs(,);
memset(dp,-,sizeof(dp));
cout << dfs2(,) << endl;
return ;
}

poj1717的更多相关文章

  1. POJ1717 Dominoes[背包DP]

    Dominoes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6731   Accepted: 2234 Descript ...

  2. poj1717 Dominoes (背包)

    A domino is a flat, thumbsized tile, the face of which is divided into two squares, each left blank ...

  3. OJ题目分类

    POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 P ...

随机推荐

  1. haprox动态下线后端主机

    haproxy可以很好的支持主机下线,不需要编辑配置文件,也不需要重新reload服务,通过本身的socket发送指令即可: 当你的应用程序是高可用状态,一般部署的是>2的,这个时候就可以通过h ...

  2. [HNOI 2010] 弹飞绵羊

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2002 [算法] LCT动态维护森林连通性 时间复杂度 : O(NlogN ^ 2) ...

  3. npm 引入第三方过滤器

    根据项目具体情况使用过滤器,如果不满足业务需求可以在vue的全局或者局部自定义fiter(过滤器) 一下是github提供的第三方过滤器: https://github.com/freearhey/v ...

  4. MT8735A平台配置MT6630

    1. codegen配置 2. ProjectConfig CUSTOM_HAL_ANT = mt6630_ant_m1 CUSTOM_HAL_COMBO = mt6630 MTK_BT_CHIP = ...

  5. json对象和json数组

    json字符串对象和json字符串数组:JSONArray跟JSONObject的区别就是JSONArray比JSONObject多中括号[] jsonObject: "Row": ...

  6. java mysql编码问题

    今天使用jdbc连接数据库,sql语句明明是正确的,可就是查不到数据,问题是编码问题,好大的坑啊!!! 我的问题:where语句带汉字找不到信息,如果是英文却可以 第一步:在url后面加上如下的utf ...

  7. mosquitto.conf之log配置

    # ================================================================= # Logging # 日志信息 # ============= ...

  8. Identity Server 4 原理和实战(完结)_Hybrid Flow 实例, Claims, 角色授权和策略授权

    4分50 建立客户端 不需要身份认证 客户端叫做HybirdClient 配置IdentityServer服务端,先把客户端添加上 把userClaims添加到token里面 然后运行服务端就可以了 ...

  9. ubuntu 安装 lamp 和配置虚拟机

    1:sudo passwd root  #设定root密码 su 切换  exit 退出  ,或者 普通用户下 加sudo  2:sudo apt-get update  #更新软件列表 3:sudo ...

  10. C#基础之--线程、任务和同步:一、异步委托

    创建线程的一种简单方式是定义一个委托,并异步调用它.委托是方法的类型安全的引用. Delegate还支持异步地调用方法.在后台Delegate类会创建一个执行任务的线程. 为了说明委托的异步特性,从一 ...