Chef Monocarp CodeForces - 1437C ( DP )

R语言计算植物群落重要值:从基础概念到优势种判定 在植被生态学研究中,重要值是衡量物种在群落中地位的核心指标,它综合了相对多度、相对频度与相对显著度三个维度,能够客观反映物种的数量优势、分布广度与空间占据能力。理解重要值的生态学逻辑,是开展群落分类、优势种判定及多样性分析的基础。而R语言凭借其批量处理、可复现和与后续多元统计无缝衔接的优势,成为生态学研究者处理样方数据的高效工具。从野外记录的宽表到标准化长表,再到分组汇总计算相对指标,R语言能够显著提升数据处理效率与准确性。本文以实测群落数据为例,系统梳理重要值的两种算法口径、基于dplyr和tidyr的完 阅读详情

Chef Monocarp has just put n dishes into an oven. He knows that the i-th dish has its optimal cooking time equal to ti minutes.

At any positive integer minute T Monocarp can put no more than one dish out of the oven. If the i-th dish is put out at some minute T, then its unpleasant value is |T−ti| — the absolute difference between T and ti. Once the dish is out of the oven, it can’t go back in.

Monocarp should put all the dishes out of the oven. What is the minimum total unpleasant value Monocarp can obtain?

Input

The first line contains a single integer q (1≤q≤200) — the number of testcases.

Then q test cases follow.

The first line of the testcase contains a single integer n
(1≤n≤200) — the number of dishes in the oven.

The second line of the testcase contains n
integers t1,t2,…,tn (1≤ti≤n) — the optimal cooking time for each dish.

The sum of n over all q testcases doesn’t exceed 200

Output

Print a single integer for each testcase — the minimum total unpleasant value Monocarp can obtain when he puts out all the dishes out of the oven. Remember that Monocarp can only put the dishes out at positive integer minutes and no more than one dish at any minute.

Example

Input

6
6
4 2 4 4 5 2
7
7 7 7 7 7 7 7
1
1
5
5 1 2 4 3
4
1 4 4 4
21
21 8 1 4 1 5 21 1 8 21 11 21 11 3 12 8 19 15 9 11 13

Output

4
12
0
0
2
21

Note

In the first example Monocarp can put out the dishes at minutes 3,1,5,4,6,2. That way the total unpleasant value will be |4−3|+|2−1|+|4−5|+|4−4|+|6−5|+|2−2|=4.

In the second example Monocarp can put out the dishes at minutes 4,5,6,7,8,9,10.

In the third example Monocarp can put out the dish at minute 1.

In the fourth example Monocarp can put out the dishes at minutes 5,1,2,4,3.

In the fifth example Monocarp can put out the dishes at minutes 1,3,4,5.

题意:

有n个菜,每个菜的最佳出锅时间是a[i],如果这个菜在T时刻出锅,那么它花费T-a[i],求所有的菜出锅的最小花费。

思路:

dp[ i ] [ j ] 表示在 i 时刻出锅 j 个菜的花费
在任意的一个时刻,只有两种状态,拿菜或不拿菜
因此状态转移方程为

dp[ i ][ j ]=minn(dp[ i ][ j ],dp[ i-1 ][ j ],dp[ i-1 ][ j-1 ]+abs( i - a[ j ]));

(minn是自己写的求最小值的函数)

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int a[500],dp[500][500];
int inf=0x3f3f3f3f;
int minn(int x,int y,int z)
{
    if(x<=y&&x<=z)
        return x;
    if(y<=x&&y<=z)
        return y;
    if(z<=x&&z<=y)
        return z;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,i,j;
        memset(dp,inf,sizeof(dp));  //不能清空为0 清空函数内的数值只能为0,1或 inf
        dp[0][0]=0;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
            scanf("%d",&a[i]);
        sort(a+1,a+1+n);
        for(i=1;i<=2*n;i++)
        {
            dp[i][0]=0;//拿0个菜的花费为0
            for(j=1;j<=n;j++)
            {
                dp[i][j]=minn(dp[i][j],dp[i-1][j],dp[i-1][j-1]+abs(i-a[j]));
            }
        }
        printf("%d\n",dp[2*n][n]);
    }
    return 0;
}
Arduino程序设计(十)8×8 共阴极LED点阵显示(MAX7219) 本文主要介绍8×8 LED点阵显示实验,分别是:1、介绍MAX7219点阵模块;2、点阵显示部分图形;3、点阵显示数字 0~9 及 26 个英文字母。1、通过上述两个点阵实验,了解了8*8点阵显示的基本原理;2、通过SPI通信控制点阵显示,学会了Arduino用SPI通信方式控制外设。 阅读详情

