nyoj 1189 yougth和他的朋友们 (DP)
题目: pid=1189" target="_blank">nyoj 1189 yougth和他的朋友们
这题目是14年北京赛区的原题。讲题的时候说有三种解法,我们是用dp做的当时。原题目链接:Happy Matt Friends
题意就不在说了。由于要求的是满足条件的种数。
我们定义状态dp【i】【j】:当我们把第 i 个数放进去之后得到 j 的种数是多少
那么我们能够得到状态转移方程:dp【i】【j^ a [ i ] 】 += dp【i-1】【j】
就是当前得到每一个 j ^ a [ i ] 有前 i-1 个数得到。整个dp一遍就是得到结果了。
还有注意这里数组比較大。直接开的话会超内存,所以要用滚动数组优化。
AC代码:
#include <cstring>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <queue>
#include <vector>
#include <map>
using namespace std;
typedef long long LL;
const int N = 1100100;
LL dp[3][N];
int a[50];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
memset(dp,0,sizeof(dp));
int ma = 0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]>ma)
ma = a[i];
}
dp[0][0] = 1;
for(int i=1;i<=n;i++)
{
memset(dp[i%2],0,sizeof(dp[i%2]));
for(int j=0;j<=ma;j++)
{
dp[i%2][j^a[i]] += dp[(i+1)%2][j];
dp[i%2][j] += dp[(i+1)%2][j];
if((j^a[i])>ma)
ma = (j^a[i]);
}
}
LL ans = 0;
for(int i=m;i<=ma;i++)
ans+=dp[n%2][i];
printf("%lld\n",ans);
}
return 0;
}
nyoj 1189 yougth和他的朋友们 (DP)的更多相关文章
- NYOJ 914 Yougth的最大化
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 Yougth如今有n个物品的重量和价值各自是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- NYOJ 914 Yougth的最大化【二分/最大化平均值模板/01分数规划】
914-Yougth的最大化 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:4 难度:4 题目描述: Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从 ...
- 一个简单题,引发的思索 + nyoj 1189
题目描述:第一行:给你两个数m和n,m表示有m个数,然后下一行输入m个数,每个数只能选择一次,统计共有多少种情况使得所选数的和大于等于n: 解决本题我想到了两种方法,(题目自己想的,先不考虑超时),第 ...
- NYOJ 18 The Triangle 填表法,普通dp
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=18 The Triangle 时间限制:1000 ms | 内存限制:6553 ...
- nyoj 1216——整理图书 CF 229D—— Towers——————【dp+贪心】
整理图书 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 小明是图书鹳狸猿,他有很多很多的书堆在了一起摆在了架子上,每摞书是横着放的,而且每摞书是订好的 是一个整体, ...
- nyoj 214 单调递增子序列(二) 【另类dp】
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 ,a2...,an}(0<n<=100000),找出单调递增最长子序列.并求出其长度 ...
- nyoj 17
// nyoj 17 代码如上,用的是dp,总的来说就是对一个字符串 从末尾开始比较,设定一个数组,存放每个单调字串的最大长度,最后比较... //要注意的就是里面if语句对于每次字符比 ...
- [STOI2014]舞伴(dp)
STOI是汕头OI...无聊翻到了去年的比赛题目,就写然后自己测了一下. 其实我很想吐槽为什么题目名是perm,perm好像和舞伴完全无关.. dp(x,s)=∑dp(x-1,s-{i}))(0< ...
- C语言积累一点点
778. 水位上升的泳池中游泳https://leetcode-cn.com/problems/swim-in-rising-water/ 839. 相似字符串组 https://leetco ...
随机推荐
- HDU 4357
这道题写起来没难度,但这种题确实很难,这种字符串的题难在证明.以后也要注意. 奇偶性不同的字符串肯定不能转换,因为每一次交换都是字符串的和增加2. 当字符串长度为2时,可以模拟交换,最多26次. 否则 ...
- CSU 1541 There is No Alternative (最小生成树+枚举)
题目链接:传送门 题意: 有n个点.m条边.要使n个点所有连起来且要花费最小.问有哪些边是必需要连的. 分析: 要使花费最小肯定是做最小生成树.可是题目要求哪些边是必需要用的.我们能够 这样思考,我们 ...
- 引用内部函数绑定机制,R转义字符,C++引用,别名,模板元,宏,断言,C++多线程,C++智能指针
1.引用内部函数绑定机制 #include<iostream> #include<functional> usingnamespacestd; usingnamespac ...
- 【Android 应用开发】 ActionBar 样式具体解释 -- 样式 主题 简单介绍 Actionbar 的 icon logo 标题 菜单样式改动
作者 : 万境绝尘 (octopus_truth@163.com) 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/3926916 ...
- Windows环境下msysgit安装git flow
git flow是git的一个扩展集,它基于Vincent Driessen的分支模型,能够用来简化代码的版本号公布流程. 本文讲述怎样为msysgit安装git flow. 下载getopt.exe ...
- c5
// // main.c // Switch练习2 // // Created by xiaomage on 15/6/6. // Copyright (c) 2015年 xiaomage. All ...
- Linux下FFmpeg的安装编译过程【转】
本文转载自:http://www.linuxidc.com/Linux/2013-06/85628.htm 详细说下在Linux下FFmpeg的安装编译过程.参考 Ubuntu 10.04安装编译FF ...
- maven的pom.xml配置标签
转自:https://blog.csdn.net/wf787283810/article/details/76188595 <project xmlns="http://maven.a ...
- 2. Add Two Numbers[M]两数相加
题目 You are given two non-empty linked lists representing two non-negative integers. The digits are s ...
- 对ajax和jsp渲染的一些感想
一个多月来,也算是做了两个javaweb的项目,但是对于用哪种方式渲染页面一直有些抉择不定,第一个项目用的ajax,发现各种对htmlDom节点的操作十分的繁琐,需要找到数据填充的节点并添加id值,引 ...