C. Minimum Grid Path(思维)

昨天晚上写的时候看错题了,以为并不是交替走,最后没时间了读了一遍题目发现是交替走,然后就秒了但是已经没时间写了。

其实昨天并不想写,不过看了下D题发现是个数学题,虽然我数学题非常渣渣,但是拿起笔就推了推式子,发现可做,写完代码后第一次交RE,数组开小了,第二次交Wa,很奇怪,最后发现预处理应该是2×1062×10^62×106,非常蛋疼~


C. Minimum Grid Path

预处理前缀和以及前缀最小值,由于是交替走,只有两种情况:两个方向都走kkk次,或者一个方向走k+1k+1k+1次一个方向走kkk次,枚举kkk计算即可。

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
using ll=long long;
constexpr int N=200010;
int n;
ll c[N];
ll a[N],b[N];
ll sa[N],sb[N];
ll ma[N],mb[N];
int cnta,cntb;
ll calc(int k)
{ll res=1e18;res=min(res,sa[k]+ma[k]*(n-k)+sb[k]+mb[k]*(n-k));if(k+1<=cnta) res=min(res,sa[k+1]+ma[k+1]*(n-k-1)+sb[k]+mb[k]*(n-k));return res;
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int T=1;cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>c[i];cnta=cntb=0;for(int i=1;i<=n;i+=2) a[++cnta]=c[i];for(int i=2;i<=n;i+=2) b[++cntb]=c[i];sa[0]=sb[0]=0;for(int i=1;i<=cnta;i++) sa[i]=sa[i-1]+a[i];for(int i=1;i<=cntb;i++) sb[i]=sb[i-1]+b[i];ma[0]=mb[0]=1e18;for(int i=1;i<=cnta;i++) ma[i]=min(ma[i-1],a[i]);for(int i=1;i<=cntb;i++) mb[i]=min(mb[i-1],b[i]);ll res=1e18;for(int i=1;i<=min(cnta,cntb);i++) res=min(res,calc(i));cout<<res<<'\n';}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客题霸 [扑克牌顺子] C++题解/答案

管理博文 牛客题霸 [扑克牌顺子] C题解/答案 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿&#xff01;&#x…

微软Cloud+AI本地化社区贡献指南

本文主要介绍微软CloudAI本地化社区&#xff0c;以及通过多种途径贡献本地化的操作指南。什么是本地化社区CloudAI本地化社区是微软技术社区的组成部分之一&#xff0c;负责对微软官方技术文档本地化的支持工作。微软近些年大力拥抱开源&#xff0c;不断在各类技术社区保持与开…

P7581-「RdOI R2」路径权值【长链剖分,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P7581 题目大意 给出nnn个点的有边权有根树&#xff0c;mmm次询问一个节点xxx的所有kkk级儿子两两之间路径长度。 1≤n,m≤1061\leq n,m\leq 10^61≤n,m≤106 解题思路 有根长剖&#xff0c;无根点分治。所以这题应该是长剖…

牛客题霸 [ 未排序数组中累加和为给定值的最长子数组长度] C++题解/答案

牛客题霸 [ 未排序数组中累加和为给定值的最长子数组长度] C题解/答案 题目描述 给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k&#xff0c;求arr所有子数组中累加和为k的最长子数组长度 题解&#xff1a; 先求出前缀和 然后用map来记录第i位的前缀和 要找…

「分块」数列分块入门1 – 9

ACM模板 放暑假了&#xff0c;回归&#xff01;&#xff01;&#xff01; 自己不会写暴力&#xff0c;而且好久没写代码了&#xff0c;于是学学分块的优雅暴力~ 「分块入门-LibreOJ」 「分块」数列分块入门1 – 9 by hzwer 数列简单分块问题实际上有三项东西要我们思考&#…

C#:在Task中使用依赖注入的Service/EFContext

dotnet core时代,依赖注入基本已经成为标配了,这就不多说了.前几天在做某个功能的时候遇到在Task中使用EF DbContext的问题,学艺不精的我被困扰了不短的一段时间,于是有了这个文章.先说一下代码结构和场景.首先有一个HouseDbContext,代码大概是下面这样:public class HouseDbCo…

牛客题霸 [ 最长公共前缀] C++题解/答案

牛客题霸 [ 最长公共前缀] C题解/答案 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 题解&#xff1a; 原本想暴力做&#xff0c;直接多层循环套&#xff0c;发现并不用 注意本题&#xff0c;给出了多组字符串&#xff0c;求它们的最长公共前缀&#xff0c;这…

pkusc2021游记

文章目录Day 0Day 1Day 2Day 3Day 0 车&#xff0c;公交&#xff0c;飞机&#xff0c;公交&#xff0c;车 坐了半天的交通终于到了&#xff0c;整个人都坐的晕乎乎的&#xff0c;然后看了下学校位置吃了饭就没事回酒店了。 Day 1 早上是报道&#xff0c;九点才开始&#xf…

