机缘
最初成为创作者的初心
- 实战项目中的经验分享
- 日常学习过程中的记录
- 通过文章进行技术交流
- 算法竞赛碰撞思维火花
- 文化学习勇攀群山之巅
- 在团结互助中卓越成长
收获
在创作的过程中都有哪些收获
- 获得了巨佬们的指点。
- 获得了正向的反馈,如赞、评论、阅读量等。
- 认识和哪些志同道合的领域同行:比如数学竞赛。
- 实践中活跃思维。
日常
当前创作和竞赛、学习是什么样的关系
例如:
- 创作是你生活的一部分了(不止在 CSDN 上,因为是竞赛生)。
- 有限的精力下,如何平衡竞赛、学习:提升专注度,竞赛、学习相互切磋。
- 学好文科来确保成绩,学好理科来提升竞赛水平。…
成就
过去写得最好的一段代码是什么? 贴出来
#include <bits/stdc++.h>
using namespace std;
struct E {
long long v, w;
};
vector<E> e[200005];
long long d[100005];
void dfs(long long father, long long root, long long yh) {
d[root] = yh;
for (long long i = 0; i < e[root].size(); i++) {
long long v = e[root][i].v, w = e[root][i].w;
if (v == father) {
continue;
}
dfs(root, v, yh ^ w);
}
return ;
}
long long n;
// trie tree:-------------------------------------
long long p[3100005][2], cnt = 1;
bool vis[3100005];
void tree_insert(long long x) {
long long point = 1;
for (long long i = 31; i >= 0; i--) {
bool num = (1LL << i) & x; // The number of this postion.
if (p[point][num] == 0) {
cnt++;
p[point][num] = cnt;
}
point = p[point][num];
//cout << i << "--\n";
}
vis[point] = 1;
return ;
}
long long Find(long long x) {
long long point = 1;
long long ans = 0;
for (long long i = 31; i >= 0; i--) {
bool num = (1 << i) & x;
if (p[point][!num] != 0) {
point = p[point][!num];
ans = ans | (1 << i);
} else if (p[point][num] != 0) {
point = p[point][num];
//ans = ans | (1 << i);
} else {
return ans;
}
}
return ans;
}
//---------------------------------------------
long long ans;
int main() {
// freopen("data1.in", "r", stdin);
// freopen("ans.out", "w", stdout);
cin >> n;
for (long long i = 1; i <= n - 1; i++) {
long long u, v, w;
cin >> u >> v >> w;
e[u].push_back((E){v, w});
e[v].push_back((E){u, w});
}
dfs(0, 1, 0);
for (long long i = 1; i <= n; i++) {
tree_insert(d[i]);
}
for (long long i = 1; i <= n; i++) {
ans = max(ans, Find(d[i]));
}
cout << ans << "\n";
//cout << d[3] << "=7\n";
return 0;
}
/*
4
1 2 3
2 3 4
2 4 6
7
*/
憧憬
拿到竞赛一等奖以上,并保证文化课裸分上好学校。
Tips