位运算
big up
这个作者很懒,什么都没留下…
展开
-
uva10718
题目大意: 给出N,L,U,找到一个M,让M|N位运算可以最大,满足这个条件的同时要使得M最小。思路: 先将2的0 - 32次方存放到一个数组中,由于没有符号的32位的整数最大为2^32 -1,所以必须存到2^32次方,此时注意要用上longlong 否则就错误了,如果N中的位为0的时候,M必须尽可能的等于1,这样才可以保证M|N最大,但是此时要判断M为1的最小值是否已经超过了U,同理,当N中的原创 2015-12-28 15:11:40 · 224 阅读 · 0 评论 -
uva11008
题目大意: 有n棵树,需要砍掉m棵数,可以用一个扫描光朝一个方向射去,那么这个方向直线上的所有树都会被砍掉,问需要最少几个这种光。思路: 位运算 状态压缩 记忆化搜索 要判断三棵树是否在同一斜率上。代码:#include <iostream>using namespace std;#include <stdio.h>#include <cstring>#define N (1 << 1原创 2016-03-05 13:49:22 · 233 阅读 · 0 评论 -
uva11008 附
感觉这个人写得很不错#include <stdio.h>#include <string.h>#define INF 1000000000#define MAXN 20#define MAXS 1<<18int n,m,c;int x[MAXN],y[MAXN];int s[MAXN][MAXN];int f[MAXS];int dp(int ss){ int count转载 2016-03-05 13:53:13 · 273 阅读 · 0 评论 -
LA3693
题意:在给出的16个数中,求使得满足 x1* 4 + x2* 3 + x3* 2 + x4 = x5 + x6* 2 + x7* 3 + x8* 4 y1* 4 + y2* 3 + y3* 2 + y4 = y5 + y6* 2 + y7* 3 + y8* 4思路: 先将数字进行排序,枚举四位数字,将所有等于temp的状态存入val[temp][i]中,然后判断i & val[temp][j]原创 2016-03-31 12:31:50 · 208 阅读 · 0 评论 -
DP与位运算的结合
uva10651 代码:#include <iostream>using namespace std;#include <cstring>#include <stdio.h>char str[15];int a;int vis[4100];int _min;bool check(int i,int j) { if((j & (1 << (i - 1))) && (j & (1原创 2016-05-15 20:09:23 · 334 阅读 · 0 评论