首页 > 其他分享 >P1063 [NOIP2006 提高组] 能量项链

P1063 [NOIP2006 提高组] 能量项链

时间:2024-01-27 12:12:34浏览次数:33  
标签:NOIP2006 205 标记 int 珠子 项链 拆环成 P1063

原题链接

题解

1.拆环成链
2.最后一颗留下来的珠子一定是的头标记一定是某个原珠子\(A\)的头标记,尾标记一定是珠子\(A\)右边n个单位的珠子的尾标记
3.对任意最大值而言,最后一颗一定是某两个珠子的合并后产生的,所以我们可以在区间内断点遍历

\(Code\)

#include<bits/stdc++.h>
using namespace std;
struct node
{
    int l,r;
}a[205];
int f[205][205]={0};//f代表区间[l,r]内珠子合并成一颗时的最大值
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].l;
        a[i+n].l=a[i].l;//拆环成链
    }

    for(int i=1;i<2*n;i++) a[i].r=a[i%(2*n)+1].l;

    int ans=0;
    for(int s=1;s<=n;s++)
    {
        for(int d=2;d<=n;d++)
            for(int l=s;l<=s+n-d;l++)
            {
                int r=l+d-1;
                for(int mid=l;mid<r;mid++)  f[l][r]=max(f[l][r],a[l].l*a[mid].r*a[r].r+f[l][mid]+f[mid+1][r]);//当l=r时为零,因为这个区间没有珠子合并过
//注意细节,从小区间推导到大区间时加法不是乘法
            }
        ans=max(ans,f[s][s+n-1]);
    }

    cout<<ans<<endl;
    return 0;
}

标签:NOIP2006,205,标记,int,珠子,项链,拆环成,P1063
From: https://www.cnblogs.com/pure4knowledge/p/17991285

相关文章

  • SDUT OJ——基于hh的项链的维护区间种类数
    hh的项链:不带修改维护区间种类数https://www.luogu.com.cn/problem/P1972#submit山东理工大学系列赛https://acm.sdut.edu.cn/onlinejudge3/contests/4125/problems/DDescription给定一个长度为\(n\)的序列\(a\)和\(m\)次询问,对于第\(i\)次询问给定两个正整数\([l,......
  • 项链游戏
    [无link]对于该策略证明:1如果只比较一次,显然2如果比较了k次,证明两个串前k个元素是相同的,第k+1个元素不同,那么我选择1-k-1中任何一个位置开始比较,答案都不会更优,因为如果新串第K+1个元素更大,那么显然K+1个元素会大于1-k的元素,那么显然以k+1开头更有可能更优,如果第K+1个元素更......
  • 项链 题解
    随机化写法很强,但是这里不说。这里只记录数据结构写法。枚举右端点,快速找左端点。首先一种合法的方案中,一种颜色只会有两种情况。全部在区间中及全部在区间外。对于区间外的情况,也就是最后一次出现的位置\(p\)大于右端点\(r\),我们可以维护当前枚举右端点之前的所有颜色非......
  • P1060 [NOIP2006 普及组] 开心的金明
    P1060[NOIP2006普及组]开心的金明简单的01背包问题点击查看代码#include<bits/stdc++.h>usingnamespacestd;intf[30005];intmain(){ intn,m; cin>>n>>m; for(inti=1;i<=m;i++){ intv,p; cin>>v>>p; for(intj=n......
  • [刷题笔记] Luogu P1064 [NOIP2006 提高组] 金明的预算方案
    ProblemAnalysis我们发现如果忽略主从关系,那这道题就是一个裸的01背包问题。主从关系处理也非常简单,借鉴P2014选课的经验,转换成树上背包问题。同理,本题是一个森林,若将0号节点参与建树的话就可以把森林转换成树,处理方便。具体地,设\(f_{i,j}\)表示以\(i\)为父节点,剩......
  • 「解题报告」P1972 HH的项链
    题目链接:HH的项链这道题做法很多,看到有用线段树,主席树和莫队做的,但我不太会用树状数组,所以讲解一下树状数组的解法。题干告诉我们要求区间内的贝壳的种类数,那么用树状数组怎么维护呢?我们通过一个简单的例子来理解一下。对于一个序列:143242,我们要去求这个序列里的贝壳的个数......
  • 题解 [SDOI2009] HH的项链
    题目链接对于这类问区间不同数的总数,显然是不能用线段树直接维护的,毕竟不符合区间区间可加性。考虑对于一个右端点固定的询问,哪些数字实际上是有权值的。比如区间1332312,显然,实际上对于相同的数字,只有一个是有权值的,其他权值均为\(0\)。但是这样还是无法起到简化的作用......
  • P1060 [NOIP2006 普及组] 开心的金明 题解
    思路01背包模版题,唯一不同的是加了一个条件就是价格与重要度的乘积。转移方程为:dp[j]=max(dp[j],dp[j-w[i]]+w[i]*v[i]);这里加了滚动数组优化。代码#include<bits/stdc++.h>#definelllonglong#defineldlongdoubleusingnamespacestd;inlinevoidread(int&x){......
  • [NOIP2006 普及组] 开心的金明
    该s的背包[NOIP2006普及组]开心的金明题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过\(N\)元钱就行”。今天一早金明就开始做预算,但是他想买的......
  • P1203 [USACO1.1]坏掉的项链Broken Necklace(C++_模拟_暴力枚举_优化)
    题目描述你有一条由n个红色的,白色的,或蓝色的珠子组成的项链,珠子是随意安排的。这里是n=29的两个例子:第一和第二个珠子在图片中已经被作记号。图片A中的项链可以用下面的字符串表示:brbrrrbbbrrrrrbrrbbrbbbbrrrrb假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集......