hihoCoder #1179 : 永恒游戏 (暴力枚举)
2015-06-17 22:19
288 查看
题意:
给出一个有n个点的无向图,每个点上有石头数个,现在的游戏规则是,设置某个点A的度数为d,如果A点的石子数大于等于d,则可以从A点给每个邻接点发一个石子。如果游戏可以玩10万次以上,输出INF,否则输出最多能玩几次。
思路:
暴力枚举每个可以玩的点,假如可以玩无限次,且当前状态为Z(指所有点的石头数的序列作为一个状态),那么在玩了多次之后,一定会造成循环,也就是说,玩几次之后,每个点的石子数和初始的石子数一模一样,这样子我再重复之前是怎么玩的就可以无限玩了。但是由于有200个点,所以玩一次就去判断是否和初始一样的状态,否则复杂度为 O(100000*结点数*该结点的边数),数量级上亿。
现在只需要枚举10万次就知道结果了,不用去判断其他的。而且每次选择要玩的点都可以任意选,只要满足了条件(并不需要先玩石子数多的,或少的)。
AC代码
给出一个有n个点的无向图,每个点上有石头数个,现在的游戏规则是,设置某个点A的度数为d,如果A点的石子数大于等于d,则可以从A点给每个邻接点发一个石子。如果游戏可以玩10万次以上,输出INF,否则输出最多能玩几次。
思路:
暴力枚举每个可以玩的点,假如可以玩无限次,且当前状态为Z(指所有点的石头数的序列作为一个状态),那么在玩了多次之后,一定会造成循环,也就是说,玩几次之后,每个点的石子数和初始的石子数一模一样,这样子我再重复之前是怎么玩的就可以无限玩了。但是由于有200个点,所以玩一次就去判断是否和初始一样的状态,否则复杂度为 O(100000*结点数*该结点的边数),数量级上亿。
现在只需要枚举10万次就知道结果了,不用去判断其他的。而且每次选择要玩的点都可以任意选,只要满足了条件(并不需要先玩石子数多的,或少的)。
#include <bits/stdc++.h> #define LL long long using namespace std; const int N=205; int n, m, a, b, num ; vector< vector<int> > vect; unordered_set<int> sett; int cal() { int cnt=0; for(int i=0; i<n; i++) if(num[i]>=vect[i].size()) sett.insert(i); //符合条件 while(!sett.empty()) { cnt++; //一次 if(cnt>=100000) return cnt; int q=*sett.begin(); num[q]-=vect[q].size(); if(num[q]<vect[q].size()) sett.erase(sett.begin()); //这个点已经不能再玩了 for(int i=0; i<vect[q].size(); i++) //往邻居加石头 { int p=vect[q][i]; //栈顶结点所连的点 num[p]++; if(num[p]>=vect[p].size() ) sett.insert(p); } } return cnt; } int main() { //freopen("e://input.txt", "r", stdin); scanf("%d%d",&n,&m); for(int i=0; i<n; i++) scanf("%d", &num[i]); //石头数 vect.resize(n); for(int i=0; i<m; i++) { scanf("%d%d", &a, &b); //输入边,无向图 vect[a].push_back(b); vect[b].push_back(a); } int ans=cal(); if(ans>=100000) printf("INF\n"); else printf("%d\n",ans); return 0; }
AC代码
相关文章推荐
- 剑指offer 27 - 二叉搜索树与双向链表
- PHP:PDOStatement::rowCount()方法参数说明
- centos6.5 lnmp、lamp、lnmpa一键安装包
- Find the element that appears once
- Ogre基础教程4:监听器类与无缓冲输入处理
- struts自定义转化器
- 游戏服务器架构演化史
- openstack安装经验总结
- 构建之法13-17章读后感
- j2se学习笔记-IO_3 数据流DyteIO ByteArrayIO
- SVN中分支合主干以及主干合分支分别怎么选择?
- stringstream
- 15HD_OJ——Common Subsequence
- 分析2005及以上数据库变慢的原因
- 菜鸟网络是马云的天下还是快递的未来?
- 数据采集工具flume
- 浅谈facebook威胁分析框架
- 记录Android学习笔记和部分IOS收藏
- 欢迎使用CSDN-markdown编辑器
- Polya 定理练习题