UESTC 878 温泉旅馆 --性质+枚举
设FA为A的牌中数字异或和,FB为B的。
则有性质:
ans = (所有的(A&B=0)个数 + (FA=FB且A&B=0)的个数)/2。即所有的FA>FB的个数(除2是因为这里FA>FB的个数等于FA<FB的个数)加上FA=FB(A&B=0)的个数(除2是因为会算两次),这些情况都算A赢。(FA=FB即有FA^FB = 0)可以定义状态dp[i][s]为考虑前i个数,当前FA^FB=s的(A,B)个数。我这里是直接算的。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 2007 int a[]; int main()
{
int i,j,k,n,m,A;
scanf("%d",&n);
for(i=;i<n;i++)
scanf("%d",&a[i]);
int S = (int)pow(,n); //所有A&B=0的(A,B)个数
int AA = (<<n) - ;
int cnt = ; //A,B都不取
int resA;
for(A=;A<=AA;A++)
{
j = A;
k = m = resA = ;
while(j)
{
if(j%)
{
resA ^= a[k];
m++;
}
k++;
j/=;
}
if(resA == ) //则可取A,B为resA的子集使FA^FB=resA=0,子集数为2^m(m为取得数的个数)
cnt += <<m;
}
int res = (S+cnt)/;
printf("%d\n",res);
return ;
}
UESTC 878 温泉旅馆 --性质+枚举的更多相关文章
- UESTC - 878 温泉旅店 二维费用背包问题
http://acm.uestc.edu.cn/#/problem/show/878 设dp[i][j][k]表示在前i个数中,第一个得到的异或值是j,第二个人得到的异或值是k的方案数有多少种. 因为 ...
- UESTC - 878
状态的枚举还需多多练习啊 #include<iostream> #include<algorithm> #include<cstdio> #include<c ...
- 2014 UESTC暑前集训动态规划专题解题报告
A.爱管闲事 http://www.cnblogs.com/whatbeg/p/3762733.html B.轻音乐同好会 C.温泉旅馆 http://www.cnblogs.com/whatbeg/ ...
- 枚举Enum 的常用方法
一.枚举介绍 通常定义常量方法和枚举定义常量方法区别 public class State { public static final int ON = 1; public static final ...
- BUPT2017 wintertraining(15) #3 题解
我觉得好多套路我都不会ヘ(;´Д`ヘ) 题解拖到情人节后一天才完成,还有三场没补完,真想打死自己.( ˙-˙ ) A - 温泉旅店 UESTC - 878 题意 有n张牌,两人都可以从中拿出任意 ...
- 【JAVA 文件概述】
一.概述 使用此类的原因: 该类将文件或者文件夹封装成对象.方便对文件与文件夹的属性信息进行操作.File对象作为参数传递给流的构造函数.要求:使用File类的常用方法. windows平台下,目录分 ...
- 【学术篇】NOIP2016 D1T3 luogu1850换教室
题目链接:点击这里献出你宝贵的时间(是用来做题不是捐赠Emmmm).. Emmmm我太弱了= = 做完这题我觉得我应该去打星际..这题怎么就有重边了呢.. 这题就是一道期望= =当时考场上好像完全不会 ...
- 旋转坐标+前缀和(zqu 25001)
本题题意:在一个矩阵中,去随机一点,设定一个步数K,求出从这个点可以走到的范围的和,求最大值 思路:这个范围的和是一个菱形,我们把他旋转45°,然后成为一个正放的矩阵,求出二维前缀和 然后用前缀和的性 ...
- 「不会」Min25筛
大概的思路是把所有数分成质数和合数考虑 对于质数,必须找出一个很简单的完全积性函数和所求函数拟合 把所有数当做质数看待求个前缀和,然后再枚举合数的最小质因子把合数T掉 枚举到根号n,即可保证把n以内的 ...
随机推荐
- 在Android设备上判断设备是否支持摄像头
private boolean hasCamera(){ boolean hasCamera=false; PackageManager pm=getActivity().getPackageMana ...
- 将 C# 编译为原生机器码
C# 用户似乎都希望 C# 可以和 C++ 一样编译为本地的机器码.如果 C# 可以编译为机器码,将可以做到: 1. 效率提高,可以取代 C++ . 2. 反编译. 当然微软在商业利益的考虑下 ...
- MessageBox的Buttons和三级联动
一.MessageBox的Buttons MessageBox.Show可以出现有按钮的对话框 例如: DialogResult dr = MessageBox.Show("是否要继续吗?& ...
- js判断用户的浏览器设备是移动端还是pc端
最近做的一个网站页面中需要根据用户的访问设备的不同来显示不同的页面样式,主要是判断移动设备还是电脑浏览器访问的. 下面给出js判断处理代码,以作参考. <script type="te ...
- ASP.NET MVC 微信公共平台开发之获取用户消息并处理
ASP.NET MVC 微信公共平台开发 获取用户消息并处理 获取用户消息 用户发送的消息是在微信服务器发送的一个HTTP POST请求中包含的,获取用户发送的消息要从POST请求的数据流中获取 微信 ...
- Office版本差别引发的语法问题
由于没有源代码,今天反编译了一个基于.NET的dll类库,再次遇到office版本差异问题,所以把它记录下来. 在反编译时,需要Aspose.Cells 5.3.1(Aspose是一套.NET类库,其 ...
- SharePoint 错误集 3
1. workflow 流程走不下去,报 workflow fails to run 的错误 请确保下面二个service要么都start,要么都stop: Microsoft SharePoint ...
- DownloadManager 的使用
一.基本概念 1.DownloadManager是Android 2.3A (API level 9) 引入的,基于http协议,用于处理长时间下载. 2.DownloadManager对于断点 ...
- IOS 网络浅析-(五 xml解析)
XML 可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 易读性高,编码手写难度小,数据量大 NSXMLPars ...
- 使用ObjectOutputStream进行socket通信的时候出现固定读到四个字节乱码的问题
问题描述: 最近在写一个通信相关的项目,服务器端和客户端通过socket进行通信.本来想利用read的阻塞特性,服务器端和客户端按照一定的流程进行文件读写.结果发现客户端或者服务器read方法一直都返 ...