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 ...
随机推荐
- powershell远程访问
在服务器上打开powershell 1.winrm quickconfig 2.Enable-PSRemoting -Force 在客户端上打开powershell 1.Enter-PSSession ...
- F - Truck History
F - Truck History #include<cstdio> #include<cstring> #include<iostream> #include&l ...
- mac下安装配置java开发环境
可以使用homebrew下载相关软件,以下具体讲一下环境的配置: mac下安装jdk vi .bash_profile 输入i,进入编辑模式 输入以下配置,其中JAVA_HOME是你的jdk安装目录 ...
- Spring使用HibernateDaoSupport操作数据
spring提供了一个数据訪问层的类:org.springframework.orm.hibernate3.support.HibernateDaoSupport.一般是让 dao继承该类,然后在da ...
- Android 对话框(Dialog) 及 自己定义Dialog
Activities提供了一种方便管理的创建.保存.回复的对话框机制,比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...
- unity3d Pathfinding插件使用
Overview The central script of the A* Pathfinding Project is the script 'astarpath.cs', it acts as a ...
- php中的self关键字和this关键字的区别和联系
php中的self关键字和this关键字的区别和联系 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行PHP的高级编程 ...
- nyoj--118--修路方案(次小生成树)
修路方案 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修路. ...
- 16.unix网络编程一卷 unp.h
unix网络编程 --ubuntu下建立编译环境 1.安装编译器,安装build-essential sudo apt-get install build-essential 2.下载本书的头文件 下 ...
- 写函数,输入n个数字输出最大值和最小值
# ,写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}# 例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置 ...