NOI 1995 石子合并

2023-11-09 22:48
文章标签 合并 1995 noi 石子

本文主要是介绍NOI 1995 石子合并,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.luogu.org/problem/show?pid=1880#
合并石子的加强版(不过这可是95年的NOI的题,准确说应该是合并石子是它的削弱版吧。。。),环的处理就是在链的后面再来一遍链,然后枚举一下起点终点,就和合并石子一样了。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int f1[2100][2100],f2[2100][2100],a[2100],n,x;
int main()
{memset(f1,0x3f,sizeof(f1));memset(f2,0,sizeof(f2));scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&x);a[i]=a[i-1]+x;f1[i][i]=0;f1[i+n][i+n]=0;f2[i][i]=0;f2[i+n][i+n]=0;}for(int i=1;i<=n;i++)a[i+n]=a[n]+a[i];for(int i=2*n;i>=1;i--)for(int j=i+1;j<=i+1+n;j++)for(int k=i;k<j;k++){f1[i][j]=min(f1[i][j],f1[i][k]+f1[k+1][j]+a[j]-a[i-1]);f2[i][j]=max(f2[i][j],f2[i][k]+f2[k+1][j]+a[j]-a[i-1]);}int ans1=INF,ans2=0;for(int i=1;i<=n;i++){ans1=min(ans1,f1[i][i+n-1]);ans2=max(ans2,f2[i][i+n-1]);}printf("%d\n%d",ans1,ans2);return 0;
}

这篇关于NOI 1995 石子合并的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/378912

相关文章

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定

JeecgBoot v3.7.0 all 版本发布,前后端合并一个仓库

项目介绍 JeecgBoot是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue3,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领低代码开发模式(OnlineCoding-> 代码生成-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开

Python批量读取csv文件并合并文件

import pandas as pdimport os # 获取当前路径cwd = os.getcwd()# 要拼接的文件夹及其完整路径,注不要包含中文## 待读取批量csv的文件夹 read_path = 'data_Q1_2018' ## 待保存的合并后的csv的文件夹 save_path = 'data_Q1_2018_merge' ## 待保存

合并有序链表

合并有序链表 图解代码如下 图解 虽然很复杂,但能够很好的理解怎么使用链表,以及对链表的指针类理解 代码如下 Node* merge_list_two_pointer(List& list1, List& list2){Node* new_head1 = list1.head;Node* new_head2 = list2.head;Node* sentinel1 =

技巧:合并多个RAR分卷压缩

因为文件压缩之后体积仍然过大,大家可能会选择进行分卷压缩,那么rar分卷压缩包之后如何合并成一个压缩包文件呢?今天我们来学习rar分卷压缩包,合并成一个的方法。 最基础的方法就是将分卷压缩包解压出来之后,再将文件进行合并,这个方法就不再赘述,下面是更方便的操作方法。 这个方法利用我之前分享过的压缩包格式转换功能,我们打开WinRAR,找到功能栏中【工具】-【转换压缩文件格式】 在转换压缩

Studying-代码随想录训练营day17| 654.最大二叉树、617合并二叉树、700.二叉搜索树中的搜索、98.验证二叉树搜索树

第十七天,二叉树part05,进一步学习二叉树💪 654.最大二叉树 文档讲解:代码随想录最大二叉树 视频讲解:手撕最大二叉树 题目: 学习:本题与利用中序和后序序列构造二叉树有相同之处。依据题目要求,首先在数组里面找到最大值,作为根节点,然后划分左右区间对应根节点的左右子树。再分别在左右区间中找到最大值,作为根节点(中间节点),之后再次划分区间,进行下一轮循环。 代码:

【位操作笔记】位合并 通过掩码

位合并(Merge bits) 通过掩码 通过掩码把两个数进行位合并。例如一个数为0x23,另一个数为0x65,假设合并的数要取第一个数的高4位,第二个数的低4位,那么合并后的数就是0x25。 算法说明 该算法使用了异或来实现,比普通的实现方式节省一次操作。 实现代码 non_masked_val和masked_val是两个要进行合并的数,mask是掩码。 non_masked_val

【位操作笔记】位合并 普通方式

位合并(Merge bits) 普通方式 通过掩码把两个数进行位合并。例如一个数为0x23,另一个数为0x65,假设合并的数要取第一个数的高4位,第二个数的低4位,那么合并后的数就是0x25。 算法说明 该算法通过先与掩码,再进行或操作完成。 实现代码 non_masked_val和masked_val是两个要进行合并的数,mask是掩码。 non_masked_val是合并非掩码位,

[CSU - 1811 (湖南省赛16)] Tree Intersection (启发式合并)

CSU - 1811 (湖南省赛16) 给定一棵树,每个节点都有一个颜色 问割掉任意一条边,生成的两个子树中颜色集合的交集大小 问题可以转化为任意一棵子树中, 这个子树中的颜色数量和只在这个子树中出现的颜色的数量 用总的颜色数量减去独有颜色数量即为这棵子树的答案 从 lcy大爷那里学到了机智的启发式合并的做法 对每个点维护一个 map 来记录这个点为根的子树中颜色的及其数

POI导入带有合并单元格的excel,demo实例,直接可以运行

直接可以运行 import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.