2 条题解

  • 0
    @ 2025-10-8 16:58:10
    #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
      @ 2025-10-8 16:58:03
      #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
      上传者