当前位置: 首页 > news >正文

POJ 1722 DP

题意:

定义一种操作,操作i就是将a[i]-a[i+1]取出进行合并,再加入到a[i]的位置(我自己臆测的题意),进行n-1次操作后,会剩下一个数字。

给定a[1]~a[n]及目标t(最后剩下的数字),求操作顺序。

 

思路:

相当经典!

此题相当于在序列之间添加+-两种符号使得答案是t

最后按照+-号输出就是了

PS:第一个符号必定是减号!

 

View Code
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 
 5 #define N 120
 6 #define WC 10000
 7 
 8 using namespace std;
 9 
10 int n,t,a[N],pre[N],dp[N][20001];
11 
12 void read()
13 {
14     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
15 }
16 
17 void go()
18 {
19     memset(dp,0,sizeof dp);
20     memset(pre,0,sizeof pre);
21     dp[1][a[1]+WC]=2;
22     dp[2][a[1]-a[2]+WC]=1;
23     for(int i=3;i<=n;i++)
24         for(int j=0;j<=20000;j++)
25             if(dp[i-1][j]>0)
26             {
27                 if(j+a[i]<=20000) dp[i][j+a[i]]=2;
28                 if(j-a[i]>=0) dp[i][j-a[i]]=1;
29             }
30     for(int i=n,j=t+WC;i>=1;i--)
31     {
32         if(dp[i][j]==2)
33         {
34             pre[i]=2;
35             j-=a[i];
36         }
37         else if(dp[i][j]==1)
38         {
39             pre[i]=1;
40             j+=a[i];
41         }
42     }
43     int cnt=0;
44     for(int i=2;i<=n;i++)
45         if(pre[i]==2) printf("%d\n",i-1-cnt),cnt++;
46     for(int i=2;i<=n;i++)
47         if(pre[i]==1) puts("1");
48 }
49 
50 int main()
51 {
52     while(scanf("%d%d",&n,&t)!=EOF)
53     {
54         read();
55         go();
56     }
57     return 0;
58 }

转载于:https://www.cnblogs.com/proverbs/archive/2012/10/04/2711450.html

相关文章:

  • centos搭建ssh
  • Direct2D入门
  • Mina2.0框架源码剖析(二)
  • 64位ubuntu下安装32位jdk
  • response.setHeader()的用法
  • PCIE BAR空间
  • HDU5115:Dire Wolf——题解+翻译
  • JS常用代码
  • [iOS]中字体样式设置 API
  • 20个Jquery表单插件
  • MAC上Git安装与GitHub基本使用
  • ORACLE -- RAC Debug 之路 CRS-0184错误与CRS初始化
  • chrome插件控制台
  • 英特尔研发神经元AI处理器,模仿大脑功能,无需训练数据集
  • android 里使用Socket进行发送消息案例
  • 分享一款快速APP功能测试工具
  • Puppeteer:浏览器控制器
  • Vue学习第二天
  • vue学习系列(二)vue-cli
  • 机器学习 vs. 深度学习
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 用mpvue开发微信小程序
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • (1)(1.13) SiK无线电高级配置(五)
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (一)appium-desktop定位元素原理
  • (转)重识new
  • *** 2003
  • ../depcomp: line 571: exec: g++: not found
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net中的设计模式——Factory Method模式
  • @ComponentScan比较
  • @Validated和@Valid校验参数区别
  • @vue/cli脚手架
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [Android] Upload package to device fails #2720
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [C#]C#学习笔记-CIL和动态程序集
  • [C++][基础]1_变量、常量和基本类型
  • [flume$2]记录一个写自定义Flume拦截器遇到的错误
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
  • [ICCV2017]Neural Person Search Machines
  • [JavaWeb]—Spring入门
  • [java基础揉碎]方法的重写/覆盖
  • [Oh My C++ Diary]函数重载
  • [one_demo_10]递归解决汉诺塔问题