Balancing the Scale
来源:互联网 发布:千牛淘宝修改店铺名称 编辑:程序博客网 时间:2024/06/01 11:21
the main algorithm:
use a array to save the number of the combination(use the way of combination as flag) and multiply the i ans 1<<16-1^i to calculate the total number of this way
code:
#include<cstdio>#include<iostream>#include<algorithm>#include<vector>#include<cstring>using namespace std;int num[16];const int M = 12000;const int N = (1<<16);vector<int> sta[M];//connect the sum and combination, a certain sum reflect to many ways int cnt[N], x[16];void init() {sort(num, num+16);for(int i=0; i<M; i++) sta[i].clear();memset(cnt, 0, sizeof(cnt));}bool judge(int s) {int count = 0;for(int i=0; i<16; i++) {if(s & 1<<i) x[count++] = num[i];}return count==4;}long long deal() {long long ans = 0;int t;for(int i=0; i<N; i++) {if(judge(i))do{//make sure there are four num t = x[0]*4+x[1]*3+x[2]*2+x[3];for(int k=0; k<sta[t].size(); k++) {if((sta[t][k] & i) == 0) {//al long as them are not samecnt[sta[t][k]|i]++;//use the way as a flag}}sta[t].push_back(i);}while(next_permutation(x, x+4));}for(int i=0; i<N; i++) {ans += cnt[i]*cnt[i^(N-1)];}return ans/2;}int main() {int cas = 1;while(scanf("%d", &num[0]) == 1 && num[0]) {for(int i=1; i<16; i++) scanf("%d", &num[i]);init();printf("Case %d: %lld\n", cas++, deal());}return 0;}
0 0
- Balancing the Scale
- UVALive - 3693 Balancing the Scale
- POJ 3139 Balancing the Scale
- POJ 3139 Balancing the Scale 笔记
- 1381 - Balancing the Scale (技巧枚举+位运算)
- uva 1381 - Balancing the Scale(枚举+位运算)
- UVALive - 3693 Balancing the Scale 枚举 + 状态压缩
- POJ 3139 / LA 3693 Balancing the Scale (枚举,状态压缩)
- Balancing
- Fitting the Mel Scale笔记
- Scale
- Scale
- Scale
- arcgis server zoom to the specified scale
- Scale-out of the Performance of SignalR
- Sicily 13292. The 4-Point Scale (四分制)
- To get the View matrix from the rotation,translation,scale
- The Anatomy of a Large-Scale Hypertextual Web Search Engine
- C++知三角形三边求面积
- Divisibility(区间)
- 打印图形b
- 2015华为机试题:洞穴逃生
- __VA_ARGS__用法
- Balancing the Scale
- 第3周.项目2:个人所得税计算器
- 跟着廖雪峰的git教程学习(2)时光机穿梭
- 安装github for windows出现问题
- 初识runloop
- commons-fileupload实现文件上传下载
- ATEN宏正发布全新CN8600 KVM over IP解决方案
- iOS中MD5加密
- linux 系统优化