关注
第一题 #include<cstdio> #include<list> using namespace std; typedef struct Vertex { list<int> houji; }Vertex; bool fetched[100020]; Vertex v[100020]; int routine[100020]; int maxLayer = 0; int bfs(int start, int layer) { if (layer > maxLayer) maxLayer = layer; fetched[start] = true; routine[start] = 0; for (auto it = v[start].houji.begin(); it != v[start].houji.end(); it++) { int no = *it; routine[start] += bfs(no, layer+1); } routine[start] += v[start].houji.size() * 2; return routine[start]; } int main() { int n; scanf("%d", &n); for (int i = 0; i < n-1; i++) { int from, to; scanf("%d %d", &from, &to); v[from].houji.push_back(to); } bfs(1, 0); printf("%d", routine[1] - maxLayer); return 0; } 第二题 #include<cstdio>
#include<unordered_map>
#include<list>
using namespace std;
int a[100040];
unordered_map<int, int> state;
unordered_map<int, int> moreThanTNum;
int writeState(int *a, int idx, int k, int t) { unordered_map<int, int> digitNum; for (int i = idx; i < idx + k; i++) { int digit = a[i]; if (digitNum.find(digit) == digitNum.end()) { digitNum[digit] = 1; } else { digitNum[digit]++; } } moreThanTNum[idx] = 0; for (auto it = digitNum.begin(); it != digitNum.end(); it++) { state[it->first] = it->second; if (it->second >= t) { moreThanTNum[idx]++; } } return 0;
}
int main() { int n, k, t; scanf("%d %d %d", &n, &k, &t); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } int result = 0; writeState(a, 0, k, t); if (moreThanTNum[0] >= t) { result++; } for (int idx = 1; idx <= n - k; idx++) { int deleteDigit = a[idx - 1]; int addDigit = a[idx + k - 1]; state[deleteDigit]--; if (state[deleteDigit] == t - 1) { moreThanTNum[idx] = moreThanTNum[idx - 1] - 1; } else { moreThanTNum[idx] = moreThanTNum[idx - 1]; } if (state.find(addDigit) == state.end()) { state[addDigit] = 1; } else { state[addDigit]++; } if (state[addDigit] == t) { moreThanTNum[idx] = moreThanTNum[idx] + 1; } if (moreThanTNum[idx] >= 1) { result++; } } printf("%d\n", result); return 0;
}
第二题O(n)的解法一直不对,直到交卷两分钟后找出来了bug……
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
01-13 09:50
哈尔滨工业大学(威海) Java
双尔:果然人与人之间的悲伤无法互通,我倒是希望能找到一个朝九晚六的工作 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
12590次浏览 171人参与
# 你的mentor是什么样的人? #
51197次浏览 723人参与
# 程序员找工作至少要刷多少题? #
21472次浏览 276人参与
# 我和mentor的爱恨情仇 #
106328次浏览 950人参与
# 论秋招对个人心气的改变 #
13700次浏览 192人参与
# 机械人避雷的岗位/公司 #
44237次浏览 311人参与
# 为了减少AI幻觉,你注入过哪些设定? #
6203次浏览 185人参与
# 秋招落幕,你是He or Be #
54274次浏览 618人参与
# 校招第一份工作你干了多久? #
136690次浏览 597人参与
# 高薪高压 vs 低薪wlb,你怎么选? #
47436次浏览 291人参与
# 设计人如何选offer #
189741次浏览 868人参与
# 考公VS就业,你怎么选? #
92002次浏览 507人参与
# 职场上哪些行为很加分? #
322635次浏览 3603人参与
# 你的秋招进行到哪一步了 #
2531214次浏览 23253人参与
# 牛客AI体验站 #
7914次浏览 212人参与
# 机械人还在等华为开奖吗? #
312208次浏览 1582人参与
# 秋招投递记录 #
380975次浏览 3204人参与
# 12306一秒售罄,你抢到回家的票了吗? #
2343次浏览 52人参与
# 我现在比当时_,你想录用我吗 #
9536次浏览 131人参与
# 重来一次,我还会选择这个专业吗 #
411340次浏览 3898人参与
查看13道真题和解析