您当前的位置: 首页 >  矩阵

钟钟终

暂无认证

  • 4浏览

    0关注

    233博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

P4251 [SCOI2015]小凸玩矩阵(还是有点迷糊)

钟钟终 发布时间:2022-02-14 20:16:15 ,浏览量:4

https://www.luogu.com.cn/problem/P4251 二分答案+最小匹配 需要判断:是否能找出至少n-k+1个数,使得这些数不大于当前值且满足条件。

求n个数中第k大的数的最小值---------二分答案 每行选取一个数字-----------------------可建立二分图 第k大的数的最小值-----------二分出一个第k大的数,求最大匹配数,如果最大匹配大于n-k,就说明这个数字还可以变得再小,缩小二分的边界.

#include 

using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1e5+5;
int n,m,k,mp[300][300],link[maxn],head[maxn];
bool used[maxn];
int cnt,ma=0,mi=inf;
struct node
{
    int to,nxt;
}e[maxn];
void add(int from,int to)
{
    e[++cnt].to=to;
    e[cnt].nxt=head[from];
    head[from]=cnt;
}
bool dfs(int u)
{
    for(int i=head[u];i!=-1;i=e[i].nxt)
    {
        int v=e[i].to;
        if(!used[v])
        {
            used[v]=1;
            if(link[v]==-1||dfs(link[v]))
            {
                link[v]=u;
                return 1;
            }
        }
    }
    return 0;
}
bool pd(int mid)
{
    memset(link,-1,sizeof(link));
    memset(head,-1,sizeof(head));
    for(int i=1;i            
关注
打赏
1664378814
查看更多评论
0.0471s