[POI2011]IMP-Party

Posted sshwy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[POI2011]IMP-Party相关的知识,希望对你有一定的参考价值。

摘要

题意:一个 n 个点 m 条边的无向图 \(n\equiv 0(\bmod 3)\),保证存在一个大小为 \(\frac23n\) 的团,要求输出一个大小为 \(\frac13n\) 的团.\(n\leq 3000\).

这道题的特殊之处在于找团,而它保证有一个 \(\frac23n\) 大小的团,却只让我们找一个 \(\frac13n\) 的团. 这意味着我们在寻找的过程中可以舍弃一些点。

团中的点是两两相邻的,因此我们直接枚举判断不相邻的两个点并直接舍掉. 每个点最多被舍掉一次. 考虑这样做的正确性. 你找到的两个点一定不可能同时是 \(\frac23n\) 团中的点,要么一个是团中的点一个不是,要么两个都不是其中的点. 因此这个操作最多进行 \(\frac13n\) 次,每次取 2 个点,最后剩下的 \(\frac13\) 个点一定是一个团。

#include<bits/stdc++.h>
using namespace std;
const int N=3e3+5;

int n,m,e[N][N];
bool v[N];

int main()
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i=1;i<=m;i++)
        int u,v;
        cin>>u>>v;
        e[u][v]=e[v][u]=1;
    
    for(int i=1;i<=n;i++)
        if(v[i])continue;
        for(int j=i+1;j<=n;j++)if(!v[j]&&!e[i][j])
            v[j]=v[i]=1;break;
        
    
    int tot=0;
    for(int i=1;i<=n;i++)
        if(!v[i])cout<<i<<' ',++tot;
        if(tot*3==n)break;
    
    return 0;

以上是关于[POI2011]IMP-Party的主要内容,如果未能解决你的问题,请参考以下文章

[POI2011]IMP-Party

POI2011 棒棒糖 Lollipop

BZOJ2212 [Poi2011]Tree Rotations 线段树合并 逆序对

bzoj 2212 : [Poi2011]Tree Rotations (线段树合并)

java poi xwpf操作word生成一个表格怎么合并单元格,求大神指导!

雷林鹏分享:Apache POI电子表格/Spreadsheet