2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N = 1e5 + 1; int n, k, dp[N], a[N]; int main() { cin >> n >> k; for(int i = 1; i <= n; i ++) cin >> a[i]; dp[0] = 0; for(int i = 1; i <= k; i ++) //枚举当前取得的总和 for(int j = 1; j <= n; j ++) //枚举dp[i]是否可以通过dp[i-a[j]]所得1 { if(i - a[j] < 0) continue ; //越界判断 dp[i] |= (dp[i - a[j]] == 0); //状态转移方程,满足其一即可 } cout << (dp[k] ? "First" : "Second"); } -
0
#include<bits/stdc++.h> using namespace std; const int N = 1e5 + 1; int n, k, dp[N], a[N]; int main() { cin >> n >> k; for(int i = 1; i <= n; i ++) cin >> a[i]; dp[0] = 0; for(int i = 1; i <= k; i ++) //枚举当前取得的总和 for(int j = 1; j <= n; j ++) //枚举dp[i]是否可以通过dp[i-a[j]]所得1 { if(i - a[j] < 0) continue ; //越界判断 dp[i] |= (dp[i - a[j]] == 0); //状态转移方程,满足其一即可 } cout << (dp[k] ? "First" : "Second"); }
- 1
信息
- ID
- 1678
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 6
- 标签
- 递交数
- 78
- 已通过
- 23
- 上传者