• ZR#1005


    ZR#1005

    解法:

    题解给了一个建图跑最短路的做法,但好像没有必要,因为 $ m $ 没有用,所以直接上完全背包就行了。

    CODE:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<bitset>
    
    using namespace std;
    
    #define LL long long
    #define N 2010
    #define rep(i, a, n)for (int i = a; i < n; i++)
    #define per(i, a, n)for (int i = n-1; i >= a; i--)
     
    bitset<N> nst, st, zero; 
    int n,k,x,vis[N],a[N],m,res; 
    
    int main() {
    	scanf("%d%d%d",&k,&n,&res); 
    	rep(i, 0, k) {
    		scanf("%d",&x); 
    		vis[x] = 1; 
    	}
    	m = 0; 
    	rep(i, 0, 1001) {
            if (vis[i])a[m++] = i - n; 
        }
    	st[1000] = 1; 
    	rep(i, 1, 1001) {
    		nst = zero; 
    		rep(j, 0, m) {
                if (a[j] > 0) nst |= (st << a[j]); 
                else nst |= (st >> ( - a[j])); 
            }
    		st = nst; 
    		if(st[1000] == 1) {
    			printf("%d
    ", i); 
                //system("pause");
    			return 0; 
    		}
    	}
    	puts("-1"); 
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    数据库的安装
    数据库大整合
    数据库的设置及其初始密码
    HTML标签
    增加删除的js
    增删改查js
    表单验证码限制条件
    倒序输出插入的数组
    插入数组排序法1
    求下标长度
  • 原文地址:https://www.cnblogs.com/Repulser/p/11709751.html
Copyright © 2020-2023  润新知