UVALIVE 2955 Vivian's Problem
2024-09-04 13:00:48
参考: http://blog.csdn.net/acm_cxlove/article/details/7860735
感觉这里需要记录一下
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <cctype>
#include <cstdio>
#include <string>
#include <vector>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define PI 3.1415926535897932626
using namespace std;
int gcd(int a, int b) {return a % b == ? b : gcd(b, a % b);}
int mason[] = {,,,,,,,};
int cnt[] = {,,,,,,,};
bool dp[<<];
int K,src[];
int trans(int x)
{
int ans = ;
for (int i = ; i < ; i++)
{
if (x % mason[i] == )
{
x /= mason[i];
if (x % mason[i] == ) return ;
ans |= (<<i);
}
}
if (x != ) return ;
return ans;
}
int calcu(int sta)
{
int ans = ;
for (int i = ; i < ; i++)
if (sta & (<<i))
ans += cnt[i];
return ans;
}
int main()
{
while (scanf("%d",&K)!=EOF)
{
//if (K == 0) break;
int cnt = ;
for (int i = ; i < K; i++)
{
scanf("%d",&src[i]);
src[i] = trans(src[i]);
if (src[i] == ) cnt++;
}
if (cnt == K) { puts("NO"); continue; }
memset(dp,false,sizeof(dp));
dp[] = true;
for (int i = ; i < K; i++)
for (int j = ; j < (<<); j++)
{
if (!(src[i] & j))
if (dp[j]) dp[j|src[i]] = true;
}
int ans = ;
for (int i = ; i < (<<); i++)
if (dp[i])
ans = max(ans,calcu(i));
printf("%d\n",ans);
}
return ;
}
最新文章
- iOS开发中可能有用的那些分类们Categories
- Date get period
- ajax 调用 JSON.parse();
- 通过java获取html中所有的图片路径
- hdu 2203 亲和串
- java 20 - 9 带有缓冲区的字节输出流和字节输入流
- table_横向合并_纵向合并
- [GUI]界面开发类库-Ribbon风格 [转]
- Golang学习笔记
- tomcat context 配置 项目部署
- Bootstrap兼容IE8
- kafak集群安装-转
- vscode中vue代码颜色插件
- Linux中Apache服务器的简单配置
- SPOJ DQUERY D-query(主席树 区间不同数个数)
- k个一组翻转链表(java实现)
- 前端-----margin用法(盒子模型里补充)
- est是基于less的样式工具库
- ProxySQL Cluster的搭建
- docker 给运行的容器映射本地端口