题意:

给出一个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. Nature综述: 地球上细菌和古菌的生物膜丰度
  2. 相同的研究手段,相反的研究结论例子
  3. UA MATH566 统计理论7 另一个例子:二项检验
  4. Mysql Type中的all和index区别?
  5. 【ZOJ - 3715】Kindergarten Election(枚举得票数,贪心)
  6. java 序列化保存_保存到二进制/序列化Java
  7. SQL SERVER 高级数据库脚本编程
  8. WPF窗口允许通过拖放进行切换
  9. 基于Servlet3.0的编程式SpringMVC实例详解
  10. Oracle查看表空间使用率SQL脚本
  11. oracle递归查询出现死循环,oracle 递归查询求出起点、终点问题的解决方法
  12. 数据量太大?用数据库水平切分搞定!
  13. 移动html触摸效果,JS实现移动端触屏拖拽功能
  14. 从 Chrome 谈到 Adobe
  15. Insurance 项目——Mybetis-generator生成
  16. 【DBN预测】基于粒子群算法优化DBN深度置信网络实现数据预测matlab代码
  17. 单目标跟踪算法:SiamRPN++
  18. Vue 拦截器 多接口调用 实现唯一loding效果 解决同步接口调用loding闪动
  19. 微信支付分 - 完结支付分订单API
  20. node-red教程6 串口控件的使用

热门文章

  1. 科大星云诗社动态20210409
  2. 云炬Qtpy5开发与实战笔记 3PyCharm添加PyUIC扩展——将.ui文件转换成.py文件
  3. 一场惊心动魄的国际黑客入侵保卫战
  4. 开源!mathAI 手写拍照自动能解高数题,还不快试试?
  5. 用sql从文件中恢复数据库
  6. 谈谈网站设计时图片的使用
  7. Mybatis Plus为什么提供BaseMapper和IService两个相似CRUD操作的接口?
  8. DM8168心得之SD卡快速分区制作
  9. 计算机电子与网络技术,电子信息工程与计算机网络技术
  10. 【译】Writing a Simple Linux Kernel Module