相关推荐

Mamba vs YOLO:目标检测选型指南(附实际项目对比)

本文深入对比了Mamba和YOLO在目标检测领域的性能差异与应用场景。通过实际项目数据,分析了两者在城市交通监控、工业质检等场景下的表现,提供了详细的选型指南和部署优化建议,帮助开发者根据实时性、精度等需求选择最适合的解决方案。

weixin_29062255的博客 369

C. Chef Monocarp(思维,dp)

C. Chef Monocarp 问题:给出nnn道菜,每道菜有一个预期出锅时间tit_iti​,但每分钟只能出一道菜,设第iii道菜的出锅时间为TiT_iTi​,则会得到∣ti−Ti∣|t_i-T_i|∣ti​−Ti​∣的不愉悦值,问怎么安排出菜时间,才能使不愉悦值最小,输出最小值。 给出一个引理: ti<tj且Ti>Tj⇒∣ti−Ti∣+∣tj−Tj∣>∣ti−Tj∣+∣tj−Ti∣ t_i<t_j且T_i>T_j\\ \Rightarrow\mid t_i-T_i\mid

weixin_45363113的博客 415

3D视觉-激光三角测量法的概述和原理

激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。

qq_20660115的博客 3921

CF 1437C. Chef Monocarp(简单费用流或dp)

传送门 一眼看过去,裸的费用流 把每个时刻拆成一个点,每个菜品作为一个点 每个时刻连向每个菜品,费用为对应的费用 源点连向每个时刻,每个菜品连向汇点. 当然所有流量都是111,为了保证所有东西只能使用一次 跑一个最小费用最大流即可. #include <bits/stdc++.h> using namespace std; const int maxn = 4e5+10; const int inf = 1e9; struct edge{ int to,nxt,w,flow; }d[maxn]

jziwjxjd的博客 622

2.实体机安装TrueNAS 方法

访问不了可以使用以下连接:提取码:0927。

Unofficial_user的博客 7436

对LSTM中每个batch都初始化隐含层的理解

不知道有没有人和我有一样疑惑 在LSTM相关的代码中,为什么每个batch都会将隐藏层重新初始化, 这样不会把以前训练出来的参数丢掉吗?? 比如 代码来自GitHub 看了一些解释是h与c是状态,不是参数,每个batch中都需要初始化为0,LSTM 中的参数是W,b。 网络中训练的是参数,不是状态。 说真的。。。当时我没怎么看懂。。。 咨询了实验室的师兄后,我有了自己的理解 产生误解的主要原因是我对RNN和LSTM的结构理解不深入,我们通常看到RNN结构图基本都是这样的 ...

Chauncey_Wang的博客 5910

C. Chef Monocarp

题目: https://codeforces.com/contest/1437/problem/C 题意: 给出每个菜拿出的时间,当你在t秒的时候拿出了第i道菜,那这道菜的令人不愉快值为t-ai的绝对值。问你每道菜应该在什么时间拿出来能使得不愉快值最小。 思路: dp dp还是很容易看出来的,至于转移方程就需要多看一会了。 dp[i][j]=min(dp[i-1][j],dp[i-1][j-1]+abs(a[j]-i)); dp[i][j]表示前i秒拿出了j道菜的不愉快的值。 代码: #include &l

小飞猪的博客 314

基于AIS动态数据与AI结合得经纬度标示算法

港口船舶智能标注系统 本系统通过结合摄像头视频流和AIS船舶动态数据,利用AI技术实现船舶实时标注功能。系统架构包括视频流处理、AIS数据解析、船舶检测匹配和坐标映射转换等模块。关键技术步骤: AIS数据获取:通过本地接收机或网络API获取船舶位置、航速等信息 AI目标检测:采用YOLOv8等模型识别视频中的船舶 船舶匹配算法:通过位置投影或运动轨迹匹配视频目标与AIS数据 坐标映射:使用相机标定技术将经纬度转换为图像坐标 实时标注:在视频画面上叠加船名、位置等关键信息 应用场景包括港口监控、智能海事管理和

qianbo042311的博客 1809

C. Chef Monocarp - 费用流

很显然的套路就是对人建立n个点,然后对数轴 1--2n建立虚点,并拆开虚点,来保证每个时间点只能用一次,且虚点之间的花费应该是1,然后把每个人的a[i] 直接连接在数轴的虚点位置上,且花费为0,这样就把人引进了数轴里面,然后无论向左走还是向右走,都是花费的正值,合起来就是绝对值了。

jisuanji2606414的博客 189

【Embabel Agent】生产级最佳实践与避坑指南

