Codeforces Round #424 (Div. 2) D. Office Keys(dp)
2017-07-14 22:54
621 查看
题目链接:Codeforces Round #424 (Div. 2) D. Office Keys
题意:
在一条轴上有n个人,和m个钥匙,门在s位置。
现在每个人走单位距离需要单位时间。
每个钥匙只能被一个人拿。
求全部的人拿到钥匙并且走到门的最短时间。
题解:
显然没有交叉的情况,因为如果交叉的话可能不是最优解。
然后考虑dp[i][j]表示第i个人拿了第j把钥匙,然后 dp[i][j]=max(val(i,j),min(dp[i-1][i-1~j])) val(i,j)表示第i个人拿第j把钥匙再到门的时间。
然后 后面那个min可以在for的时候保存下来,然后复杂度就O(n*m)了。
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 5 const int N=2007; 6 int dp[N/2] ,mi,n,m,s,a ,b ; 7 8 int val(int i,int j){return abs(a[i]-b[j])+abs(b[j]-s);} 9 10 int main(){ 11 scanf("%d%d%d",&n,&m,&s); 12 F(i,1,n)scanf("%d",a+i); 13 F(i,1,m)scanf("%d",b+i); 14 sort(a+1,a+1+n),sort(b+1,b+1+m); 15 F(i,1,n) 16 { 17 mi=dp[i-1][i-1]; 18 F(j,i,m) 19 { 20 dp[i][j]=max(val(i,j),mi); 21 mi=min(mi,dp[i-1][j]); 22 } 23 } 24 int ans=INT_MAX; 25 F(i,n,m)ans=min(ans,dp [i]); 26 printf("%d\n",ans); 27 return 0; 28 }View Code
相关文章推荐
- Codeforces Round #424 (Div. 2) D. Office Keys(dp)
- Codeforces VK Cup Finals #424 Div.1 A. Office Keys(DP)
- Codeforces Round #424 (Div. 2) D. Office Keys(贪心 二分 or DP)
- codeforces 831 D Office Keys(dp)
- 【dp】codeforces 830-A Office Keys
- Codeforces Round #424 -(二分&贪心)||dp-D. Office Keys
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Office Keys(思维)
- Codeforces Round #424 (Div. 2) Problem D. Office Keys
- CF Round #424( Div.2) D. Office Keys 【二分||DP】
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)D. Office Keys(二分+贪心)
- 【推导】Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals) A. Office Keys
- 【Codeforces Round #424 (Div. 2) D】Office Keys
- Codeforces Round #277 (Div. 2)D(树形DP计数类)
- Codeforces Round #466 (Div. 2): E. Cashback(单调队列+DP)
- Codeforces Round #433 (Div. 1) D. Michael and Charging Stations(dp)
- UVALive 5881 Unique Encryption Keys (DP)
- Codeforces 318 div2.D Bear and Blocks(dp,贪心)
- Central Post Office (Shiraz University Local Contest 2011 ) 树状dp
- 【Codeforces Round 271 (Div 2)D】【DP】Flowers 黑色必须连续摆放k,长度为n的摆放方案数
- Codeforces Round #260 (Div. 2) C (DP)