2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛)-G(DP)

题目链接:https://ac.nowcoder.com/acm/contest/553/G

题意:给定n,k,(1<=n<=5e5)然后给出n个数ai(1<=ai<=1e5),问按顺序从1..n分组,最多能有多少个组的异或和为k。

思路:自然的,我们用dp[i]表示到第i个人的时候最多有多少个组的异或和为k。计算dp[i]时,有两种情况,要么在第i个人后面分出一组,要么不分。不分的话dp[i]=dp[i-1]就可以了; 如果分得话,就要找到上一个组的终点下标,我们可以计算到第i个人时的异或和sum,显然可由此得到上一个组终点处的sum‘,sum’=sum^k,所以我们用一个数组pre[j]表示sum为j时的最后一个下标(初始化为-1),最后的dp[n]即为所求。

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3
 4 const int maxn=500005;
 5 int n,k,dp[maxn],sum,pre[maxn];
 6
 7 int main(){
 8     memset(pre,-1,sizeof(pre));
 9     pre[0]=0;
10     scanf("%d%d",&n,&k);
11     int tmp;
12     for(int i=1;i<=n;++i){
13         scanf("%d",&tmp);
14         sum^=tmp;
15         if(pre[sum^k]!=-1)
16             dp[i]=max(dp[i-1],dp[pre[sum^k]]+1);
17         else
18             dp[i]=dp[i-1];
19         pre[sum]=i;
20     }
21     printf("%d\n",dp[n]);
22     return 0;
23 }

原文地址:https://www.cnblogs.com/FrankChen831X/p/10666916.html

时间: 2024-10-20 14:03:34

2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛)-G(DP)的相关文章

西北工业大学微软高级技术培训中心 认证项目

西北工业大学微软高级技术培训中心 认证项目 西北工业大学微软高级技术培训中心成立于 1996 年,依托于著名的高等学府西北工业大学.是西北地区最早从事 IT 领域国际认证教育.企业定制培训与国际认证考试的专业教育机构.作为全国第一批成立的五所微软授权高级技术培训中心之一,经过多年的不懈努力和 国际知名公司紧密合作与交流 ,现已发展成为西北地区影响最大.培训质量最高.口碑最好.认证种类最全的 IT类高级技术培训基地和企业培训完全解决方案提供商. 认证 种类 认证项目 学时 学费 考试 考试费 教材

提高中职数学活动课教学实践水平的具体措施

一.中职数学活动课的基本特征和主要意义分析 过去应试教育模式下,中职数学教学以考试成绩作为风向标,完全忽视了学生的主观能动性. 而活动课则是让学生通过参加实践活动,了解数学与实际生活之间的密切联系, 加深对所学数学知识的理解和认识,并学会用数学知识解决实际问题,从而全面提高学生的数学素质. 中职数学活动课将"要我学"变为"我要学",让学生在实际生活中自主发现问题,并将实际问题抽象为数学模型,并对其进行分析解释,从而解决实际问题. 在这个发现问题.解决问题的过程中巩固

2019年湘潭大学程序设计竞赛(重现赛)

2019年湘潭大学程序设计竞赛(重现赛) A:Who's better? #include<bits/stdc++.h> using namespace std; int main(){ int n1,p1,s1,n2,p2,s2; cin>>n1>>p1>>s1; cin>>n2>>p2>>s2; if(n1!=n2){ if(n1>n2)cout<<"1\n"; else cout

第八届福建省大学生程序设计竞赛-重现赛

第八届福建省大学生程序设计竞赛-重现赛 B   计算几何 题意:问两个三角形是相交.包含还是相离. tags:套板子..求出相交的面积,再判断一下 /* 多边形相交面积模板 */ #define maxn 510 const double eps=1E-8; int sig(double d){ return(d>eps)-(d<-eps); } struct Point{ double x,y; Point(){} Point(double x,double y):x(x),y(y){} b

2016年中国大学生程序设计竞赛(合肥)-重现赛1008 HDU 5968

异或密码 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 19    Accepted Submission(s): 9 Problem Description 晨晨在纸上写了一个长度为N的非负整数序列{ai }.对于这个序列的一个连续子序列{al,al+1,…,ar }晨晨可以求出其中所有数异或的结果 alxoral+1xor...xo

2016年中国大学生程序设计竞赛(合肥)-重现赛1001 HDU 5961

传递 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 42    Accepted Submission(s): 16 Problem Description 我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c.我们称图G是一个竞赛图,当且仅当它是一个有

2016年中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969

最大的位或 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 18    Accepted Submission(s): 17 Problem Description B君和G君聊天的时候想到了如下的问题.给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大.其中|表示按位或,即C. C++.

如何学习TRIZ理论将其应用于创新实践当中?

TRIZ理论自面世至今已处理了成千上万的问题,很多的人刚学习TRIZ理论并将其应用于自主创新实践活动中.要想全方位把握TRIZ理论并在自主创新实践活动中熟练掌握,必须亲身经历1个较长的学习和实践活动过程,也要把握恰当的学习方法. 1.正确对待TRIZ理论:①TRIZ理论并不是数字的.定量分析的理论,只是判定的理论. ②TRIZ理论只是逻辑思维的工具,它服务项目于逻辑思维,而不替代逻辑思维. ③TRIZ理论是同自主创新能力和专业技能融为一体的. ④TRIZ理论自身还未超过S曲线图的成熟. ⑤TRI

RubyProgramming:向Ruby之父学程序设计pdf

下载地址:网盘下载 内 容 简 介 编辑 Ruby是为了让程序设计更快乐而开发的程序语言.Ruby具有"彻底面向对象"."丰富的程序库"."亲和力高的直观语法形式"等多项特征,但这些特征并不是Ruby的目的,只能说是为了让程序设计更有趣而开发的手段罢了. 希望本书的读者,都能从使用Ruby的过程中,找到属于自己的"兴趣"与"乐趣".──若您可以这样灵活运用,那将是本书作者无上的荣幸了. 审校者序 编辑 正如