首页 > 其他分享 >P10 ABC095D Static Sushi

P10 ABC095D Static Sushi

时间:2025-01-15 20:11:31浏览次数:1  
标签:int ABC095D Sushi sv P10 ans

​ 大一寒假,终于有机会开始做自己了。

​ 先把老版ABC所有题淦了再说!这是第一题。

​ 看一眼就能出思路,很容易往贪心去想,因为可以将路线划分成两部分。毕竟他要么就一直顺时针(这个直接算出即可),要么就绕一半返回去再反向绕。后来我发现第二种情况还有两种情况,因为原路返回的部分要再走一次,这个部分可能是左边也可能是右边,所以在统计时还要分两种情况开两个数组。

const int N=100010;

int n;
ll ans,c,x[N],v[N],sv[N],mx[2][N],mxc[2][N];

signed main(){
  IOS
  cin>>n>>c;
  for(int i=1;i<=n;++i)
    cin>>x[i]>>v[i],sv[i]=sv[i-1]+v[i];
  ans=sv[n]-(c-x[1]);

  for(int i=1;i<=n;++i){
    mx[0][i]=max(mx[0][i-1],sv[i]-x[i]);
    mxc[0][i]=max(mxc[0][i-1],(sv[n]-sv[n-i])-(c-x[n-i+1]));
    mx[1][i]=max(mx[1][i-1],sv[i]-(x[i]<<1));
    mxc[1][i]=max(mxc[1][i-1],(sv[n]-sv[n-i])-((c-x[n-i+1])<<1));
  }
  
  for(int i=1;i<=n;++i){
    ll res=max(mx[0][i]+mxc[1][n-i],mx[1][i]+mxc[0][n-i]);
    ans=max(ans,res);
  } cout<<ans<<'\n';

  return 0;
}

· EOF

标签:int,ABC095D,Sushi,sv,P10,ans
From: https://www.cnblogs.com/mfc007/p/18673667

相关文章

  • 做题随笔:P10465
    Solution这里是博客:Tenil,刚刚用上了JS,不妨看看?题意原题链接给定数列\(a_N\),按以下要求分为\(n\)组:每组中的数单调不降。每组中的数在原数列中的下标单调递减/单调递增/先递减再递增。(思考一下双向队列插入值的过程显然有:越往两端的越后入队)存在一种方法,使所有分组拼接......
  • P10200 花神诞日 题解
    P10200[湖北省选模拟2024]花神诞日题解首先注意到一个集合中两两异或和的最小值就是,排序后相邻两个数异或和的最小值。证明可以考虑放到01-Trie上,从高往低位建树,求一个数与之异或的最小值,就是使高位相同位数尽可能多,则就是01-Trie上的前一个叶子或后一个叶子。由此,我们......
  • 融合高斯扰动与竞争学习的改进型多目标部落竞争与成员合作算法(IMOCTCM)求解TP1-TP10及
    一、部落竞争与成员合作算法CTCM部落竞争与成员合作算法(Competitionoftribesandcooperationofmembersalgorithm,CTCM)由ChenZuyan等人于2024年提出的一种智能优化算法。该算法受古代部落之间竞争及其合作行为的启发而得。参考文献:[1]ZuyanChen,ShuaiLi,Ameer......
  • P10681 [COTS 2024] 奇偶矩阵 Tablica
    P10681[COTS2024]奇偶矩阵Tablica题意有一个\(n\timesm\)的\(01\)矩阵,问有多少种填\(01\)的方式,满足同一行、列恰好有\(1\)或\(2\)个\(1\)。\(n,m\le3000\)。思路首先一个显然的\(O(nm^2)\)做法:设\(f_{i,s0,s1}\)表示考虑到第\(i\)行,目前有\(s0\)......
  • P1080 [NOIP2012 提高组] 国王游戏
    P1080[NOIP2012提高组]国王游戏题目恰逢H国国庆,国王邀请\(n\)位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这\(n\)位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的......
  • P10698 [SNCPC2024] 最大流
    P10698[SNCPC2024]最大流题意给一个\(n\)个点\(m\)条边的DAG,起点为\(1\),终点不定,容量全为\(1\)。再给定一个常数\(k\)。设从\(1\)到\(i\)的最大流是\(f_i\),对所有的\(i\in[2,n]\)求出\(\min(f_i,k)\)。\(n\le10^5,m\le2\times10^5,k\le\min(50,n-1)\)。......
  • Java 8系列之重新认识HashMap10
    摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(JavaDevelopmetKit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java......
  • Solution - Luogu P10046 [CCPC 2023 北京市赛] 哈密顿
    感觉我的做法比其他题解都简单一些阿!注意到边权的形式是\(|a_i-b_j|\)的形式,要同时考虑到正负,但这明显是不想看到的。结合题目要求的是边权和最大值,那么一个方法就是把\(|a_i-b_j|\)转化为最大值的形式去维护。于是可以考虑拆分为\(\max\{a_i-b_j,b_j-a_i\}\)。......
  • P10145 [WC2024] 线段树 题解
    P10145[WC2024]线段树题解\(\mathcalO(4^{n})\)做法对于线段树上的一个节点区间\([l,r)\)我们连无向边\((l,r)\),那么可以用加减表示出一个区间\([L,R)\)等价于\(L,R\)两点联通。于是可以枚举每条边选或不选,用可撤销并查集判断两点是否联通,复杂度\(\mathcalO(2^{2......
  • Java 8系列之重新认识HashMap10
     摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(JavaDevelopmetKit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Ja......