hdu4462 Scaring the Birds || 2012 Asia Hangzhou Regional Contest || 简单暴力
来源:互联网 发布:信用卡加淘宝帐号贷款 编辑:程序博客网 时间:2024/05/16 17:48
hdu4462 Scaring the Birds 请戳
题意:
小疯子有一个大小为 n * n 的小孔的地,从(1,1)到(n,n),小疯子种了一些包谷(玉米)。可是不知道哪里来的小 bird 和小 rat 吃了k个小孔上的包谷,最后剩下小孔。小疯子气疯了,要小傻子摆平 bird 和 rat。小傻子决定在这孔上守着,够傻的!!但是这次不是他上阵,而是影分身到多个孔上(小疯子刚从鸣处学来多重影分身之术。。。)守着,为了节省查克拉,小傻子需要你来帮助傻傻的他,如何使用最少的查克来保护所有的包谷,既最少需要多少个分身。由于分身能力有限,只能守住离自己曼哈顿距离为 R 的包谷。
不能守住所有的包谷,就输出-1, 不然输出分身个数。思路:
暴力枚举影分身个数和对应影分身所在位置,其实就是状压枚举。以为 k 是在是少的可怜,个数枚举 + 需要保护的包谷的单个判断,完全能够解决。
可惜小傻子在做这个题的时候一直想用贪心来做,无尽wa!(不愧是小傻子!555)复杂度:
时间复杂度:O(n^2 * 2 ^k)
空间复杂度:O(n^2)代码:
/* ***********************************************Author :IlovezilianCreated Time :2015/9/2 23:53:09File Name :1009.cpp************************************************ */#include <bits/stdc++.h>#define INF 0x7fffffffusing namespace std;const int N = 55, mod = 1e9+7;int n;struct nod{ int x, y, r;} po[11];bool vis[N][N];vector<int> v;bool judge(){ for(int i = 1; i <= n; i ++) for(int j = 1; j <= n; j ++) { if(vis[i][j]) continue; bool ok = 0; int sz = v.size(); for(int k = 0; k < sz; k ++) { int x = po[v[k]].x, y = po[v[k]].y, r = po[v[k]].r; int d = abs(i - x) + abs(j - y); if(d <= r) {ok = 1; break;} } if(!ok) return 0; } return 1;}void solve(){ while(~scanf("%d", &n) && n) { memset(vis, 0, sizeof(vis)); int k; scanf("%d", &k); for(int i = 0; i < k; i ++) { scanf("%d%d", &po[i].x, &po[i].y); vis[po[i].x][po[i].y] = 1; } for(int i = 0; i < k; i ++) scanf("%d", &po[i].r); int sta = (1 << k), cnt, ans = 15; for(int i = 0; i < sta; i ++) { cnt = 0; v.clear(); for(int j = 1, j1 = 0; j <= i; j <<= 1, j1 ++) if(i&j) v.push_back(j1), cnt ++; if(judge()) ans = min(ans, cnt); } if(ans == 15) ans = -1; printf("%d\n", ans); }}int main(){ //freopen("","r",stdin); //freopen("","w",stdout); solve(); return 0;}
0 0
- hdu4462 Scaring the Birds || 2012 Asia Hangzhou Regional Contest || 简单暴力
- hdu 4462 Scaring the Birds || 2012 Asia Hangzhou Regional Contest || bfs
- 2012 Asia Hangzhou Regional Contest--hdu4462Scaring the Birds(IDA)
- hdu4462 Scaring the Birds
- HDU4462 Scaring the Birds
- hdu4462 Scaring the Birds状态压缩
- 2012 Asia Hangzhou/Jinhua Regional Contest
- 训练赛:2012 Asia Hangzhou Regional Contest
- 2012 Asia Hangzhou Regional Contest--hdu4463Outlets(mst)
- 2013 Asia Hangzhou Regional Contest
- 2012 Asia Hangzhou Regional Contest--hdu4460Friend Chains(SPFA)
- 2010 Asia Hangzhou/Fuzhou Regional Contest
- hdu_4462 Scaring the Birds 暴力搜索
- hdu 4462 Scaring the Birds (暴力)
- hdu 4462 Scaring the Birds(暴力,细读)
- hdu4770 暴力状压 Lights Against Dudely (2013 Asia Hangzhou Regional Contest problem A)
- HDU 3681 Prison Break 二分+搜索 The 35th ACM-ICPC Asia Regional Contest (Hangzhou)
- The 37th ACM/ICPC Asia Regional HangZhou Site Online Contest - F
- 开发日记:接口开发设计
- PHP date_default_timezone_set()函数之中国时区设定
- Hadoop学习计划
- spring jar 地址
- Leetcode #232 Implement Queue using Stacks
- hdu4462 Scaring the Birds || 2012 Asia Hangzhou Regional Contest || 简单暴力
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 设计模式学习
- 对于可重入、线程安全、异步信号安全几个概念的理解
- pig优化器之一(翻译pig wiki):combiner使用
- SPOJ 题目 8222 NSUBSTR - Substrings(后缀自动机+DP求子串出现最大次数)
- hdu1572
- HDU 5113 Black And White(2014ACM/ICPC北京赛区B)
- hdu1016