首页 > 其他分享 >P4342 [IOI1998] Polygon

P4342 [IOI1998] Polygon

时间:2024-01-27 12:55:07浏览次数:30  
标签:Polygon int P4342 start IOI1998 op 105

原题链接

题解

最近做的题目有点多,感觉没什么好讲的,某个最大值一定是由连续区间上的节点操作后得来的

\(Code\)

#include<bits/stdc++.h>
using namespace std;
int f[105][105][2];
int main()
{
    memset(f,-0x3f3f3f,sizeof f);
    int n;
    cin>>n;
    char op[105];
    int a[105];
    for(int i=1;i<=n;i++)
    {
        cin>>op[i]>>a[i];
        op[i+n]=op[i];
        a[i+n]=a[i];
    }

    int ans=-1e9;
    for(int start=1;start<=n;start++)//拆环成链恰好符合第一步remove的操作
    {
        for(int i=1;i<=2*n;i++) f[i][i][0]=f[i][i][1]=a[i];
        for(int d=2;d<=n;d++)
        {
            for(int l=start;l<=start+n-d+1;l++)
            {
                int r=l+d-1,mins=2e9;
                for(int mid=l;mid<r;mid++)
                {
                    f[l][r][1]=max(f[l][r][1],(op[mid+1]=='x')?max(f[l][mid][1]*f[mid+1][r][1],f[l][mid][0]*f[mid+1][r][0]):f[l][mid][1]+f[mid+1][r][1]);
                    //细节,由于乘法负负得正的存在,某个区间的最大值可能不是由最大值传递过来的,而是由最小的负值传过来的的
                    mins=min(mins,(op[mid+1]=='x')?min(f[l][mid][1]*f[mid+1][r][1],f[l][mid][0]*f[mid+1][r][0]):f[l][mid][0]+f[mid+1][r][0]);
                    //细节,由于没有覆盖过的最小值是-0x3f3f3f,所以如果想求最大值一样求会无法更新
                }
                f[l][r][0]=mins;
            }
        }
        ans=max(ans,f[start][start+n-1][1]);
    }
    cout<<ans<<endl;
    for(int i=1;i<=n;i++)  if(f[i][i+n-1][1]==ans)cout<<i<<" ";//op[i]代表i与前一个节点的操作
    return 0;
}

标签:Polygon,int,P4342,start,IOI1998,op,105
From: https://www.cnblogs.com/pure4knowledge/p/17991316

相关文章

  • arcengine GP调用PolygonToLine 报错 -2147467259
    这个原因是传参数问题;GP调用面转线工具时,不能利用该方式传入参数IGpValueTableObjectgpValueTableObject=newGpValueTableObject();//对一个及以上要素类进行相交运算gpValueTableObject.SetColumns(2);objecto1=pFeatureClass2;//输入IFeatureC......
  • 亚马逊云科技基于 Polygon 推出首款 Amazon Managed Blockchain Access,助 Web3 开发人
     2023年11月26日,亚马逊(Amazon)旗下AmazonWebServices(Amazon)在其官方博客上宣布,AmazonManagedBlockchain(AMB)Access已支持PolygonProof-of-Stake(POS)网络,并将满足各种场景的需求,包括需要以高可用方式频繁访问PolygonJSON-RPCAPI的场景以及需要间歇性、不......
  • 无涯教程-Tk - Polygon部件函数
    多边形小部件用于在画布中绘制多边形。多边形小部件的语法如下所示-canvasNamecreatepolygonx1y1x2y2...xnynoptionsx1y1和x2y2...xnyn用于确定多边形的端点。Polygon-参数下表列出了可用于多边形小部件的选项-Sr.No.Syntax&Remark1-outlinecolor......
  • ArcMap中Cut Polygons Tool工具将一个面图层切割为多个部分
      本文介绍在ArcGIS下属ArcMap软件中,通过“CutPolygonsTool”工具,对一个面要素矢量图层加以手动分割,从而将其划分为指定形状的多个部分的方法。  对于一个面要素矢量文件,有时我们需要对其加以划分,通过手动勾勒新的线条的方式,将其中原本的一个面分割为多个指定的小区域;本文就......
  • 区块链平台终极对决:Solana Vs. Polygon Vs. Ethereum
    区块链技术是目前世界上最受关注的技术之一。它几乎进入了每一个领域,以其中心化的系统来改善现有技术。随着区块链的进入,也为这些细分领域开发了许多不同种类的应用。它还催生了诸如NFT、去中心化金融(Defi)、加密货币等很多东西。原文:https://www.blockchain-council.org/b......
  • TypeError: Polygon.__init__() takes 2 positional arguments but 3 were given
    《程序员数学:用Python学透线性代数和微积分》第3.5章,源码bug修正。报错信息:wang@wanggongdeMacBook-AirpythonTest%/usr/local/bin/python3/Users/wang/Documents/VSCode/pythonTest/chapter3/chapter3.pyTraceback(mostrecentcalllast):File"/Users/wang/Document......
  • 算法竞赛命题指南(命题流程、Polygon的使用等)
    一.引言命好一场题目,是一个艰巨的任务。它非常考察个人水平和团队合作能力。在出题前,你应该做好以下准备:抱有认真负责的态度出题是给别人做的,比起展示自己,更多是为了是服务他人。算法竞赛是选手之间的竞赛,而不是出题人与做题人之间的较量。因此,出题不应以考倒选手为目标(当然,适当的......
  • AT_abc251_g Intersection of Polygons Solution
    AT_abc251_gIntersectionofPolygonsSolutionPreface由于某些\(\LaTeX\)的原因,本文的公式无法正常查看,建议读者访问博客以获得正常阅读体验。Statement逆时针地给定一个有\(N\)个顶点,第\(i\)个顶点为\((x_i,y_i)\)的凸包\(P_0\)。再给出\(M\)个向量\((u_i,v......
  • 【854】通过polygon切取tif栅格数据
    参考:CuttingapolygonfromTIFFwithPython[closed]importrasterioimportrasterio.maskimportgeopandasasgpddataset=rasterio.open("wc2.1_10m_elev.tif")gdf_africa=gpd.read_file("africa1_map.gpkg")poly=gdf_africa.loc[0,&......
  • QGeoPolygon
    QGeoPolygon#include<QGeoPolygon> PublicFunctions QGeoPolygon() QGeoPolygon(constQList<QGeoCoordinate>&path) QGeoPolygon(constQGeoPolygon&other) QGeoPolygon(constQGeoShape&other) ~QGeoPolygon()voi......