题目描述

2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难。为了纪念“911”事件,Mr. F决定自己用水晶来搭建一座双塔。Mr. F有N块水晶,每块水晶有一个高度,他想用这N块水晶搭建两座有同样高度的塔,使他们成为一座双塔,Mr. F可以从这N块水晶中任取M(1≤M≤N)块来搭建。但是他不知道能否使两座塔有同样的高度,也不知道如果能搭建成一座双塔,这座双塔的最大高度是多少。所以他来请你帮忙。

给定水晶的数量N(1≤N≤100)和每块水晶的高度Hi(N块水晶高度的总和不超过2000),你的任务是判断Mr. F能否用这些水晶搭建成一座双塔(两座塔有同样的高度),如果能,则输出所能搭建的双塔的最大高度,否则输出“Impossible”。

输入输出格式

输入格式:

输入的第一行为一个数N,表示水晶的数量。第二行为N个数,第i个数表示第i个水晶的高度。

输出格式:

输出仅包含一行,如果能搭成一座双塔,则输出双塔的最大高度,否则输出一个字符串“Impossible”。

输入输出样例

输入样例#1: 复制

5
1 3 4 5 2

输出样例#1: 复制

7

双倍经验

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 107;
int n,thi[maxn];
inline int read() {int x=0,    f=1;char c=getchar() ;while(c<'0'||c>'9'){ if(c=='-')f=-1;c=getchar();};while(c<='9'&&c>='0')x=x*10+c-'0',c=getchar();return x*f;
}
int f[maxn][2007];
int main() {n=read();int sum=0;memset(f,-2,sizeof(f));f[0][0]=0;for(int i=1;i<=n;++i) thi[i]=read(),sum+=thi[i];for(int i=1;i<=n;++i) {for(int j=0;j<=sum;j++) {f[i][j]=max(f[i][j],f[i-1][j]);//不放f[i][j+thi[i]]=max(f[i][j+thi[i]],f[i-1][j]+thi[i]);//放在高的上if(thi[i]<=j) f[i][j-thi[i]]=max(f[i][j-thi[i]],f[i-1][j]);//矮的还矮else f[i][thi[i]-j]=max(f[i][thi[i]-j],f[i-1][j]+thi[i]-j);//矮的变高
        }}if(!f[n][0])puts("Impossible");else printf("%d\n",f[n][0]);return 0;
}

转载于:https://www.cnblogs.com/sssy/p/7988579.html

luogu P2423 双塔相关推荐

  1. 洛谷 P2423 双塔

    洛谷 P2423 双塔 题目 题目描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念"911"事件,Mr. F决定自 ...

  2. 解题报告:luogu P2423 [HEOI2012]朋友圈【最大团转最大点独立集(匈牙利算法+时间戳优化)】

    图的最大团:"任意两点之间都有一条边相连"的子图被称为无向图的团,点数最多的团为图的最大团 朋友圈中任意两个点之间都有关系,既是图中的团. 答案就是图中的最大团. 我们如果把B国的 ...

  3. luogu P2423 [HEOI2012]朋友圈 (最大团)

    在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着. 一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目.两个国家看成是 ...

  4. 清北学堂Day 3 游记

    爆炸!!!!! 上午:emmmm我今天要争取进前40(flag 1) 拿到试题,瞬间感受到了zhx长者的恶意......两道方案数题,我要凉了啊. T1:这是道傻逼题,我20分钟就能切掉(flag2) ...

  5. 【洛谷P2423】双塔

    题目链接:https://www.luogu.org/problem/show?pid=2423 题解: 没有一下子想到正确的状态定义,然后就开始各种YY,拿背包乱搞只错了一个点hhh 正解显然是DP ...

  6. luogu P1549 棋盘问题(2) 题解

    luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...

  7. [Luogu] 选学霸

    https://www.luogu.org/problemnew/show/P2170 并查集+DP #include <iostream> #include <cstring> ...

  8. Luogu 2470 [SCOI2007]压缩

    和Luogu 4302 [SCOI2003]字符串折叠 差不多的想法,区间dp 为了计算方便,我们可以假设区间[l, r]的前面放了一个M,设$f_{i, j, 0/1}$表示区间$[i, j]$中是 ...

  9. 【Luogu】P1613 跑路

    [Luogu]P1613 跑路 一.题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资 ...

最新文章

  1. 四种排序(冒泡、插入、递归、选择)
  2. Java13-day04【Integer、int和String的相转、自动装箱和拆箱、Date、SimpleDateFormat、Calendar、异常、try...catch、throws】
  3. 显示mnist手写数字
  4. 安装CentOS6.8并配置网络图文解说亲测全过程
  5. 求链表的倒数第m个元素
  6. Beta冲刺——星期三
  7. php分享十三:mysql事物
  8. lock.lock()使用,与synchronized对比
  9. Data Binding 实践
  10. python怎么排名次_2019:python第3次获得TIOBE最佳年度语言排名
  11. python定期自动运行_令人惊叹的8个Python新手工具
  12. 相爱相杀:移动联通IT支撑回忆录(九)
  13. css3中transform:translateY之后文字模糊的原因
  14. matlab 绘图颜色参考 linspace
  15. 心随风飞扬,仍存一线牵~
  16. HDFS 磁盘写及balance
  17. 查看BMP格式图片的十六进制代码
  18. 上证50基金有哪些_上证50指数基金,最全选购攻略
  19. 通过pc算法和随机游走来做根因定位,CloudRanger论文解读
  20. Kaggle 2022 年鉴发布!涵盖竞赛趋势 57场比赛方案汇总!

热门文章

  1. 微信小程序激励式视频广告组件使用
  2. 【案例实战】分布式应用下登录检验解决方案(JWT)
  3. Vulnhub靶机:HACKER KID_ 1.0.1
  4. Vue 浏览器本地存储
  5. 人工智能成天桥区智能制造突破口
  6. 巴巴腾小腾智能对话机器人_我的“心”始终陪伴着你——巴巴腾陪护机器人“小腾”...
  7. 锁定计算机 最新的,锁定计算机的方法
  8. 每个程序员都应该知道的 CPU 知识:NUMA
  9. Java开发西安地区最近面试汇总(三)
  10. 【微信小程序】wampserver之路启航