contest hunter5105 Cookies
神题
先按贪婪值大到小排序,根据贪心的思想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的更多相关文章
- 0x51 线性DP
数据结构没什么好写的..分块和整体二分还有点分学得很懂..果然我还是比较适合这些东西 poj2279 奇怪题,我的想法就是五维记录最边上的一斜排,会M,结果的的确确是锻炼思维的,正解并不是DP2333 ...
- scrapy cookies:将cookies保存到文件以及从文件加载cookies
我在使用scrapy模拟登录新浪微博时,想将登录成功后的cookies保存到本地,下次加载它实现直接登录,省去中间一系列的请求和POST等.关于如何从本次请求中获取并在下次请求中附带上cookies的 ...
- ASP.Net MVC Session和Cookies的简单使用
目标:用Session和Cookies实现登陆信息保存和展现 Cookies实现: Controller: //把登陆用户名存到cookies中 HttpCookie cook = new HttpC ...
- Webform(六)——登录状态保持(Cookies内置对象)
用户用浏览器访问一个网站,由于采用的http的特性,Web服务器并不能知道是哪一个用户正在访问,但一些网站,希望能够知道访问者的一些信息,例如是不是第一次访问,访问者上次访问时是否有未做完的工作,这次 ...
- Programming Contest Problem Types
Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...
- [LeetCode] Assign Cookies 分点心
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- jquery缓存使用jquery.cookies.2.2.0.min.js
$.cookies.set(key, obj, { hoursToLive: 2}); key标识的键 , obj存入的值可以缓存json对象, hoursToLive 缓存小时数 $.cookies ...
- C# HttpWebRequest获取COOKIES
C# HttpWebRequest获取COOKIES byte[] bytes = Encoding.Default.GetBytes(_post); CookieContainer myCookie ...
- 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) ...
随机推荐
- 管理mysql数据严格模式,和安全模式处理
最近使用mysql数据库高一点的版本遇到了,插入和修改等语句失败情况.语句没有错误,但是workbench提示 Field 'id' doesn't have a default value.原因是 ...
- html中canvas渲染图片,并转化成base64格式保存
最近在做一个上传头像然后保存显示的功能,因为涉及到裁剪大小和尺寸比例,所以直接上传图片再展示的话,就会出现问题,所以就想用canvas来渲染裁剪后的图片,然后转化成base64格式的图片再存储,这样取 ...
- Android 解析JSON
上次讲了XML格式数据的解析方式,这次要说的是如何解析JSON数据格式,相对与XML,JSON解析数据的方式在于它的体积更小,在网络上传输可以更省流量. 这次在网上找到一个中国天气json数据的API ...
- 全文检索引擎及工具 Lucene Solr
全文检索引擎及工具 lucence lucence是一个全文检索引擎. lucence代码级别的使用步骤大致如下: 创建文档(org.apache.lucene.document.Document), ...
- Oracle11g自带的SQL developer无法打开解决
在安装完Oracle Database 11g Release 2数据库,想试一下Oracle自带的SQL Developer工具,在操作系统菜单的所有程序中找到SQL Developer如下所示,并 ...
- SQL语言入门
内容来源:唐成. PostgreSQL修炼之道[M]. 机械工业出版社, 2015. 此书购买链接:京东 亚马逊 SQL(Structured Query Language) 结构化查询语言 1. 语 ...
- C++的Android接口---配置NDK
一. 在安卓工具网站下载ADT:http://tools.android-studio.org/index.php 参考链接:http://1527zhaobin.iteye.com/blog/186 ...
- button提交表单 a标签提交表单
<form name="searchForm" id="searchForm" method="get" action="/ ...
- mui scrollTo到指定位置,出现空白页及拉不动的问题解决
使用方式简介 mui 列表页使用的是 mui的插件实现的上拉加载下拉刷新,但是从详情页回到列表页时 不能回到之前的位置.所以想到了使用缓存. 第一次和第二次的试验是失败的.失败后,就想用其他办法来解决 ...
- position:absolute与position:relative
position的默认属性值均是static,静态. [position:absolute]定位为absolute的层脱离正常文本流,但其在正常流中的位置不再存在. 大多数人可能会觉得absolute ...