本文围绕架构师最关心的 8 大维度展开:测试策略(FakeOperationContext 实现 Action 级单元测试、Prompt 质量与敏感信息校验)、MCP 集成实战(STDIO/HTTP 双模式、自建 Server、Docker MCP 生态)、RAG 检索增强、OpenTelemetry 全链路可观测性与追踪、Docker/K8s 生产部署、API Key 管理与 @Tool 安全防护、模型选择/缓存/并行等性能优化,以及过度依赖 LLM、忽略错误处理等 8 大常见反模式避坑指南。

program哲学 307

YOLOv8+SAM强强联合:用分割“喂“检测,复杂背景下作物AP从72%干到77.7%,杂草误检降60%

目标与背景高度相似:如农业(作物vs杂草)、工业(零件vs台面)、医学(病灶vs正常组织);遮挡严重的场景:如密集人群(人被遮挡)、森林(树木被枝叶遮挡);小目标密集场景:如无人机航拍(远处小目标易混背景)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 793

C. Chef Monocarp 二维动态规划

题意 主人公把 nnn 道菜放进了烤炉里,每道菜有最佳的烹饪时间 tit_iti​ ,你要对每道菜选择一个 TiT_iTi​ ,使得 ∑i=1n∣Ti−ti∣\sum_{i=1}^{n}|T_i-t_i|∑i=1n​∣Ti​−ti​∣ 最小,每道菜的 TiT_iTi​ 不能相同。 思路 能贪心吗?不知道,似乎能,但又不好贪心,直接考虑动态规划。 首先排序,排完序之后就满足局部最优可以全局最优,或者说第 iii 个菜可以从第 i−1i-1i−1 道菜转移过来。 dp[i][j]=min(dp[i].

qq_46264636的博客 311

rk3588调试imx415记录

分享适配imx415的软件配置以及一些关键的调试命令

m0_60805802的博客 2889

CodeForces - 1437C Chef Monocarp(dp)

题目链接:点击进入 题意: 有 n 道菜,每个菜都有自己的最佳烹饪时间( t1 , t2 … tn),让你选 n 个出菜时间点( T1 , T2 … Tn ),使得 | Ti - ti | 的和最小(每个时间点只能出一道菜) 思路: dp [ i ] [ j ] 代表前 i 道菜,都选择 j 以及之前的时间点出菜 每个时间点都可以选择出菜或者不出菜 若在 j 这个时间点选择出第 i 道菜 dp [ i ] [ j ] = dp [ i - 1 ] [ j - 1 ] + abs ( j - t [ i ]

Cosmic_Tree的博客 424

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

codeforces 1437 C Chef Monocarp (dp)

翻译成函数表示, f=∑i=1n∣t(x)−a(i)∣f=\sum_{i=1}^{n}|t(x)-a(i)|f=∑i=1n​∣t(x)−a(i)∣,其中x为不确定的值,t(x)>=0,求所有可能fff的最小值。 那么,可以看出这个函数有两个变量,一个是t(x),另一个是a(i),其中a(i)已知,t(x)不好说,但是可以看出t(x)的范围在1到2*n之间,进一步缩小范围是amaxa_{max}amax​+n-1。 然后,就需要造一个函数序列出来,构成上述函数的递推表示,fff可以说成是这个序列的母函.

weixin_45608039的博客 222

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CodeForces 1437C Chef Monocarp (背包dp)

题目链接:[点击这里](https://vjudge.net/problem/CodeForces-1437C) 题目大意: qqq 组数据,每组数据给出 nnn 个物品,第 iii 个物品在 tit_iti​ 时取出花费为 000 ,在其余时间取出花费是 abs(ti−ti′)abs(t_i-t^{'}_i)abs(ti​−ti′​) ,求 ∑i=1n(abs(ti−ti′))\sum_{i=1}^n(abs(ti-t^{'}_i))∑i=1n​(abs(ti−ti′​)) 的最小值 题目分析: 设状态

羊驼的博客 420

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Codeforces1437 C. Chef Monocarp(DP)

Chef Monocarp has just put ???? dishes into an oven. He knows that the ????-th dish has its optimal cooking time equal to ???????? minutes. At any positive integer minute ???? Monocarp can put no more than one dish out of the oven. If the ????-th dish is p

tomjobs的博客 459

codeforces1437——C. Chef Monocarp(线性DP)

原题链接 题意: 将n个菜放入烤箱,每个菜的最佳取出时间为t[i],每个时刻只能够取出一道菜。在时刻T取出第i个菜的不愉快值为abs(t[i]-T)。求最小的不愉快值。 思路: 首先,将t按照从小到大排序,因为取出时间早的越早拿是最优的。(好像并不准确.jpg); 考虑动态规划,dp[i] [j] 表示到时刻i取出了j个菜的最小不愉快值。划分依据为是否在时刻i取出第j个菜: 如果取出第j个菜的话,那么上一个状态就是到时刻i-1取出了j-1个菜,本次对答案的贡献是abs(i-t[j]); 如果不取出第j个菜的

我们都有光明的未来 246

CF- Educational Codeforces Round 97 (Rated for Div. 2)-1437C. Chef Monocarp【dp】

题目链接 题意:n个数字{a1,a2,...,an}\{a_1,a_2,...,a_n\}{a1​,a2​,...,an​},iii放到位置的花费为abs(i−aj)abs(i−a_j)abs(i−aj​),求放置所有数字的最小花费。 思路:经典背包 #include <bits/stdc++.h> #define pcc pair<char, char> #define pii pair<int, int> #define vi vector<int> #d

Cain-James的博客 430

codeforces1437C. Chef Monocarp

https://codeforces.com/contest/1437/problem/C 这题好像比D题难一点,D题偏水了。。 由于有n个菜,而且他们最好的时间ti<=n,那么可想而知就算从n开始拿出盘子,最多到2*n的时间可以拿完 所以dp[i][j]表示前i个时间已经拿出了j个菜的最小代价,扫过去更新就行了 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxl=3

binarycopycode 1125

[dp] cf 1437C. Chef Monocarp

题目 http://codeforces.com/contest/1437/problem/C 思路 dp[i][j]dp[i][j]dp[i][j]表示第iii分钟前拿了jjj个盘子的最小代价 递推式:dp[i][j]=min(dp[i−1][j],dp[i−1][j−1]+abs(a[j]−i))dp[i][j]=min(dp[i-1][j],dp[i-1][j-1]+abs(a[j]-i))dp[i][j]=min(dp[i−1][j],dp[i−1][j−1]+abs(a[j]−i)) 代码 #in

kosf_的博客 246

cf 1437C. Chef Monocarp(DP,背包)

题目链接:https://codeforces.ml/contest/1437/problem/C 题意:T组样例 每组一个n,然后大小为n的数组a(1<=ai<=n)。然后要求取n个不一样的数bi且>0,然后计算sum(abs(ai-bi))的最小值。 题解: 很像是背包对不对,背包是怎样的,容量为n,然后dp[i]表示容量为i的时候的最大值。这题,可以转化为背包,不过dpi表示最小值。 //emmmm还是不擅长转化问题呀,简单题做多了emmm 代码: #include

I_have_a_world的博客 639

Codeforces 1437C Chef Monocarp

题目链接 题目大意: n 道菜放进烤箱 , 每道菜的最佳烹饪时间是 t [i] ,然后 如果在 T 时间取出 ,那么不愉快值就是 | T- t [i] | 一次只能取一盘 问 取出所有的菜最小不愉快值是多少 解题思路: dp 代码如下: #include<iostream> #include<set> #include<vector> #include<algorithm> using namespace std; const i...

weixin_43819762的博客 237

CF 1437C Chef Monocarp (背包dp)

题目链接:https://codeforces.ml/problemset/problem/1437/C 题意:T组样例 每组一个n,然后大小为n的数组a(1<=ai<=n)。然后要求取n个不一样的数bi且>0,然后计算sum(abs(ai-bi))的最小值。 题解:一道dp背包题 dp[i][j]代表第i时刻取走前j道菜,这时候就分俩种情况取或者不取,取的话dp[i]...

Mrwei_418的博客 363

CF1437C Chef Monocarp

初始化是好理解的,注意时间要延续到2*n,然后定义dp的时候要 int dp[N][2*N];设dp[i][j]表示将第i道菜扔到时间j的最小时间。反正我写的是动态规划。

wenhaorjxj的博客 315

Educational Codeforces Round 97 C. Chef Monocarp(dp)

https://codeforces.com/contest/1437/problem/C 题意:将n个菜同时放进烤箱,第i个菜的最佳烹饪时间是ti,如果第i个菜在T时间被端出,那么对它的不满意值就是 |T−ti|,且在每一个时刻只能端出一个菜,问不满意值和的最小值。 注:1≤n≤2001≤n≤2001≤n≤200 思路: 1、最佳烹饪时间值小的肯定要先取出,所以我们先将这n个物品按照最佳烹饪时间值排序 2、设dp[i][j]表示前i-1个物品都取出时,第i个物品在j时刻取出需要花费的最小总时间 3、那么d

qq_43803508的博客 279
上一篇: 「一本通 2.3 练习 1」Immediate Decodability( 字典树 )
下一篇: 牛客竞赛(字符串+思维)
Piink
博客等级 码龄7年 119粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值