题意:

有 $n$ 只老鼠和 $m$ 个鼠洞,第 $i$ 只老鼠的坐标为 $x_i$,第 $j$ 个鼠洞的坐标为 $p_j$ ,容量为 $c_j$。

第 $i$ 只老鼠钻进第 $j$ 个鼠洞的距离为 $|xi-pj|$ ,问所有老鼠都进洞的最小距离总和是多少。

解法:

方法一:

  考虑dp

  每一个移动无非是$p_i - x_j$,$x_i - p_j$

  $f(i,j)$ 表示前 $i$ 个要素,有 $j$ 个mouse没有归属的最小值。

  如果当前为mouse

  $f(i,j) = min \{ f(i-1,j) - x_i , f(i-1,j-1) + x_i \}$

  如果当前为hole

  $f(i,j) = min \{ f(i-1,j+k) + k p_i - (c_i - k) p_i \}$

  单调队列优化 $O(n^2)$。

  然而在hole的个数 ≠ mouse的count的时候,显然是错的。

方法二:

  考虑换一个方法dp

  注意到最优解时每一个洞主管的 是 位置相邻的连续一段的老鼠,我们先把hole 和mouse排序。

  $f(i,j)$ 表示用前 $i$ 个hole 来承接 前 $j$ 个mouse。

  $f(i,j) = min \{ f(i-1,k) - S(k) \} + S(j) , (max \{ 0, j-c(i) \} \leq k \leq j)$

  单调队列优化 $O(n^2)$

  

  

#include <bits/stdc++.h>

#define N 5010
#define LL long long
#define INF 0x3f3f3f3f3f3f3f3fLL using namespace std; struct hole
{
int x,cnt;
}b[N]; int n,m,a[N],q[N],st,en;
LL f[N][N],sum[N]; int Abs(int x)
{
if(x<) return -x;
return x;
} bool cmp(hole a,hole b)
{
return a.x<b.x;
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
sort(a+,a+n+);
for(int i=;i<=m;i++) scanf("%d%d",&b[i].x,&b[i].cnt);
sort(b+,b+m+,cmp);
memset(f,0x3f,sizeof(f));
f[][]=;
for(int i=;i<=m;i++)
{
st=, en=;
sum[]=;
for(int j=;j<=n;j++) sum[j]=sum[j-]+(LL)Abs(b[i].x-a[j]);
for(int j=;j<=n;j++)
{
int l = max(,j-b[i].cnt);
while(st<=en && q[st]<l) st++;
LL val = f[i-][j]-sum[j];
while(st<=en && f[i-][q[en]]-sum[q[en]] >= val) en--;
q[++en]=j;
if(st<=en)
{
int k=q[st];
f[i][j] = f[i-][k]+sum[j]-sum[k];
}
}
}
if(f[m][n] < INF) cout << f[m][n] << endl;
else cout << - << endl;
return ;
}

Mice and Holes的更多相关文章

  1. Codeforces 797 F Mice and Holes

    http://codeforces.com/problemset/problem/797/F F. Mice and Holes time limit per test             1.5 ...

  2. AC日记——Mice and Holes codeforces 797f

    797F - Mice and Holes 思路: XXYXX: 代码: #include <cmath> #include <cstdio> #include <cst ...

  3. Mice and Holes 单调队列优化dp

    Mice and Holes 单调队列优化dp n个老鼠,m个洞,告诉你他们的一维坐标和m个洞的容量限制,问最小总距离.1 ≤ n, m ≤ 5000. ​ 首先列出朴素的dp方程:\(f[i][j] ...

  4. Mice and Holes CodeForces - 797F

    Mice and Holes CodeForces - 797F 题意:有n只老鼠和m个洞,都在一个数轴上,老鼠坐标为x[1],...,x[n],洞的坐标为p[1],...,p[m],每个洞能容纳的老 ...

  5. CF797F Mice and Holes 贪心、栈维护DP

    传送门 首先\(\sum c\)有些大,考虑将其缩小降低难度 考虑一个贪心:第一次所有老鼠都进入其左边第一个容量未满的洞(如果左边没有就进入右边第一个未满的洞),第二次所有老鼠都进入其右边第一个容量未 ...

  6. [Codeforces797F]Mice and Holes

    Problem n个老鼠,m个洞,告诉你他们的一维坐标和m个洞的容量限制,问最小总距离. Solution 用dp[i][j]表示前i个洞,进了前j个老鼠的最小代价 dp[i][j]=min(dp[i ...

  7. [CodeForces-797F]Mice and Holes

    题目大意: 在一条直线上,有n个老鼠,m个洞. 每个老鼠i都有一个初始位置x[i]. 每个洞i都有一个固定位置p[i]和容量限制c[i]. 求所有老鼠都进洞的最小距离总和. 思路: 动态规划. 用f[ ...

  8. Educational Codeforces Round 19

    A. k-Factorization 题目大意:给一个数n,求k个大于1的数,乘积为n.(n<=100,000,k<=20) 思路:分解质因数呗 #include<cstdio> ...

  9. 贪心/构造/DP 杂题选做Ⅲ

    颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...

随机推荐

  1. RSA、AES加密解密

    RSA #!/usr/bin/env python # -*- coding:utf-8 -*- import rsa import base64 # ######### 1. 生成公钥私钥 #### ...

  2. 自己动手写CPU之第七阶段(5)——流水线暂停机制的设计与实现

    将陆续上传本人写的新书<自己动手写CPU>,今天是第28篇.我尽量每周四篇 China-pub的预售地址例如以下(有文件夹.内容简单介绍.前言): http://product.china ...

  3. git+jenkins

    开发写代码的演变 一个开发单打独斗,撸代码,开发网站,自由自在 多个开发同时开发一个网站,同时改一份代码.但是同时改一个文件会导致冲突 分支结构,每天上班第一件事克隆代码,下班前最后一件事合并代码 好 ...

  4. Django-extra的用法

    ## select提供简单数据 # SELECT age, (age > 18) as is_adult FROM myapp_person; Person.objects.all().extr ...

  5. Error (167005): Can't assign I/O pad "GX_TX" to PIN_AG27 because this causes failure in the placement of the other atoms in its associated channel

    1.同时在两个GX的bank,建立两GX ip core 会出现 两个IP的cal_blk_clk信号,要保持是同一个时钟

  6. sublime 实用快捷键

    Command+Enter 在下一行插入新行.举个栗子:即使光标不在行尾,也能快速向下插入一行. Command+Shift+Enter 在上一行插入新行.举个栗子:即使光标不在行首,也能快速向上插入 ...

  7. MVC入门——列表页

    创建控制器UserInfoController using System; using System.Collections.Generic; using System.Linq; using Sys ...

  8. Dynamic Language Runtime (DLR) 初深

    本文主要包括两个内容:DLR在.Net中的位置和一次DLR的调用过程. 1. DLR在. Net 中的位置 图1 DLR 包括哪些内容? 1. Expression Tree(表达式树). 2. Dy ...

  9. Avro schemas are defined with JSON . This facilitates implementation in languages that already have JSON libraries.

    https://avro.apache.org/docs/current/ Introduction Apache Avro™ is a data serialization system. Avro ...

  10. 关于indexOf的使用

    今天项目中出现一个bug,在筛选数据的时候出现了冗余数据,查找发现在indexOf方法判断的时候找到了问题的所在. package demo; public class test { public s ...