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) ...
随机推荐
- bootstrap 网格布局
一:基本的网格布局 <div class="container"> <div class="row"> <div class=&q ...
- python--1、入门
python的创始人为吉多·范罗苏姆(Guido van Rossum). python在2017年统计的所有语言排名中处于第四名,稳步上升状态. python应用领域: WEB开发(Django框架 ...
- Windows下错误码全解析
windows系统下,调用函数出错时.可以调用GetLastError函数返回错误码.但是GetLastError函数返回值是DWORD类型,是一个整数.如果想要知道函数调用的真正错误原因,就需要对这 ...
- 一个休假申请页对input标签各种属性的用法案例(手机端)
<%@ page language="java" import="java.util.*" contentType="text/html; ch ...
- PAT_A1034#Head of a Gang
Source: PAT A1034 Head of a Gang (30 分) Description: One way that the police finds the head of a gan ...
- vue部署到nginx服务下,非根目录,刷新页面404怎么解决?
nginx配置 location / { proxy_pass http://xxxx; } location /category { root /home/tv; index index.html; ...
- BZOJ 3514 GERALD07加强版 (LCT+主席树)
题目大意:给定n个点m条边无向图,每次询问求当图中有编号为[L,R]的边时,整个图的联通块个数,强制在线 神题!(发现好久以前的题解没有写完诶) 我们要求图中联通块的个数,似乎不可搞啊. 联通块个数= ...
- [bzoj1860 ZJOI2006] 超级麻将 (线性dp)
传送门 Description Input 第一行一个整数N(N<=100),表示玩了N次超级麻将. 接下来N行,每行100个数a1..a100,描述每次玩牌手中各种牌的数量.ai表示数字为i的 ...
- PHP过滤html注释
过滤html注释: 所谓过滤,不过是字符串的匹配与替换,这里我们用到的正则匹配替换函数preg_replace(reg,replace,string);,PHPer都清楚,这个函数的关键在于reg的精 ...
- 使用VirtualBox实现端口转发,以SSH与Django为例
先来认识几个概念 (1)IP地址:又称为互联网协议地址,是计算机的物理地址,相当于计算机的编号,是32位的二进制数,通常被分割成4个8位的二进制数: (2)端口:指设备与外界通讯的接口,一台计算机的端 ...