zoukankan      html  css  js  c++  java
  • BZOJ5068: 友好的生物(状压 贪心)

    题意

    题目链接

    Sol

    又是一道神仙题??。。

    把绝对值拆开之后状压前面的符号?。。

    下界显然,但是上界为啥是对的呀qwq。。

    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN = 1e6 + 10;
    inline int read() {
        char c = getchar(); int x = 0, f = 1; 
        while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
        while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
        return x * f;
    }
    int N, K, C[MAXN], ans;
    struct Node {
    	int v[6], vk;
    	bool operator < (const Node &rhs) const {
    		return vk < rhs.vk;
    	}
    }a[MAXN];
    int main() {
    	N = read(); K = read() - 1;
    	for(int i = 0; i <= K; i++) C[i] = read();
    	for(int i = 1; i <= N; i++) {
    		for(int j = 0; j < K; j++) a[i].v[j] = read() * C[j]; a[i].vk = read() * C[K];
    	}
    	sort(a + 1, a + N + 1);
    	for(int sta = 0; sta < (1 << K); sta++) {
    		int mn = 1e9 + 10;
    		for(int i = 1; i <= N; i++) {
    			int now = 0;
    			for(int j = 0; j < K; j++) 
    				now += (sta >> j & 1) ? -a[i].v[j] : a[i].v[j];
    			now -= a[i].vk;
    			ans = max(ans, now - mn);
    			mn = min(now, mn);
    		}
    	}
    	cout << ans;
    	return 0;
    }
    /*
    5 3
    1 2 3
    -5 3 2
    -2 3 0
    0 5 9
    3 4 -1
    -10 -11 7
    */
    
  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/10045348.html
Copyright © 2011-2022 走看看