也是一道线型动态规划的好题……

读入每个人的贪婪度之后,对其按照从大到小的顺序排序,定义状态f[i][j]为前i个人(排序后)分j个饼干的答案,那么答案为f[n][m],考虑状态转移方程。

1、若给第i个人的饼干数大于1 ,那么我们将这i个人的饼干数都减1(总共减n),他们的怨气值是不会改变的,因而这种情况下,f[i][j]=f[i][j-i].

2、若给第i个人的饼干数等于1,那么我们枚举一个k(0≤k<i),表示从k之后一直到i所有的人的饼干数都是1,那么f[i][j]=f[k][j-(i-k)]+k*∑g[c[p]]    (k<p<=i).

我们先预处理出g数组的前缀和,即可实现O(n)的转移。

综上,我们在两种决策中取最优即可。另外,本题要求输出方案,我们只需在状态转移时记录每个状态的前驱即可。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 int n,m,f[40][5010],a[40][5010],b[40][5010];
 7 int s[50],ans[50];
 8 int g[50],c[50];
 9 bool cmp(int x,int y) {
10     return g[x]>g[y];
11 }
12 void calc(int x,int y) {
13     if(!x) return ;
14     calc(a[x][y],b[x][y]);
15     if(a[x][y]==x)
16         for(int i=1;i<=x;i++) ans[c[i]]++;
17     else
18         for(int i=a[x][y]+1;i<=x;i++) ans[c[i]]=1;
19 }
20 int main() {
21     scanf("%d%d",&n,&m);
22     for(int i=1;i<=n;i++)  {
23         scanf("%d",&g[i]);
24         c[i]=i;
25     }
26     sort(c+1,c+n+1,cmp);
27     memset(f,0x3f,sizeof(f));
28     f[0][0]=0;
29     for(int i=1;i<=n;i++) s[i]=s[i-1]+g[c[i]];
30     for(int i=1;i<=n;i++)
31         for(int j=i;j<=m;j++) {
32             f[i][j]=f[i][j-i];
33             a[i][j]=i;
34             b[i][j]=j-i;
35             for(int k=0;k<i;k++)
36                 if(f[i][j]>f[k][j-(i-k)]+k*(s[i]-s[k])) {
37                     f[i][j]=f[k][j-(i-k)]+k*(s[i]-s[k]);
38                     a[i][j]=k;
39                     b[i][j]=j-(i-k);
40                 }
41         }
42     printf("%d\n",f[n][m]);
43     calc(n,m);
44     for(int i=1;i<=n;i++) printf("%d ",ans[i]);
45     return 0;
46 }

AC Code

转载于:https://www.cnblogs.com/shl-blog/p/10660961.html

【CH5105】Cookies相关推荐

  1. html判断cookies ph,【教程】如何利用IE9的F12去分析网站登陆过程中的复杂的(参数,cookie等)值(的来源)...

    在抓取网站内容,模拟网站登陆等过程中: 往往要去分析某些变量,参数,某cookie的值的来源. 而想要分析单个的值,相对于从F12所抓取到的海量信息,即N多条的记录,且每天记录中有N多数据信息,来说, ...

  2. IdentityServer4关于多客户端和API的最佳实践【含多类型客户端和API资源,以及客户端分组实践】【中】...

    上一篇文章中,我们已经完成了服务端数据库的搭建,本篇主要处理多[传统HTTP][依赖CORE环境]客户端之间协同在线[SSO]以及不需要SSO的场景处理. 目标: 1)实现多类型客户端接入Identi ...

  3. winform模拟登陆网页_【教程】模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码)...

    之前已经介绍过了网络相关的一些基础知识了: 以及简单的网页内容抓取,用C#是如何实现的: 现在接着来介绍,以模拟登陆百度首页: 为例,说明如何通过C#模拟登陆网站. 不过,此处需要介绍一下此文前提: ...

  4. 【转】 浏览器分析模拟登陆过程

    原文地址:http://www.crifan.com/use_ie9_f12_to_analysis_the_internal_logical_process_of_login_baidu_main_ ...

  5. 【10】青龙面板之JD ck 获取的1种办法

    nolanjdc 目前已经不可用,提供1种jd ck的获取办法. 安卓.iOS 使用浏览器软件[Alook]进行提取(自行搜索下载),需要注意的是该软件iOS收费, 软件下载完成后手动输入网址:m.j ...

  6. 【转】Java学习---Java Web基础面试题整理

    [原文]https://www.toutiao.com/i6592359948632457731/ 1.什么是Servlet? 可以从两个方面去看Servlet: a.API:有一个接口servlet ...

  7. 【杂谈】爬虫基础与快速入门指南

    今天给大家分享一下网络爬虫的基础知识,以及一些优秀的开源爬虫项目.网络爬虫主要是我们在面对新的任务,但自己又没有数据的时候,获取自己想要的数据的一种手段.因此我们有必要掌握一定的爬虫知识,从而更好的准 ...

  8. 【Python】【Flask】

    [快速开始] from flask import Flask, url_for, render_template, redirectapp = Flask(__name__) "" ...

  9. 【Java13】cookiesession(登陆案例(2)),jsp(登录案例(3))

    文章目录 1.cookie:再次时请求头携带cookie到服务端 2.登陆案例_记住我:js访问浏览器数据用document 3.session:根据sessionid,服务器才能找到session( ...

最新文章

  1. linux 初始化工作进程 systemd简介
  2. Mac终端(Terminal)自定义颜色,字体,背景
  3. poj 1716 差分约束
  4. win10系统安装Redis3.2.100
  5. gradle生命周期
  6. python D29 socketserver以及FTB
  7. 遗传算法求解装箱问题c语言,求解装箱问题的遗传算法-南昌航空大学期刊网.pdf...
  8. 程序员每天少吃===活120岁
  9. FCPX插件Titles Set for Mac - 三合一黑白文本标题模板
  10. 【java】JDK中注解的底层实现
  11. 手工制作机器人用彩泥_印度神奇芒果干制作过程,看一遍顶三遍,游客:不会再吃了...
  12. 子序列的个数 --- 庞果网
  13. yum mysql 设置密码_Linux下的 Mysql 8.0 yum 安装 并修改密码
  14. StringTokenizer类
  15. 【git】从零开始在git上部署自己的免费生日祝福网页
  16. 原生js写小球向右移动移动一定距离停止运动及小球加速运动
  17. C专家编程 五 声明的优先级规则
  18. linux-mount-iso
  19. coursera—Mini-project #1 - Rock-paper-scissor-lizard-Spock
  20. OFDM专题之如何计算OFDM一个符号的功率,功率谱密度

热门文章

  1. Kotlin AAPT: error: resource android:attr/lStar not found.
  2. 视频显示边缘空白的真相
  3. php正则表达式匹配逗号,数字和逗号PHP正则表达式只
  4. 史上最真实行业鄙视链
  5. c 语言运算符号大全,c语言运算符号详细说明
  6. 西浦与杭电计算机选哪个,四邮四电究竟谁强谁弱?哪三所大学报考更有性价比?...
  7. 戴尔计算机windows未能启动,戴尔电脑windows7无法启动安装过程怎么办
  8. HTML+CSS+JS实现 ❤️卡通湖面上日出动画特效❤️
  9. java 一对一的关系_与休眠一对一关系 - java
  10. spss多元非线性曲线拟合_快速掌握SPSS数据分析