博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gym - 100269F Flight Boarding Optimization(dp+树状数组)
阅读量:6074 次
发布时间:2019-06-20

本文共 598 字,大约阅读时间需要 1 分钟。

 

题意

现在有n个人,s个位置和你可以划分长k个区域

你可以把s个位置划分成k个区域,这样每个人坐下你的代价是该区域内,在你之前比你小的人的数量
问你怎么划分这s个位置(当然,每个区域必须是连续的),才能使得总代价最小,输出代价。

 

分析

dp[i][j]表示第i个位置是第j个区域的结尾,dp[i][j]→dp[t][j+1]暴力转移。但是需要预处理每个范围里的代价值,需要树状数组维护。

#include
using namespace std;const int maxn = 1050;int dp[maxn][55];int sum[maxn][maxn];int r[maxn];int n,m,k;int a[maxn];vector
E[maxn];int lowbit(int x){ return x&(-x);}int get(int x){ int ans = 0; for(int i=x;i;i-=lowbit(i)) ans+=a[i]; return ans;}void update(int x,int v){ for(int i=x;i

 

转载于:https://www.cnblogs.com/fht-litost/p/7271439.html

你可能感兴趣的文章
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>
Oracle DG 逻辑Standby数据同步性能优化
查看>>
exchange 2010 队列删除
查看>>
「翻译」逐步替换Sass
查看>>
H5实现全屏与F11全屏
查看>>
处理excel表的列
查看>>
Excuse me?这个前端面试在搞事!
查看>>
C#数据采集类
查看>>
quicksort
查看>>
【BZOJ2019】nim
查看>>
四部曲
查看>>
LINUX内核调试过程
查看>>
【HDOJ】3553 Just a String
查看>>
Java 集合深入理解(7):ArrayList
查看>>
2019年春季学期第四周作业
查看>>
linux环境配置
查看>>
ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
查看>>
lintcode:next permutation下一个排列
查看>>