zoukankan      html  css  js  c++  java
  • SRM 600 div 2 T 2

    题意:给你50个数,问你最少去掉多少数能使得剩下的数不可能具备子集S,OR起来为goal

    如果一个数不是goal的子状态,那么我们没必要删除他,所以我们只关心goal的子状态的数

    1:如果所有的数OR起来都没有到达goal,那么就是0

    2:每个数都会贡献一些位,去掉1的个数最少的那一位就好了

    #include <bits/stdc++.h>
    using namespace std;

    class ORSolitaireDiv2
    {
    public:
    int getMinimum(vector <int>, int);
    };
    int ORSolitaireDiv2::getMinimum(vector <int> numbers, int goal)
    {
        int ans = 33, cnt = 0;
        bool f[33];
        memset(f,false,sizeof(f));
        for (int i = 0; i < 33; i ++)
            if (!(goal & (1 << i))){
                for (int j = 0; j < numbers.size(); j ++)
                    if (numbers[j] & (1 << i))
                        f[j] = true;
            }
        for (int i = 0; i < 33; i ++)
            if (goal & (1 << i)){
                cnt = 0;
                for (int j = 0; j < numbers.size(); j ++)
                    if ((numbers[j] & (1 << i)) && !f[j])
                        cnt ++;
                ans = min(ans, cnt);
            }
    cnt = 0;
    for(int i = 0;i < numbers.size(); i++)
    if (f[i])
                cnt ++;
    ans = min((int)numbers.size() - cnt, ans);
    return ans;
    }
  • 相关阅读:
    java2: HttpClient,实现登录,请求等操作,session保持
    bat使用1
    java4: 读取配置文件
    HTML+CSS学习笔记(一)
    第1章:JavaScript简介
    第2章:在HTML中使用JavaScript
    HTML+CSS学习笔记(二)
    ASP.NET防止页面刷新的方法
    上下左右无空隙不间断图片连续滚动代码
    SQL Server2005新加的功能排名函数
  • 原文地址:https://www.cnblogs.com/wjnclln/p/9558686.html
Copyright © 2011-2022 走看看