TaoSama与煎饼

1.这DP写得想哭~~~

2.好不容易想出dp[i][j][k][l]的状态,却把遍历的顺序写反了(我写的是从后向前,那么t[1],t[2],t[3],t[4]中某项为0时,就崩溃了),导致越写越复杂。

3.orzzzzzzzzz

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 using namespace std;
 6
 7 int T,n,m;
 8 int dp[45][45][45][45],c[400],t[5];
 9
10 int main()
11 {    scanf("%d",&T);
12      while(T--){
13         scanf("%d%d",&n,&m);
14         memset(c,0,sizeof(c));
15         memset(t,0,sizeof(t));
16         memset(dp,0,sizeof(dp));
17         for(int i=1;i<=n;i++) scanf("%d",&c[i]);
18         for(int i=1;i<=m;i++){
19             int tem;scanf("%d",&tem);
20             t[tem]++;
21         }
22         dp[0][0][0][0]=c[1];
23         for(int i=0;i<=t[1];i++){
24             for(int j=0;j<=t[2];j++){
25                 for(int k=0;k<=t[3];k++){
26                     for(int l=0;l<=t[4];l++){
27                         if(i) dp[i][j][k][l]=max(dp[i][j][k][l],c[1+i+j*2+k*3+l*4]+dp[i-1][j][k][l]);
28                         if(j) dp[i][j][k][l]=max(dp[i][j][k][l],c[1+i+j*2+k*3+l*4]+dp[i][j-1][k][l]);
29                         if(k) dp[i][j][k][l]=max(dp[i][j][k][l],c[1+i+j*2+k*3+l*4]+dp[i][j][k-1][l]);
30                         if(l) dp[i][j][k][l]=max(dp[i][j][k][l],c[1+i+j*2+k*3+l*4]+dp[i][j][k][l-1]);
31                     }
32                 }
33             }
34         }
35         printf("%d\n",dp[t[1]][t[2]][t[3]][t[4]]);
36     }
37 } 
时间: 2024-10-12 17:09:57

TaoSama与煎饼的相关文章

《煎饼侠》推广曲《五环之歌》MV首曝光神曲 岳云鹏 献唱

<煎饼侠>终极海报-竖版 新浪娱乐讯 由大鹏首度执导主演的暑期档唯一爆笑喜剧<煎饼侠>,凭其高达300多个笑点的爆笑指数正备受关注.日前,岳云鹏联手MC Hotdog(热狗)跨界演绎推广曲<五环之歌>,一经曝光便迅速刷爆了众多网友的微博.朋友圈,并在上线短短两小时突破200万次试听量,一举成为当下最火热的新一代神曲.近日,片方重磅曝光<五环之歌>MV,岳云鹏和MC Hotdog的倾情献唱,将洗脑神功全面升级. 本支MV中,岳云鹏用曲艺唱腔,闭目深情的唱出了五

AOJ-0525 Osenbei-翻煎饼(穷竭搜索,BFS,BITSET)

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0525 题意:药药!切克闹! 煎饼果子来一套!有一个烤饼器可以烤r行c列的煎饼,煎饼可以正面朝上(用1表示)也可以背面朝上(用0表示).一次可将同一行或同一列的煎饼全部翻转.现在需要把尽可能多的煎饼翻成正面朝上,问最多能使多少煎饼正面朝上? 输入:多组输入,每组第一行为二整数r, c (1 ≤ r ≤ 10, 1 ≤ c ≤ 10 000),剩下r行c列表示煎饼初始状态.r=c=0

翻煎饼(swust oj 0254)

Description:http://acm.swust.edu.cn/problem/0254/ 解题思路:先找出最大的煎饼,先翻转到最上面,最后翻转到最下层 AC代码: #include<stdio.h> int time=0; int digit[1000]; void turn(int a,int b)//翻煎饼 { int i=a,j=b; while(i<j){ int t=digit[i]; digit[i]=digit[j]; digit[j]=t; i++; j--;

Hark的数据结构与算法练习之煎饼排序

算法说明 假设煎锅里边有N个煎饼摞在了一起,它们大小不一并且顺序不一致,我们需要通过拿铲子将它们不停的翻个,进行排序,最终得到一个底下是大的煎饼,上边是小的煎饼的序列.这个排序的过程就是煎饼排序. 这个算法有两种解,一种是普通解,一种是最优解. 普通论证: 例如你的初始煎饼顺序是[2,4,3,1] 然后2与4交换位置,然后4与1交换位置,得出[1,3,2,4]. 然后3与1交换位置,接着3与2交换位置,得出[2,1,3,4]. 最后2与1交换位置,得出结果[1,2,3,4] 通过普通解的过程,我

煎饼堆

前言 该题目确实算作一个很基础的题目,但真正去写时却很容易出错,主要在于两点 煎饼堆翻动时的细节处理 输入与输出处理 因此做一记录 题目  Stacks of Flapjacks  Background Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discret

信息时代的“煎饼人”

手机依赖与阅读快感 不知道从何时开始,每天起床的第一件事不是刷牙洗脸,而是打开微信朋友圈,看一眼活跃的QQ群,还有查看邮箱.如果恰好遇上一篇标题颇为吸引的文章,还会花点时间看完.万一是篇知乎长文,再附上几个拓展链接,恐怕就是一个早上. 互联网产业与智能手机的快速发展,让"在线"变得相当容易.切随时随地,掏出手机,就连接上了微信,知乎,还有各大社交平台.这种阅读方式与读杂志非常接近,从这些文章里面可以知道热点的时事,朋友的近况,活动的宣传推广.开始还对此不以为意,直到某天想试着不用手机,

UVA 120 Stacks of Flapjacks(翻煎饼,啦啦啦啦~)

Problem A : Stacks of Flapjacks Background Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discrete event simulation. Stacks are also important in the theory

3D打印煎饼七十二变 早餐吃出新花样

3D打印巨头3D Systems在今年CES展会上就展示出两款糖果3D打印机ChefJet和ChefJet Pro.另外,西班牙一家初创公司也展示了食物3D打印机Foodini,可以用来打印意大利面.披萨这样的美食. 美国人米格尔·巴伦苏埃拉热爱机械工程和美食.你绝对想不到,他凭借着这两点爱好,在2010年自己动手用乐高积木制作出煎饼3D打印机PancakeBot.而在漫长的4年之后的今天,他把PancakeBot改进到了2.0版本. 米格尔采用了更加坚固漂亮的亚克力机身制作PancakeBot

UVA - 120Stacks of Flapjacks (摊煎饼。。)

/* 这题使我记起了以前很多忘掉的东西,例如sstream(分割流),deque(双端队列),还有众多函数(STL里的).值得收藏 值得注意的是这题的序号问题,(因为要求输出翻转的位置),序号从右往左为1-n: */ 题目大意: 一摞煎饼,煎饼有直径这一属性,从下往上摞,遗憾的是英文看不懂,他给的样例从左往右,表示从上到下.保证按题中所给算法(反转某一位置之上的所有煎饼)使得最后的序列为从小到大排列: 解题思路: 题中所给算法如下例: 2 3 4 1  5  -->1 2 3 4  5 5应该在