2020ICPC 昆明热身赛 C.Statues(小思维)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020ICPC 昆明热身赛 C.Statues(小思维)相关的知识,希望对你有一定的参考价值。

LINK

因为雕像一定是重量从小到大放过来的

所以只要直到之前放了几个雕像,就直到现在要放什么雕像

定义 f [ i ] [ j ] f[i][j] f[i][j]表示前 i i i个位置放了 j j j个雕像的最小代价

一个简简单单的 O ( n 2 ) O(n^2) O(n2) d p dp dp就搞定了

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,k,f[5009][5009];
typedef pair<int,int>p;
vector<p>vec;
signed main()
{
	cin >> n >> k;
	for(int i=1;i<=k;i++)
	{
		p now; scanf("%lld%lld",&now.second,&now.first );
		vec.push_back( now );
	}
	sort( vec.begin(),vec.end() );
	memset( f,0x3f,sizeof f );
	for(int i=0;i<=n;i++)	f[i][0] = 0;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=i && j<=k;j++)
		f[i][j] = min( f[i-1][j],f[i-1][j-1]+vec[j-1].first*abs(i-vec[j-1].second) );
	cout << f[n][k];
}

以上是关于2020ICPC 昆明热身赛 C.Statues(小思维)的主要内容,如果未能解决你的问题,请参考以下文章

2020ICPC昆明 C.Cities(区间dp)

2020ICPC 昆明 M.Stone Games(思维+可持久化线段树)

2020ICPC昆明 L.Simone and graph coloring(思维+nlog(n)的最长下降子序列)

ACM周赛&ICPC昆明资格赛

ICPC20昆明M——动态开点权值线段树(主席树)

2021 ICPC 江西省大学生程序设计竞赛(热身赛)完结