UVa 10651 Pebble Solitaire (DP&bitset)
来源:互联网 发布:美工刀片9a图片大全 编辑:程序博客网 时间:2024/06/05 09:09
10651 - Pebble Solitaire
Time limit: 3.000 seconds
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1592
化为二进制进行状态转移,详见代码。
完整代码:
/*0.016s*/#include<bits/stdc++.h>using namespace std;const int Size = 12;char str[Size];int dp[4100];bitset<Size> tmp;int f(unsigned long n){if (n == 0 || dp[n]) return dp[n];bitset<Size> b(n);int minn = b.count();///在不卡时间的情况下,我使用bitset就是因为这个函数挺方便的,虽然自己写也不过几行///用bitset还可以避免因运算符优先级造成的麻烦(! ~ 高于 << >> 高于 == 高于 & 高于 ^ 高于 | 高于 && 高于 ||)for (int i = 0; i < Size; ++i){if (!b.test(i))///等价于if((n>>i&1)==0){if (i < Size - 2 && b.test(i + 1) && b.test(i + 2)){tmp = b;tmp.set(i), tmp.reset(i + 1), tmp.reset(i + 2);///等价于n|1u<<i,n&~(1u<<(i+1)),n&~(1u<<(i+2))minn = min(minn, f(tmp.to_ulong()));}if (i > 1 && b.test(i - 1) && b.test(i - 2)){tmp = b;tmp.set(i), tmp.reset(i - 1), tmp.reset(i - 2);minn = min(minn, f(tmp.to_ulong()));}}}return dp[n] = minn;}int main(){int t, i;scanf("%d", &t);while (t--){getchar();for (i = 0; i < Size; ++i)str[i] = (getchar() == '-' ? '0' : '1');printf("%d\n", f(strtoul(str, NULL, 2)));}return 0;}
- UVa 10651 Pebble Solitaire (DP&bitset)
- UVa 10651 - Pebble Solitaire 状态压缩 dp
- UVA 10651 Pebble Solitaire 状压Dp
- UVA 10651 Pebble Solitaire 状态压缩dp
- UVa 10651 Pebble Solitaire(状压DP)
- uva 10651 Pebble Solitaire
- UVA 10651 Pebble Solitaire
- Uva - 10651 - Pebble Solitaire
- uva 10651 pebble Solitaire
- UVa 10651 - Pebble Solitaire
- UVA - 10651 Pebble Solitaire
- UVa:10651 Pebble Solitaire
- uva 10651 Pebble Solitaire
- uva 10651 - Pebble Solitaire
- UVa 10651 - Pebble Solitaire
- UVA 10651 - Pebble Solitaire
- UVA 10651 Pebble Solitaire
- uva 10651 Pebble Solitaire
- java多态(三)
- Java_io体系之InputStream、OutputStream简介、走进源码——03
- 解决 multiple definition of
- 在eclipse中运行php程序
- 五个你必须知道的JavaScript和web debug技术
- UVa 10651 Pebble Solitaire (DP&bitset)
- IO总结
- Activity的四种launchMode
- Android drawable-nodpi 的作用
- 从C++到Java,10年技术生涯的几点思考
- Spring事务传播特性实例解析
- GDB的使用方法
- PCB布线时线宽和电流的关系
- 交互两个数(不引入第三个变量)