关注
#include<iostream> #include<vector> using namespace std; //此题有一个要点,就是只要找到了某个区间xor为0,那么后面的数据就跟 //前面的没有关系了。因为区间不能重叠 int main() { int n; cin >> n; vector<int> input(n, 0); for (int i = 0; i < n; i++) cin >> input.at(i); //数据输入 int k = 0; vector<int> num; //用于记录当前所有的可能值 for (int i = 0; i < n; i++) { if (input.at(i) == 0) { k += 1; num.clear(); continue; // 跟样例一个道理,0 就直接是0。。。。 } if (input.at(i)>0) { int flag = 0; for (int j = 0; j < num.size(); j++) { num.at(j) = num.at(j) ^ input.at(i); if (num.at(j) == 0) { flag = 1; k += 1; num.clear(); } } //此处我举个例子,比如找第一个区间,现在循环到了第五位,有几种情况? // input.at(0) ^ input.at(1) ^ input.at(2) ^ input.at(3) ^ input.at(4) // input.at(1) ^ input.at(2) ^ input.at(3) ^ input.at(4) // input.at(2) ^ input.at(3) ^ input.at(4) // input.at(3) ^ input.at(4) // input.at(4) // 这样得到5个数字。来了第6个数,分别于他们xor,发现哪个结果是0,就找 // 到本个区间了,然后将记录清空,继续下一个 if (flag == 0) num.push_back(input.at(i)); } } cout << k << endl; return 0; }
查看原帖
点赞 1
相关推荐
查看3道真题和解析 投递华为等公司10个岗位 >
点赞 评论 收藏
分享
投递宇通等公司7个岗位 >
点赞 评论 收藏
分享
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
1268687次浏览 18125人参与
# 2023届毁约公司名单 #
103009次浏览 457人参与
# OPPO开奖 #
52036次浏览 703人参与
# 和牛牛一起刷题打卡 #
36448次浏览 2521人参与
# 机械制造笔面经 #
2289次浏览 74人参与
# 你觉得今年秋招难吗 #
343479次浏览 6085人参与
# 不去互联网可以去金融科技 #
43418次浏览 471人参与
# 实习时,大家都怎么称呼自己的mentor? #
20600次浏览 236人参与
# 你的简历改到第几版了 #
344970次浏览 5158人参与
# 写简历别走弯路 #
354440次浏览 4477人参与
# 你最多能接受一周加班几个小时 #
5871次浏览 60人参与
# 硬件人的简历怎么写 #
83722次浏览 873人参与
# 参加过提前批的机械人,你们还参加秋招么 #
15392次浏览 368人参与
# 研究所VS国企,该如何选 #
50989次浏览 577人参与
# 来聊聊你目前的求职进展 #
224117次浏览 2818人参与
# 现在还是0offer,延毕还是备考 #
425471次浏览 4947人参与
# 浅聊一下我实习的辛苦费 #
113135次浏览 1133人参与
# 非技术薪资爆料 #
82340次浏览 1028人参与
# 你觉得通信/硬件有必要实习吗? #
31296次浏览 542人参与
# 数据人的面试交流地 #
217014次浏览 4451人参与
# 软件开发笔面经 #
20597次浏览 523人参与
# 2022毕业生求职现身说法 #
27442次浏览 383人参与