zoukankan      html  css  js  c++  java
  • weight(搜索对象的选取)

    题目链接:

    就是大概这么个东西

    根据题意,我们可以清楚的知道:这个题我不会,这个题需要先将2n个数进行排序

    这样每对于一个小的前(后)缀和总会在队列最前或队列最后

    设这个数为k

    那么判断总的Sum(n)-k是否在集合之中就可以啦

    当然,如果不在集合之中,我们就要重新的回溯一遍

    直到成功

    PS:若k既满足于前缀和又满足于后缀和,先放在前面

    因为

    下放代码:

    //weight
    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 100005;
    int n, s[N], m, a[N], t[N], flag, ans[N], all;
    
    inline int read()
    {
        int x = 0, y = 1;
        char z = getchar();
        while (z < '0' || z > '9')
        {
            if (z == '-')
            {
                y = -1;
                z = getchar();
            }
        }
        while (z >= '0' && x <= '9')
        {
            x = (x << 3) + (x << 1) + z - '0';
            z = getchar();
        }
    }
    
    inline void dfs(int l, int r, int now, int sum1, int sum2)
    {
        if (flag)
            return;
        if (l == r)
        {
            int w3 = all - sum1 - sum2;
            if (t[w3])
            {
                ans[l] = w3;
                flag = 1;
            }
            return;
        }
        int w1 = s[now] - sum1;
        if (w1 <= 500 && w1 >= 1 && t[w1]) //属于前缀
        {
            ans[l] = w1;
            dfs(l + 1, r, now + 1, s[now], sum2);
        }
        if (flag)
            return;
        int w2 = s[now] - sum2;
        if (w2 <= 500 && w2 >= 1 && t[w2]) //属于后缀
        {
            ans[r] = w2;
            dfs(l, r - 1, now + 1, sum1, s[now]);
        }
    }
    
    int main()
    {
        scanf("%d", &n);
        for (int i = 1; i <= 2 * n; i++) //前后缀和
            scanf("%d", &s[i]);
        scanf("%d", &m);
        for (int i = 1; i <= m; i++)
        {
            scanf("%d", &a[i]);
            t[a[i]] = 1;
        }
        sort(s + 1, s + 2 * n + 1);
        all = s[2 * n];
        dfs(1, n, 1, 0, 0);
        for (int i = 1; i <= n; i++)
            printf("%d ", ans[i]);
        return 0;
    }

    Fixed on 2020.1.7

    emmm,这个好像只能拿90Pts(无所谓了,反正思路差不多)

  • 相关阅读:
    X oracle 12c new feature: Automatic Report Capturing Feature
    X 搭建Postgresql configure: error: readline library not found
    X windows上利用vmvare搭建共享存储搭建rac
    洛谷P1397 [NOI2013]矩阵游戏
    BSOJ 6289【NOIP2018模拟赛】黄昏
    BSOJ 4282 秀秀的照片
    BSOJ 5185【11.08题目】暴力破解
    BSOJ 5100 简单的区间
    VUE 项目自适应屏幕和浏览器
    yarn npm区别
  • 原文地址:https://www.cnblogs.com/gongcheng456/p/11007401.html
Copyright © 2011-2022 走看看