题面 : https://www.ioi-jp.org/joi/2013/2014-yo/2014-yo-t6/2014-yo-t6.html

题解

dp + 康托展开

一看这题不知道怎么处理

只能枚举顺序来处理小笼包的价值

然后又发现这个\(d[]\)只有7

所以可以状压他们的顺序

用现学的康托展开将前7个的顺序存储起来

用\(f[i][S]\)表示到第i个小笼包,包括第i个小笼包的前7个的先后顺序是什么

然后枚举第i+1个小笼包的顺序

算下对前面的贡献和前面的对ta的贡献

暴力dp即可

时间复杂度\(O(7!*n*7)\)

可以通过此题

代码


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const int M = 105 ;
const int N = 5050 ;
using namespace std ;
inline int read() {
char c = getchar() ; int x = 0 , w = 1 ;
while(c>'9'||c<'0') { if(c=='-') w = -1 ; c = getchar() ; }
while(c>='0'&&c<='9') { x = x*10+c-'0' ; c = getchar() ; }
return x*w ;
} int n ;
int v[M] , d[M] , Ans ;
int fac[9] , f[M][N] ;
int p[9] , w[9] ;
bool vis[9] ;
inline int Merge() {
int Ans = 0 ;
for(int i = 1 , ret ; i <= 7 ; i ++) {
ret = 0 ;
for(int j = i + 1 ; j <= 7 ; j ++)
if(w[i] > w[j])
++ ret ;
Ans += ret * fac[7 - i] ;
}
return Ans + 1 ;
}
inline void Split(int x) {
memset(vis , false , sizeof(vis)) ;
x -= 1;
for(int i = 1 , ret , now ; i <= 7 ; i ++) {
ret = x / fac[7 - i] ;
for(now = 1 ; now <= n ; now ++)
if(!vis[now]) {
if(!ret) break ;
ret -- ;
}
p[i] = now ;
vis[now] = true ;
x %= fac[7 - i] ;
}
}
int main() {
n = read() ;
for(int i = 1 ; i <= n ; i ++) d[i] = read() ;
for(int i = 1 ; i <= n ; i ++) v[i] = read() ;
fac[0] = 1 ;
for(int i = 1 ; i <= 7 ; i ++) fac[i] = fac[i - 1] * i ;
for(int i = 1 ; i <= n ; i ++)
for(int S = 1 ; S <= fac[7] ; S ++) {
Split(S) ;
for(int j = 1 , ret ; j <= 8 ; j ++) { // ö¾ÙµÚi+1λµÄ˳Ðò
ret = 0 ;
for(int k = 1 ; k <= 7 ; k ++)
if(p[k] < j) w[k] = p[k] ;
else w[k] = p[k] + 1 ;
w[8] = j ;
for(int k = 1 ; k <= 7 ; k ++)
if((i - (7 - k)) > 0 && w[k] < w[8] && d[i - (7 - k)] >= 8 - k)
ret += v[i - (7 - k)] ;
for(int k = 1 ; k <= 7 ; k ++)
if((i - (7 - k)) > 0 && w[k] > w[8] && d[i + 1] >= 8 - k)
ret += v[i + 1] ;
for(int k = 2 ; k <= 8 ; k ++)
if(w[k] > w[1]) w[k] -- ;
for(int k = 1 ; k <= 7 ; k ++)
w[k] = w[k + 1] ;
int x = Merge() ;
f[i + 1][x] = max(f[i + 1][x] , f[i][S] + ret) ;
}
}
for(int i = 1 ; i <= fac[7] ; i ++) Ans = max(Ans , f[n][i]) ;
printf("%d\n",Ans) ;
return 0 ;
}