codeforces82 D. Two out of Three(记忆化搜索)

D. Two out of Three 设fi,jf_{i,j}fi,j​表示为当前队伍开头的两个人是i,ji,ji,j时最小代价&#xff0c;分析可知本轮可以选择的方案有 i,ji,ji,j两人&#xff0c;fi,jaiajfj1,j2f_{i,j}a_ia_jf_{j1,j2}fi,j​ai​aj​fj1,j2​i,j1i,j1i,j1两人&#xff0c;fi,jaiaj1fj,j2f_{…

DevOps/.NET 微服务 秋季分享会领优惠门票

参与活动【活动&#xff08;深圳&#xff09;】DevOps/.NET 微服务 秋季分享会&#xff0c;优惠门票等你来领 的以下10位同学微信联系我: geffzhang 领票

bzoj3729-Gty的游戏【Splay,博弈论】

正题 题目链接:https://darkbzoj.tk/problem/3729 题目大意 给出nnn个点的一棵树&#xff0c;第iii个节点上有aia_iai​个石子&#xff0c;然后每次可以选择不超过LLL个石子移动到父节点处。要求支持操作 以一个节点的子树进行博弈是否有先手必胜修改一个节点的石子个数插入…

牛客题霸 [ 求路径] C++题解/答案

牛客题霸 [ 求路径] C题解/答案 题目描述 一个机器人在mn大小的地图的左上角&#xff08;起点&#xff0c;下图中的标记“start"的位置&#xff09;。 机器人每次向下或向右移动。机器人要到达地图的右下角。&#xff08;终点&#xff0c;下图中的标记“Finish"的位…

【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流

上篇文章我介绍了如何在网关上增加自定义客户端授权功能&#xff0c;从设计到编码实现&#xff0c;一步一步详细讲解&#xff0c;相信大家也掌握了自定义中间件的开发技巧了&#xff0c;本篇我们将介绍如何实现自定义客户端的限流功能&#xff0c;来进一步完善网关的基础功能。…

codeforces855 C. Helga Hufflepuff‘s Cup(树形dp)

C. Helga Hufflepuff’s Cup 比较经典的树形dp套路。由于题目限制某类点的数量&#xff0c;因而状态需要记录一下子树中该特殊点的数量。 设计dp&#xff1a; fu,j,kf_{u,j,k}fu,j,k​以uuu为根的子树中&#xff0c;选了jjj个特殊值&#xff08;点权K&#xff09;&#xff0c…

牛客题霸 [链表中倒数第k个结点] C++题解/答案

链表中倒数第k个结点 题解&#xff1a; 我们把链表存两份&#xff0c;让其中一个先走k个节点&#xff0c;然后两个链表一起走&#xff0c;直到第一个链表到头&#xff0c;因为两个相差k个节点&#xff0c;所以第二个链表停的位置就是倒数第k个 代码&#xff1a; /* struct …

P3343-[ZJOI2015]地震后的幻想乡【dp,数学期望】

正题 题目链接:https://www.luogu.com.cn/problem/P3343 题目大意 给出nnn个点的一张无向图&#xff0c;每条边被修复的时间是[0,1][0,1][0,1]的一个随机实数&#xff0c;求这张图联通期望时间。 1≤n≤10,m≤n(n−1)21\leq n\leq 10,m\leq \frac{n(n-1)}{2}1≤n≤10,m≤2n(n…

codeforces229 D. Towers(dp+贪心)

D. Towers 设计dp&#xff1a; fif_ifi​表示考虑到iii时满足题意的最小代价。 考虑最后一步&#xff0c;也就是最后一组合并即fifj{aj1⋯ai}f_if_j\{a_{j1}\dotsa_i\}fi​fj​{aj1​⋯ai​} 在满足最优条件的同时让当前aia_iai​最小&#xff08;贪心&#xff09; #include&…

1.14 日志(递推ybtoj)

明天要模拟&#xff0c;n年未碰电脑&#xff0c;先不学新的了。。。。 1.错排问题 dp最棒了 code: #include #include #include #include #include using namespace std; const int MINT_MAX; long long f[25][25]{ };//f[i][j]表示有i个数&#xff0c;其中j个数可以随便填 …

牛客题霸 [买卖股票的最好时机] C++题解/答案

买卖股票的最好时机 题解&#xff1a; 设两个变量&#xff0c;一个为minn&#xff0c;一个为maxx 当遇到比当前minn还小的价钱时&#xff0c;就更新minn 当与minn大时&#xff0c;就计算如果这个价卖出&#xff0c;赚多少钱&#xff0c;maxx不断更新取最大值 这样&#xff0c…

P7600-[APIO2021]封闭道路【堆,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P7600 题目大意 给出nnn个点的一棵树&#xff0c;边有边权&#xff0c;对于每个kkk求去掉最小边权和的点使得每个点的度数都不超过kkk。 1≤n≤1051\leq n\leq 10^51≤n≤105 题目大意 APIO遇到的原题&#xff0c;和CF1119F…