結果
| 問題 |
No.385 カップ麺生活
|
| コンテスト | |
| ユーザー |
kongarishisyamo
|
| 提出日時 | 2016-07-03 23:13:03 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 759 bytes |
| コンパイル時間 | 367 ms |
| コンパイル使用メモリ | 56,260 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-04 22:38:19 |
| 合計ジャッジ時間 | 1,455 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 32 |
ソースコード
#include<iostream>
using namespace std;
#define NMAX 20
#define MMAX 10000
#define CMAX 1000
int main(){
int M,N,C[NMAX];
int dp[MMAX+1];
int hurui[MMAX]={0};
int minC=CMAX+1;
cin>>M>>N;
for(int i=0;i<N;i++){
cin>>C[i];
if(minC>C[i]) minC=C[i];
}
for(int i=0;i<=M;i++){
dp[i]=-1;
}
dp[M]=0;
for(int i=0;i<N;i++){
for(int j=M;j>=0;j--){
if(dp[j]!=-1&&j-C[i]>=0){
if(dp[j-C[i]]==-1||dp[j-C[i]]<dp[j]+1){
dp[j-C[i]]=dp[j]+1;
}
}
}
}
hurui[0]=1,hurui[1]=1;
for(int i=0;i<=M;i++){
if(hurui[i]==0){
for(int j=i*2;j<=M;j+=i){
hurui[j]=1;
}
}
}
int ans=0;
for(int i=0;i<=M;i++){
//cout<<i<<","<<dp[i]<<endl;
if(dp[i]!=-1&&hurui[i]==0){
ans+=dp[i];
}
}
ans+=M/minC;
cout<<ans<<endl;
}
kongarishisyamo