[JOI2014] 小笼包的更多相关文章

  1. Qt widget--杭州小笼包

    1,QPainter::scale(double,double);第一个参数水培方向缩放 shear剪切 QPainter::rotate()旋转,旋转度数,rotate QPainter::tran ...

  2. iOS - Regex 正则表达式

    1.Regex 定义 正则表达式又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为 regex.regexp 或 RE),计算机科学的一个概念.正则表达式使用单个 ...

  3. HDU - Pseudoforest

    Description In graph theory, a pseudoforest is an undirected graph in which every connected componen ...

  4. [知识库分享系列] 二、.NET(ASP.NET)

    最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...

  5. love yy-kiss 医生出差二期

    医生出差二期,做了一半撤出去做互联网医院了 http://confluence.haodf.net/pages/viewpage.action?pageId=15801359  医生出差二期 没设置数 ...

  6. JSOI2015 分组赛记

    分组赛结束了,虽然跟我关系不大,但是去了还是学到了不少东西 day1 上午报到,在宾馆遇到大神wzy,orz 好像没有参赛证发了,于是给我发了一个[工作证],233我是工作人员了,高贵冷艳 下午是常中 ...

  7. Swift基本语法及与OC比较之二

    //MARK:-----------------控制流----------------- //MARK: 1.for - in 循环 ,不用声明Value类型 //for value in 1...6 ...

  8. 玩转kindle paperwhite: 如何越狱,安装强大外挂软件koreader

    NOTICE 1: 在更新kpvbooklet和使用最新版本的koreader(v2013.03-211)时候,会出现pdf文档无法重排的错误.亲测. 如果你是使用的最新版本koreader且出现上述 ...

  9. 20款最好的免费的IDES和编辑器

    程序员编程利器:20款最好的免费的IDES和编辑器 Posted on 2015-02-17 21:52 尛鱼 阅读(170) 评论(1) 编辑 收藏 程序员编程利器:20款最好的免费的IDEs和编辑 ...

随机推荐

  1. hdu 361B

    #include<stdio.h> int a[100100]; int main() { int n,i,k; while(scanf("%d%d",&n,& ...

  2. js格式化日期时间

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).周(E).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1 ...

  3. [bzoj1874][BeiJing2009 WinterCamp]取石子游戏_博弈论

    取石子游戏 bzoj-1874 BeiJing2009 WinterCamp 题目大意:题目链接. 注释:略. 想法: 我们通过$SG$函数的定义来更新$SG$的转移. 如果是寻求第一步的话我们只需要 ...

  4. 记一次springMVC的跨域解决方案

    日期:2019年5月18日 事情原因:由于微信小程序的开发只有测试环境,而后台提供借口的环境是开发环境:两个环境的域名不同,导致前端开发产生了跨域问题: 理论概念: 1.同源策略:同源策略是浏览器的安 ...

  5. DTRACE简介(1)

    https://blogs.oracle.com/swan/entry/dtrace%E7%AE%80%E4%BB%8B By samwan on 三月 20, 2007 记得几年前看过一部美国大片叫 ...

  6. Nginx+Tomcat+Memcached负载均衡和session共享

    1. 演示搭建 说明:本文参考网络日志http://blog.csdn.net/remote_roamer/article/details/51133790,结合实际操作,仅做个演示记录. 1.1.  ...

  7. openstack setup demo Image service

    Image service (glance)是openstack中管理vm image的service.本文包含以下内容: overview install overview glance包含以下部分 ...

  8. M2Crypto

    M2Crypto = Python + OpenSSL + SWIG M2Crypto is a crypto and SSL toolkit for Python. 上面是M2Crypto的READ ...

  9. SAP ABAP 的经常使用debug方式

    SAP ABAP 的经常使用debug方式: 1. 直接在程序中设断点 在se38里面打上breakpoint,程序执行到该处即进入debug模式 2.background Job的debug 进入S ...

  10. ubuntu上跑python连接pg,报错 ImportError: No module named psycopg2

    ubuntu上跑python连接pg,报错  ImportError: No module named psycopg2 root@pgproxy1:~# python /home/zxw/PGWri ...