1. 题解:
  2. 列举每一种3的倍数的组合,开始先求出3条边的可行解,则
  3. 六条边的可行解可以由两个三条边得来。
  4. 详见代码解析
#include<bits/stdc++.h>
using namespace std;
int a[],n,cnt,ant,is[],dp[];
struct node
{
int num,id;
}angle[];
bool cmp(const node& a,const node& b)
{
return a.num<b.num;
}
int abs1(int x)
{
if(x<)return -x;
return x;
}
void init()
{
for(int i=;i<(<<n);i++)
{
int ans=,t=i;
while(t)
{
if(t&)ans++; //这一位是1节++
t=t>>; //右移
}
if(ans%==)
{
angle[cnt].id=i;
angle[cnt++].num=ans/;
}
if(ans==)
{
int v[],ans1=,ans2=,t=i;
while(t)
{ //把二进制位是1的边对应上
if(t&)v[ans1++]=a[ans2];
t=t>>;
ans2++;
}
if(abs1(v[]-v[])<v[]&&abs1(v[]-v[])<v[]&&abs1(v[]-v[])<v[])
{ //两边只差小于第三边,和会超int
is[ant++]=i;
dp[i]=;
}
}
}
}
int main()
{
int T,cas=;scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d",&a[i]);
cnt=,ant=;
memset(dp,,sizeof(dp));
dp[]=;
init();
sort(angle,angle+cnt,cmp);//要排序
for(int i=;i<cnt;i++)
{
node e=angle[i];
for(int j=;j<ant;j++)
{
//&位运算
if(dp[e.id]&&!(e.id&is[j]))//若e.id已存在并且
//.e.id中的边与is[j]中没有重边则dp[e.id|is[j]]=1
dp[e.id|is[j]]=;//推到下一个
}
}
for(int i=cnt-;i>=;i--)
{
if(dp[angle[i].id]) //答案要最多,从后往前遍历
{
printf("Case #%d: %d\n",++cas,angle[i].num);
break;
}
}
}
return ;
}

校赛热身 Problem C. Sometimes Naive (状压dp)的更多相关文章

  1. Codeforces Gym 100610 Problem K. Kitchen Robot 状压DP

    Problem K. Kitchen Robot Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10061 ...

  2. Problem Arrangement ZOJ - 3777(状压dp + 期望)

    ZOJ - 3777 就是一个入门状压dp期望 dp[i][j] 当前状态为i,分数为j时的情况数然后看代码 有注释 #include <iostream> #include <cs ...

  3. 校赛热身 Problem B. Matrix Fast Power

    找循环节,肯定在40项以内,不会证明. #include <iostream> #include <cstring> #include <string> #incl ...

  4. 【BZOJ】1087: [SCOI2005]互不侵犯King(状压dp)

    http://www.lydsy.com:808/JudgeOnline/problem.php?id=1087 状压dp是第一次写啊,我也是才学TAT.状压dp一般都用一个值表示集合作为dp的一个状 ...

  5. lightoj 1119 - Pimp My Ride(状压dp)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1119 题解:状压dp存一下车有没有被搞过的状态就行. #include < ...

  6. ZOJ 3777 - Problem Arrangement - [状压DP][第11届浙江省赛B题]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3777 Time Limit: 2 Seconds      Me ...

  7. poj3311 TSP经典状压dp(Traveling Saleman Problem)

    题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...

  8. 多校7 HDU5816 Hearthstone 状压DP+全排列

    多校7 HDU5816 Hearthstone 状压DP+全排列 题意:boss的PH为p,n张A牌,m张B牌.抽取一张牌,能胜利的概率是多少? 如果抽到的是A牌,当剩余牌的数目不少于2张,再从剩余牌 ...

  9. nyoj1273 河南省第九届省赛_"宣传墙"、状压DP+矩阵幂加速

    宣传墙 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 ALPHA 小镇风景美丽,道路整齐,干净,到此旅游的游客特别多.CBA 镇长准备在一条道路南 面 4*N 的墙上做 ...

随机推荐

  1. JAVA获取webapp路径

    1.使用ServletContext获取webapp目录 在Servlet中 String path = getServletContext().getRealPath("/"); ...

  2. shell 读取文件的每一行内容并输出

    (1)#!/bin/bash while read linedo    echo $linedone < file (2)#!/bin/bash cat file  | while read l ...

  3. wareshark网络协议分析之DHCP

    声明:本文关于DHCP协议介绍部分摘自百度百科 一.DHCP协议介绍: DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用 ...

  4. 经典的MapReduce1中的失败

    经典的MapReduce1中的失败在MapReduce1运行时,主要考虑三种失败的模式,运行任务失败.tasktracker失败以及jobtracker失败1. 任务运行失败首先考虑子任务失败的情况. ...

  5. Spring初学之xml实现AOP前置通知、后置通知、返回通知、异常通知等

    实现两个整数的加减乘除,在每个方法执行前后打印日志. ArithmeticCalculator.java: package spring.aop.impl.xml; public interface ...

  6. PrepareStatement

    import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  7. 微信支付:微信支付遇到的坑:jssdk,phpdemo,微信支付提示{"errMsg":"chooseWXPay:fail"}

    微信支付:微信支付遇到的坑:jssdk,phpdemo 使用微信支付,真是变态,如果不是微信用户多,我才不适配微信支付,我就在想:为什么没人用我支付宝的[点点虫]呢.一个小小的“/”的误差,都调不起微 ...

  8. 达观数据分析平台架构和Hive实践——TODO

    转自: http://www.infoq.com/cn/articles/hadoop-ten-years-part03 编者按:Hadoop于2006年1月28日诞生,至今已有10年,它改变了企业对 ...

  9. Tomcat部署项目后有括号的处理方法

    常见的问题,收录整理了一下,方便查找. 如下3个地方都修改为一致即可解决. 1,右键项目名 --> properties --> 输入web project settings --> ...

  10. web版源码管理软件SCM-Manager使用简要说明

    登录 默认管理员用户:scmadmin / scmadmin 用户 用户,可以反向添加针对所有仓库的权限 用户组 用户组,可以反向添加针对所有仓库的权限 用户组管理 用户组,可委托给具体用户进行管理( ...