結果
問題 | No.1238 選抜クラス |
ユーザー | Niwaka |
提出日時 | 2020-09-26 18:50:14 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,853 bytes |
コンパイル時間 | 908 ms |
コンパイル使用メモリ | 91,432 KB |
実行使用メモリ | 808,704 KB |
最終ジャッジ日時 | 2024-06-29 13:26:58 |
合計ジャッジ時間 | 9,151 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 2 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 2 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 3 ms
5,376 KB |
testcase_10 | AC | 2 ms
5,376 KB |
testcase_11 | AC | 3 ms
5,376 KB |
testcase_12 | AC | 3 ms
5,376 KB |
testcase_13 | AC | 3 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 3 ms
5,376 KB |
testcase_16 | AC | 3 ms
5,376 KB |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | AC | 353 ms
362,112 KB |
testcase_20 | WA | - |
testcase_21 | AC | 315 ms
323,328 KB |
testcase_22 | WA | - |
testcase_23 | AC | 3 ms
5,376 KB |
testcase_24 | MLE | - |
testcase_25 | MLE | - |
testcase_26 | WA | - |
testcase_27 | AC | 407 ms
410,112 KB |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | AC | 14 ms
14,080 KB |
testcase_31 | WA | - |
testcase_32 | AC | 188 ms
191,872 KB |
testcase_33 | AC | 3 ms
5,376 KB |
testcase_34 | WA | - |
testcase_35 | WA | - |
testcase_36 | AC | 5 ms
6,528 KB |
testcase_37 | WA | - |
testcase_38 | WA | - |
ソースコード
#include<vector> #include<iostream> #include<stdio.h> #include<stdlib.h> #include <iostream> #include <algorithm> #include <map> #include <cmath> #include<queue> #include <sstream> #include <set> #include<stack> #include <utility> #include <tuple> #define INF 1000000000000 const long long MOD = 1000000007; using namespace std; typedef long long llong; #define debug cout << "Hello" << endl; //int isalpha(char ch): ch がアルファベットなら true を返す //int isdigit(char ch): ch が数字なら true を返す //int islower(char ch): ch が小文字なら true を返す //int isupper(char ch): ch が大文字なら true を返す //int tolower(char ch): ch の小文字を返す //int toupper(char ch): ch の大文字を返す //string型 //size() 文字数を返す //Insert() (指定した場所に)文字・文字列を挿入する //erase() (指定した場所の)文字・文字列を削除する //clear() すべての文字を削除する //substr() 文字列の(指定した)部分文字列を返す //replace() (指定した)部分文字列を新しい文字列に置換する //c_str()変換 //文字列の比較は、<=や==などを使え //replace関数を使い、簡単に文字列を置換 //リバース関数:reverse(str.begin(), str.end()); //map<type, type> dict;で宣言 //グラフ理論用変数 //vector<vector<llong> > graph(N); //ソート //降順sort(v.begin(), v.end(), std::greater<Type>()); //大文字から小文字へんかん //w[i] = w[i]-'A'+'a'; //vector //assignメソッド 引数:サイズ、値 //与えられたサイズと値でvectorを初期化する //queueクラス //find()次に取り出す値の表示をする。 //pop()値を取り出す。戻り値はなし //push()キューに値をプッシュする //priority_queueクラス //切り上げ //ceil //floor int main(){ llong N,K; cin >> N >> K; vector<llong> A(N+1, 0); llong total=0; for(int i=1; i<=N; i++){ cin >> A[i]; total = total + A[i]; } vector<vector<vector<llong> > > dp(N+1, vector<vector<llong> >(N+1, vector<llong>(total+1, 0))); dp[0][0][0] = 1; for(int i=1; i<=N; i++){ for(int j=0; j<=N; j++){ for(int k=0; k<=total; k++){ if(j-1<0){ dp[i][j][k] = dp[i-1][j][k]; continue; } if(k-A[i]<0){ dp[i][j][k] = dp[i-1][j][k]; continue; } dp[i][j][k] = dp[i-1][j][k]+dp[i-1][j-1][k-A[i]]; } } } llong ans=0; for(int i=1; i<=N; i++){ for(int j=0; j<=total; j++){ if(K<=((double)j/(double)i)){ ans = ans + dp[N][i][j]; } } } cout << ans << endl; return 0; }