博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1128. Partition into Groups
阅读量:5140 次
发布时间:2019-06-13

本文共 1246 字,大约阅读时间需要 4 分钟。

思维才是最重要的 有些题目用不到很复杂的算法 甚至不用算法 但就是让人很难想到

个人认为这才是一个人能力的关键 还需要多加练习呀

此题:

首先 此题肯定有解 也就是说“NO SOLUTION”是骗人的

1.我们先把所以人放在一个组里

2.遍历一遍 对于某个人如果同组中有两个或两个以上的敌人 则将此人放到另一组

3.如果 2 中没有更新则结束 否则重复 步骤 2

时间复杂度 接近 o(n^2)

可以接受

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define LL long longconst int INF=0x3f3f3f3f;const int N=10005;int head[N],I;struct node{ int j,next;}side[N*50];vector
group1;vector
group2;int in[N];queue
qt;struct node1{ int out; int I;}mem[N];void add(int i,int j){ side[I].j=j; side[I].next=head[i]; head[i]=I++;}bool cmp(node1 x,node1 y){ return x.out
=2) {in[i]=-in[i];log=true;} } } return log;}int main(){ //freopen("data.in","r",stdin); int n; while(cin>>n) { memset(head,-1,sizeof(head)); I=0; for(int i=1;i<=n;++i) { int m; cin>>m; while(m--) { int k; cin>>k; add(i,k); } } for(int i=1;i<=n;++i) in[i]=1; int k=1; while(F(k,n)) k=-k; group1.clear(); group2.clear(); for(int i=1;i<=n;++i) { if(in[i]==1) group1.push_back(i); else group2.push_back(i); } cout<
<

 

 

转载于:https://www.cnblogs.com/liulangye/archive/2012/11/16/2773698.html

你可能感兴趣的文章
Linux下基于Xampp的TestLink的安装部署
查看>>
清華認證的流程
查看>>
【转】Java获取异常的堆栈信息到String的方式
查看>>
C++循环包含
查看>>
linux如何下解压windows下的.zip和.rar文件
查看>>
C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解
查看>>
《致橡树》-- 舒婷
查看>>
Ubuntu安装TFTP服务器
查看>>
ubuntu 10.10安装nginx+php的过程
查看>>
springmvc的DispatcherServlet拦截以及访问静态资源html、js、css 404问题
查看>>
怎样用Visual Basic6.0编写木马程序
查看>>
如何正确使用Cocoapods
查看>>
站立会议个人5
查看>>
Gulp--Less
查看>>
使用JSONPath
查看>>
嵌入式软件设计第9次实验报告
查看>>
morphia查询mongodb内嵌文档
查看>>
springcloud超时机制
查看>>
Redis——学习之路一(初识redis)
查看>>
[转] ElasticSearch 常用的查询过滤语句
查看>>