1 条题解

  • 0
    @ 2025-10-8 16:48:55
    #include<bits/stdc++.h> 
    using namespace std;
    int f[110][110],sv[110][110];
    int main()
    {
    	memset(sv,0,sizeof(sv));
    	int n,m;scanf("%d%d",&m,&n);
    	for(int i=1;i<=n;i++)
    	{
    		int x,y,c;scanf("%d%d%d",&x,&y,&c);if(x>y)swap(x,y);
    		for(int xi=x;xi>=1;xi--)for(int yi=y;yi<=m;yi++)sv[xi][yi]+=c;
    	}
    	memset(f,0,sizeof(f));
    	int k;scanf("%d",&k);
    	for(int ki=1;ki<=k;ki++)
    	{
    		for(int ed=ki;ed<=m;ed++)
    		{
    			for(int st=ed;st>=ki;st--)//[st,ed]表示第ki个人观光的范围 
    			{
    				f[ki][ed]=max(f[ki][ed],f[ki-1][st-1]+sv[st][ed]);
    			}
    		}
    		
    	}
    	printf("%d\n",f[k][m]);
    	return 0;
    }
    
    • 1

    *【动态规划:状态设计DP】观光游览

    信息

    ID
    249
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    59
    已通过
    37
    上传者