题意:

给出一个n个数字的序列,寻找最大的k,使得将n个数字划分为k个不重叠的子区间,每个子区间的异或值为0。

思路:

动态规划,看代码就懂~

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 111111
int vis[maxn*10],num[maxn],pre[maxn],res[maxn];
int main()
{int n;while(scanf("%d",&n)!=EOF){int i;pre[0] = 0;res[0] = 0;memset(pre,0,sizeof(pre));memset(res,0,sizeof(res));memset(vis,-1,sizeof(vis));vis[0] = 0;for(i=1;i<=n;i++){scanf("%d",&num[i]);}int maxnum  = 0;for(i=1;i<=n;i++){if(num[i]==0){res[i]  = res[i-1]+1;}else{int temp = num[i]^pre[i-1];// printf("111 %d %d %d %d\n",num[i],pre[i-1],vis[temp],temp);if(vis[temp]==-1) res[i] = res[i-1];//else if(vis[temp]==-1 && pre[i-1]==num[i]) res[i] = 1;else res[i] = max(res[vis[temp]]+1,res[i-1]);}if(res[i]>maxnum) maxnum = res[i];pre[i] = pre[i-1]^num[i];vis[pre[i]] = i;//    printf("%d\n",pre[i]);//  printf("%d\n",maxnum);}printf("%d\n",maxnum);}return 0;
}

我自己写的暴力:

#include<cstdio>
#include<cstring>int n;
int num[150000];
int _xor[150000];
int vis[150000];void init()
{_xor[1]=num[1];for(int i=2;i<=n;i++)_xor[i]=_xor[i-1]^num[i];return ;
}int main()
{while(scanf("%d",&n)!=EOF){memset(vis,0,sizeof(vis));int ans=0;for(int i=1;i<=n;i++){scanf("%d",&num[i]);if(num[i]==0){vis[i]=1;ans++;}else if(num[i]==num[i-1] && vis[i-1]!=1){vis[i]=vis[i-1]=1;ans++;}}init();for(int i=1;i<=n;i++){if(vis[i]==1)continue;for(int j=i+1;j<=n && vis[j]!=1;j++){//int tmp=num[i]^_xor[i]^_xor[j];int tmp=_xor[i-1]^_xor[j];if(tmp==0)ans++;}}printf("%d\n",ans);}return 0;
}

滴滴笔试编程题第一题相关推荐

  1. 2018美团点评编程题第一题

    晚上参加美团的笔试,今天从坐了一天的车,到了学校匆忙吃了饭,然后就开始了.确实是,脑子有点不灵光. 编程的第一题: 给定一个序列,输出这个序列子串的和为K的倍数的子串的长度,如果有重复,输出最大长度. ...

  2. 四川大学线下编程比赛第一题:数字填充

    四川大学线下编程比赛第一题:数字填充 公布公司: 有 效 期: CSDN 2014-09-27至2015-09-26 难 度 等 级: 答 题 时 长: 编程语言要求: 120分钟 C C++ Jav ...

  3. CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》

    金色十月线上编程比赛第一题:小女孩数数 题目详情: [金色十月线上编程比赛规则] 一个小女孩正在用左手手指数数,从1数到n.她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5.接下 ...

  4. leetcode剑指offe刷题-第一题-用两个栈实现队列

    leetcode剑指offe刷题-第一题 文章目录 leetcode剑指offe刷题-第一题 前言 一.用两个栈实现队列 1.思路 2.代码如下 总结 前言 记录一下自己刷算法的路程. leetcod ...

  5. 计算机三级 网络技术 大题第一题 答题技巧分享

    最近在准备计算机三级网络技术考试,一边刷题,一边看了一些大佬的答题技巧分享,感觉挺有用的,就自己总结了一下给大家分享一下. 这一篇是大题第一题的技巧分享 先放个例题: 拿到题目的第一步,先把子网掩码转 ...

  6. 奇虎360_2017校园招聘笔试编程题第一题

    今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第一题. 1. 题目 2. 输入输出及样例 3. 我的思路 这题应该看题目理解一下就有思路,最简单粗暴的就是创建一个二维数组in ...

  7. 0919滴滴笔试编程题代码+思路

    第一题垃圾分类 首先根据题意,一堆垃圾最多只有两个约束条件,相当于一个点最多连两条边,那么这个图就只存在孤立点.单链和简单的环,这里我们需要注意,有奇数个点的环是非法的 首先是解除非法的情况,就是说对 ...

  8. 京东校招java工程师_2017年京东校招Java研发笔试编程第1题

    笔试的时候,最后因为没有约分,结果线上编译总是过不了,好可惜~ package com.bjut.SaiMa.JingDong; import java.util.ArrayList; import ...

  9. 记录——《C Primer Plus (第五版)》第九章编程练习第一题

    第一题:设计函数min(x,y),返回两个double数值中较小的数值,同时 用一个简单的驱动程序测试该函数. # include <stdio.h>void min(double, do ...

最新文章

  1. 【综述专栏】关于AI Architecture未来的一些思考
  2. python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案...
  3. linux删除libc.so.6
  4. Laravel框架与ThinkPHP一些不同点
  5. spring依赖注入_Spring依赖注入
  6. Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)
  7. leetcode 67 Add Binary
  8. python和excel能结合应用吗_通过Python在Excel中使用机器学习
  9. ToolBar控件详解
  10. paip.python错误解决12
  11. 【Web学习笔记】easyui框架
  12. nginx的cgi模块
  13. 【嵌入式基础常识】单片机
  14. h5让图片转圈的动效,让页面动起来
  15. virt-install命令详解
  16. paradigm画时序图 visual_Visual Paradigm使用技巧:从用户故事中生成序列图
  17. 博弈论--耶鲁大学公开课
  18. 使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能
  19. 分布式系统可用性和可靠性的区别,可用性如何计算,以及如何做到高可用和高可靠
  20. 由于找不到VCRUNTIME140.dll,无法继续执行代码问题解决

热门文章

  1. uboot更改gpio电平_ECBM系列教程4:单片机的手和脚——GPIO
  2. 目标跟踪:CamShift算法
  3. win32异常处理函数
  4. 关于控制台程序的一些想法
  5. Delphi中判断控件的详细类型
  6. delphi接口基本学习摘录
  7. Linux下常见文件解压方法及命令
  8. Vulnhub靶机渗透之 AI: Web: 1
  9. OpenGL生成的法线贴图并增加光照
  10. MyBatis-Plus 高级功能 —— 乐观锁插件