Advertisement

Minimax Problem——状压-二分

阅读量:

Minimax Problem

题解:

当最小值与最大值的特性显现时,可以考虑采用二分法进行处理。同时观察到m的数值较为微小,因此可借助状态压缩的方式进行暴力枚举。然而,状态压缩通常用于记录01状态,而在此问题中可能存在多个不同的数值,需要将其转化为对应的01状态。由于采用了二分法,我们可以将这一过程视为一个二分类问题:若数值大于等于当前中间值mid,则标记为1;否则标记为0。在枚举过程中必须确保每个所选状态都是有效的,并且从两列数据中选出的新排列数量必须满足恰好包含m个元素的要求。

复制代码
    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    const int bits=1<<9;
    const int N=3e5+7;
    int maze[N][10],vis[bits],n,m;
    int res1,res2;
    bool check(int mid)
    {
    memset(vis,0,sizeof vis);
    for(int i=0;i<n;i++){
        int t=0;
        for(int j=0;j<m;j++){
            if(maze[i

全部评论 (0)

还没有任何评论哟~