結果
| 問題 |
No.496 ワープクリスタル (給料日前編)
|
| コンテスト | |
| ユーザー |
ふっぴー
|
| 提出日時 | 2017-03-25 00:56:19 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 832 bytes |
| コンパイル時間 | 147 ms |
| コンパイル使用メモリ | 32,768 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-06 03:22:22 |
| 合計ジャッジ時間 | 957 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 23 |
ソースコード
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
#define INF 1000000000;
int min(int a,int b);
int main(void){
int gx,gy,n,f;
scanf("%d %d %d %d",&gx,&gy,&n,&f);
int x[50],y[50],c[50];
int i,j,k;
for(i=0;i<n;i++){
scanf("%d %d %d",&x[i],&y[i],&c[i]);
}
unsigned long dp[gx+1][gy+1];
for(j=0;j<=gx;j++){
for(k=0;k<=gy;k++){
dp[j][k]=INF;
}
}
dp[0][0]=0;
for(i=0;i<n;i++){
for(j=gx;j>=0;j--){
for(k=gy;k>=0;k--){
if(j+x[i]<=gx && k+y[i]<=gy){
dp[j+x[i]][k+y[i]]=min(dp[j][k]+c[i],dp[j+x[i]][k+y[i]]);
}
}
}
}
unsigned long ans=INF;
for(j=0;j<=gx;j++){
for(k=0;k<=gy;k++){
dp[j][k]+=f*(gx-j+gy-k);
ans=min(ans,dp[j][k]);
}
}
printf("%lu\n",ans);
return 0;
}
int min(int a,int b){
if(a<=b){
return a;
}else{
return b;
}
}
ふっぴー