神题

先按贪婪值大到小排序,根据贪心的思想g[i]越大a[i]也越大(这个微扰可以证,给个提示,a>b且c<d 则 (a-b)(c-d)<0 则 ac+bd<ad+bc)

DP有四个维吧,当前枚举到的位置,已经拿的饼数,最后一个人拿了多少饼以及它的a值是多少。

这样稳M稳T,由于a是有单调性,而且区间中饼同时多拿相对顺序不变a值也不变,于是乎我们玄学的把后两维删掉,假设当前位置只拿1个饼,有k个和它相等,一共拿了j个饼,这样可以得到转移的方程:f[i][j]=min(Σ(k<i) f[k][j-i+k]+k*Σ(p=k+1~n)g[p])

而全部人多拿一个饼对于答案没有影响所以f[i][j]也就可以继承f[i][j-i]

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; struct node{int g,id;}a[];
bool cmp(node n1,node n2){return n1.g>n2.g;}
int f[][];
struct toback
{
int A,B;
toback(){}
toback(int a,int b){A=a,B=b;}
}zz[][]; int as[];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&a[i].g), a[i].id=i;
sort(a+,a+n+,cmp); memset(f,,sizeof(f));f[][]=;
for(int i=;i<=n;i++)
for(int j=i;j<=m;j++)
{
f[i][j]=f[i][j-i];//1~i ++;
zz[i][j]=toback(i,j-i);
for(int k=;k<i;k++)//多少个和i一样 (包括i)
{
int sum=;
for(int p=k+;p<=i;p++)sum+=a[p].g;
sum*=k; if(f[i][j]>f[k][j-(i-k)]+sum)
{
f[i][j]=f[k][j-(i-k)]+sum;
zz[i][j]=toback(k,j-(i-k));
}
}
}
printf("%d\n",f[n][m]); int x=n,y=m;
memset(as,,sizeof(as));
while(x!=||y!=)
{
int tx=zz[x][y].A,ty=zz[x][y].B;
if(tx==x)
{
for(int j=;j<=tx;j++)as[a[j].id]++;
}
else
{
for(int j=tx+;j<=x;j++)as[a[j].id]++;
}
x=tx;y=ty;
}
for(int i=;i<n;i++)printf("%d ",as[i]);
printf("%d\n",as[n]);
return ;
}

contest hunter5105 Cookies的更多相关文章

  1. 0x51 线性DP

    数据结构没什么好写的..分块和整体二分还有点分学得很懂..果然我还是比较适合这些东西 poj2279 奇怪题,我的想法就是五维记录最边上的一斜排,会M,结果的的确确是锻炼思维的,正解并不是DP2333 ...

  2. scrapy cookies:将cookies保存到文件以及从文件加载cookies

    我在使用scrapy模拟登录新浪微博时,想将登录成功后的cookies保存到本地,下次加载它实现直接登录,省去中间一系列的请求和POST等.关于如何从本次请求中获取并在下次请求中附带上cookies的 ...

  3. ASP.Net MVC Session和Cookies的简单使用

    目标:用Session和Cookies实现登陆信息保存和展现 Cookies实现: Controller: //把登陆用户名存到cookies中 HttpCookie cook = new HttpC ...

  4. Webform(六)——登录状态保持(Cookies内置对象)

    用户用浏览器访问一个网站,由于采用的http的特性,Web服务器并不能知道是哪一个用户正在访问,但一些网站,希望能够知道访问者的一些信息,例如是不是第一次访问,访问者上次访问时是否有未做完的工作,这次 ...

  5. Programming Contest Problem Types

        Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...

  6. [LeetCode] Assign Cookies 分点心

    Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...

  7. jquery缓存使用jquery.cookies.2.2.0.min.js

    $.cookies.set(key, obj, { hoursToLive: 2}); key标识的键 , obj存入的值可以缓存json对象, hoursToLive 缓存小时数 $.cookies ...

  8. C# HttpWebRequest获取COOKIES

    C# HttpWebRequest获取COOKIES byte[] bytes = Encoding.Default.GetBytes(_post); CookieContainer myCookie ...

  9. hdu 4946 2014 Multi-University Training Contest 8

    Area of Mushroom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

随机推荐

  1. 【Bootstrap】如何让响应式图片(img-responsive)水平居中

    我们在用bootstrap排版内容的时候,有的时候在内容中需要图片水平居中对齐. 一般情况下,我们的图片都使用了 .img-responsive 类来实现响应式图片.如果需要实现响应式图片水平居中,那 ...

  2. Scala类型系统——高级类类型(higher-kinded types)

    高级类类型就是使用其他类型构造成为一个新的类型,因此也称为 类型构造器(type constructors).它的语法和高阶函数(higher-order functions)相似,高阶函数就是将其它 ...

  3. 数据库操作(一)DML

    1.数据库 数据库可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增.查询.更新.删除等操作. 所谓“数据库”是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与 ...

  4. VS 2017 统计项目代码总行数

    编辑 → 查找和替换 → 在文件中的查找,打开查找窗口 填入正则表达式  ^b*[^:b#/]+.*$ 查找范围选“整个解决方案”,勾选上“使用正则表达式” 如果要限制文件类型,就填上要查找的文件类型 ...

  5. sqlserver 和MySQL的一些函数的区别

    相同的表数据在sqlserver和MySQL中使用各自的函数得到相同的结果,如下表 drop table tb;create table tb(id int, value1 varchar(10), ...

  6. 【剑指Offer】22、从上往下打印二叉树

      题目描述:   从上往下打印出二叉树的每个节点,同层节点从左至右打印.   解题思路:   本题实际上就是二叉树的层次遍历,深度遍历可以用递归或者栈,而层次遍历很明显应该使用队列.同样我们可以通过 ...

  7. [转载]Linux内存高,触发oom-killer问题解决

    最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂 首先确认该系统的版本是32位 #uname -a Linux alarm 2.6.9-67.ELsmp #1 SMP We ...

  8. [luogu2825 HEOI2016/TJOI2016] 游戏 (二分图最大匹配)

    传送门 Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看是否能炸到对手,或者躲开对手的炸弹.在玩游戏的过程中,小H想到了 ...

  9. C#学习笔记_05_输入输出

    05_输入输出 输出语句 Console.WriteLine( ); 将括号内内容输出到控制台,并且换行 Console.Write( ); 将括号内内容输出到控制台,不换行 Console.Writ ...

  10. java异常处理的面试题

    package test; public class Test { public static int method(int i) throws Exception { try { return 10 ...