Redian新闻
>
堆肥用的菌在哪里可以买到
avatar
堆肥用的菌在哪里可以买到# gardening - 拈花惹草
d*g
1
How to find maximum path sum in a binary tree.
The path need not be a top-bottom, can start and end nodes need not be root
or leaf, path can start in left/right subtree and end in right/left subtree
wrt any node.
Careercup上看到的,感觉里面没有正确的解答。求版里大神指教。题目里如果没有最
后一句话就好办了,加上最后那句话感觉好复杂。
avatar
a*0
2
假设老公司已经搞好了perm + 140 然后跳槽了
此时身份还是h1b吧 所以新公司要先办h1b transfer?
之后新公司有多少时间可以重新办perm+140 才能保证之前的排期不失效呢?(就是保
留priority date)?
绿卡小白 刚开始了解 大家见笑了。。谢谢!!
avatar
l*a
3
万能的花版,有人自己做堆肥吗?堆肥用的菌在哪里可以买到?
avatar
f*e
4
你的标题中BST有误... 这题是G家面我的题....
用f[i]表示根节点为i的子树种的max path sum.
那么
f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
sum.
代码也很好些
int solve(TreeNode *root, int &g) {
if (!root) {
g = 0;
return 0;
}
int f = 0;
int leftG = 0, rightG = 0;
if (root->left) f = max(f, solve(root->left, leftG));
if (root->right) f = max(f, solve(root->right, rightG);
f = max(f, leftG + rightG + root->val);
g = root->val + max(leftG, rightG);
return f;
}
int solve(TreeNode *root) {
int g;
return solve(root, g);
}

root
subtree

【在 d*********g 的大作中提到】
: How to find maximum path sum in a binary tree.
: The path need not be a top-bottom, can start and end nodes need not be root
: or leaf, path can start in left/right subtree and end in right/left subtree
: wrt any node.
: Careercup上看到的,感觉里面没有正确的解答。求版里大神指教。题目里如果没有最
: 后一句话就好办了,加上最后那句话感觉好复杂。

avatar
B*y
5
旧公司的140批了你的PD就保住了
avatar
A*t
6

不需要特意买菌,加点泥土和compost、manure就行

【在 l******a 的大作中提到】
: 万能的花版,有人自己做堆肥吗?堆肥用的菌在哪里可以买到?
avatar
p*2
7

这个貌似很牛逼。

【在 f****e 的大作中提到】
: 你的标题中BST有误... 这题是G家面我的题....
: 用f[i]表示根节点为i的子树种的max path sum.
: 那么
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: 其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
: sum.
: 代码也很好些
: int solve(TreeNode *root, int &g) {
: if (!root) {
: g = 0;

avatar
a*0
8
谢谢!
然后PD终身有效是嘛?
那新公司是要h1b transfer和绿卡都要搞一遍?

【在 B*****y 的大作中提到】
: 旧公司的140批了你的PD就保住了
avatar
l*a
9
谢谢建议,我来试试

【在 A**t 的大作中提到】
:
: 不需要特意买菌,加点泥土和compost、manure就行

avatar
l*8
10
binary tree 还是BST?
每个node上的值一定是正数吗?

root
subtree

【在 d*********g 的大作中提到】
: How to find maximum path sum in a binary tree.
: The path need not be a top-bottom, can start and end nodes need not be root
: or leaf, path can start in left/right subtree and end in right/left subtree
: wrt any node.
: Careercup上看到的,感觉里面没有正确的解答。求版里大神指教。题目里如果没有最
: 后一句话就好办了,加上最后那句话感觉好复杂。

avatar
r*r
11
理论上说140 以内180天公司都有可能revoke申请的是吗? 但是如果不把公司惹毛了,
一般公司也不会去追债对吧...? 我还开了个帖子问新公司如果不办新的perm/140, 那
H1b可以凭以前approved 140 无限renew下去吗?
avatar
f*n
12
不需要。
碳氮氧气水加温度就行

【在 l******a 的大作中提到】
: 万能的花版,有人自己做堆肥吗?堆肥用的菌在哪里可以买到?
avatar
l*8
13
如果每个node的值都是负数,maximum sum path是个empty path(sum是0)吗?

【在 l*********8 的大作中提到】
: binary tree 还是BST?
: 每个node上的值一定是正数吗?
:
: root
: subtree

avatar
w*p
14
140只要批准了,哪怕被revoke也无所谓,你的PD都保住了。
avatar
L*h
15
我买过。home depot,ace,卖土的地方都有。amazon也有。不过没觉得放和不放有多
大区别。

★ 发自iPhone App: ChineseWeb 16

【在 l******a 的大作中提到】
: 万能的花版,有人自己做堆肥吗?堆肥用的菌在哪里可以买到?
avatar
g*u
16

赞!
flexme 介意和大家分享下面经不?

【在 f****e 的大作中提到】
: 你的标题中BST有误... 这题是G家面我的题....
: 用f[i]表示根节点为i的子树种的max path sum.
: 那么
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: 其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
: sum.
: 代码也很好些
: int solve(TreeNode *root, int &g) {
: if (!root) {
: g = 0;

avatar
b*l
17
我的理解在这个帖子里:
http://www.mitbbs.com/article_t/EB23/32249381.html
1. 只要不涉及fraud,即使公司withdraw你的140,排期也还保留。这个没有所谓来得
及来不及,你已经拥有那个PD了
2. 至于H1b身份,则需要赶快transfer以及renew,如果可以的话,因为有140可以一延
三年。尤其是你的6年h1b已经用了4/5年的。
3. 假如你可以确认原公司永远不会withdraw你approved 140,我的理解是即使你新公
司不给立即办绿卡你也可以用那个140一直renew h1b下去。
avatar
l*a
18
好的,谢谢

【在 f*****n 的大作中提到】
: 不需要。
: 碳氮氧气水加温度就行

avatar
l*8
19
是吗,你测试了?
avatar
l*a
20
好像是说加了会快一些

【在 L*********h 的大作中提到】
: 我买过。home depot,ace,卖土的地方都有。amazon也有。不过没觉得放和不放有多
: 大区别。
:
: ★ 发自iPhone App: ChineseWeb 16

avatar
l*8
21
我在纸上算出来的是4. 是对的。
avatar
L*8
22
加 coffee ground,Starbuck 免费给

:万能的花版,有人自己做堆肥吗?堆肥用的菌在哪里可以买到?

【在 l******a 的大作中提到】
: 好像是说加了会快一些
avatar
c*t
23
赞,太简洁了。

【在 f****e 的大作中提到】
: 你的标题中BST有误... 这题是G家面我的题....
: 用f[i]表示根节点为i的子树种的max path sum.
: 那么
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: 其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
: sum.
: 代码也很好些
: int solve(TreeNode *root, int &g) {
: if (!root) {
: g = 0;

avatar
L*h
24
我的感受是是:一开始堆得快因为兴奋所以翻得勤劳比例也调得认真。后来堆得慢了因
为懒了翻得少,西瓜皮什么的也懒得切小块了。中间又时候加有时候不加倒是没觉得有
差别。不过天冷的时候好像会比不加好,也可能是心理作用。

★ 发自iPhone App: ChineseWeb 16

【在 l******a 的大作中提到】
: 好像是说加了会快一些
avatar
l*8
25
赞! 思路和代码都很简洁。
不过我觉得有个bug:
g = root->val + max(leftG, rightG);
应该为:
g = max(0, root->val + max(leftG, rightG));
test case:
1
\
5
\
-7
答案应该是6,本程序返回5.
另外, if (root->left)也可以去掉。
试在你的基础上修改如下:
int solve(TreeNode *root, int &g) {
if (!root) {
g = 0;
return 0;
}
int leftG = 0, rightG = 0;
int f = max(solve(root->left, leftG),solve(root->right, rightG);
f = max(f, leftG + rightG + root->val);
g = max(0, root->val + max(leftG, rightG));
return f;
}
int solve(TreeNode *root) {
int g;
return solve(root, g);
}

【在 f****e 的大作中提到】
: 你的标题中BST有误... 这题是G家面我的题....
: 用f[i]表示根节点为i的子树种的max path sum.
: 那么
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: 其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
: sum.
: 代码也很好些
: int solve(TreeNode *root, int &g) {
: if (!root) {
: g = 0;

avatar
L*9
26
我就堆在那儿

【在 l******a 的大作中提到】
: 万能的花版,有人自己做堆肥吗?堆肥用的菌在哪里可以买到?
avatar
p*2
27
这题应该加到OJ上去。
avatar
y*2
28
我猜MM说的是酵素,酵素可以自己做,方法很简单,水:果皮蔬菜:红糖=60:30:10就
可以了,我最近做了一大瓶,果皮放多了一点,放在室内一个星期了,可能是温度高的
缘故,现在看见很
多小泡泡冒上来,据说还要等3到6个月才可以用,网上有很多视频可以看看:https://
www.youtube.com/watch?v=L0SuixidiEE

【在 l******a 的大作中提到】
: 万能的花版,有人自己做堆肥吗?堆肥用的菌在哪里可以买到?
avatar
f*e
29
啊,确实 那个地方是个bug。

【在 l*********8 的大作中提到】
: 赞! 思路和代码都很简洁。
: 不过我觉得有个bug:
: g = root->val + max(leftG, rightG);
: 应该为:
: g = max(0, root->val + max(leftG, rightG));
: test case:
: 1
: \
: 5
: \

avatar
r*e
30
太厉害了 什么都会做啊


: 我猜MM说的是酵素,酵素可以自己做,方法很简单,水:果皮蔬菜:红糖=60:
30:10就

: 可以了,我最近做了一大瓶,果皮放多了一点,放在室内一个星期了,可能是温
度高的

: 缘故,现在看见很

: 多小泡泡冒上来,据说还要等3到6个月才可以用,网上有很多视频可以看看:
https://

: www.youtube.com/watch?v=L0SuixidiEE

: https://c1.staticflickr.com/1/591/33861538286_52040ec003.jpg



【在 y****2 的大作中提到】
: 我猜MM说的是酵素,酵素可以自己做,方法很简单,水:果皮蔬菜:红糖=60:30:10就
: 可以了,我最近做了一大瓶,果皮放多了一点,放在室内一个星期了,可能是温度高的
: 缘故,现在看见很
: 多小泡泡冒上来,据说还要等3到6个月才可以用,网上有很多视频可以看看:https://
: www.youtube.com/watch?v=L0SuixidiEE

avatar
c*t
31
java 因为不能传地址,好像写不出来,只能对g和f各写一个method

【在 f****e 的大作中提到】
: 你的标题中BST有误... 这题是G家面我的题....
: 用f[i]表示根节点为i的子树种的max path sum.
: 那么
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: 其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
: sum.
: 代码也很好些
: int solve(TreeNode *root, int &g) {
: if (!root) {
: g = 0;

avatar
j*4
32
学者园丁

//

【在 y****2 的大作中提到】
: 我猜MM说的是酵素,酵素可以自己做,方法很简单,水:果皮蔬菜:红糖=60:30:10就
: 可以了,我最近做了一大瓶,果皮放多了一点,放在室内一个星期了,可能是温度高的
: 缘故,现在看见很
: 多小泡泡冒上来,据说还要等3到6个月才可以用,网上有很多视频可以看看:https://
: www.youtube.com/watch?v=L0SuixidiEE

avatar
f*e
33
可以返回一个结构体,比如C++的话返回pair

【在 c********t 的大作中提到】
: java 因为不能传地址,好像写不出来,只能对g和f各写一个method
avatar
l*a
34
谢谢推荐,我去年也做了一瓶,正巧抓住你问个问题,呵呵!里边没有完全腐烂的果肉
怎么办,滤出来还是都浇到地里去。

//

【在 y****2 的大作中提到】
: 我猜MM说的是酵素,酵素可以自己做,方法很简单,水:果皮蔬菜:红糖=60:30:10就
: 可以了,我最近做了一大瓶,果皮放多了一点,放在室内一个星期了,可能是温度高的
: 缘故,现在看见很
: 多小泡泡冒上来,据说还要等3到6个月才可以用,网上有很多视频可以看看:https://
: www.youtube.com/watch?v=L0SuixidiEE

avatar
l*a
35
这一行看不大懂。
f = max(f, leftG + rightG + root->val);
不应该是f = max(f, max(leftG, rightG) + root->val);吗?

【在 f****e 的大作中提到】
: 你的标题中BST有误... 这题是G家面我的题....
: 用f[i]表示根节点为i的子树种的max path sum.
: 那么
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: 其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
: sum.
: 代码也很好些
: int solve(TreeNode *root, int &g) {
: if (!root) {
: g = 0;

avatar
f*e
36
看这个式子:
f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
leftG就是g[left[i]], rightG就是g[right[i]]
思路就是当考虑根节点为i的子树的max path sum是,有3种情况:
1. path不经过根节点,那么它要么完全在左子树中,要么完全在右子树中
a。 如果完全在左子树中,那么就是f[left[i]]
b。如果完全在右子树中,那么就是f[right[i]]
2.如果path经过根结点,那么答案就是g[left[i]]+g[right[i]]+w[i]
g[left[i]]表示从i的左结点开始,一直往下走,能够达到的max sum
g[right[i]]类似

【在 l*****a 的大作中提到】
: 这一行看不大懂。
: f = max(f, leftG + rightG + root->val);
: 不应该是f = max(f, max(leftG, rightG) + root->val);吗?

avatar
d*g
37

这样貌似就对了~~学习了!

【在 l*********8 的大作中提到】
: 赞! 思路和代码都很简洁。
: 不过我觉得有个bug:
: g = root->val + max(leftG, rightG);
: 应该为:
: g = max(0, root->val + max(leftG, rightG));
: test case:
: 1
: \
: 5
: \

avatar
l*a
38
明白了,题意理解错了。
path可以有任意节点起始,任意节点终止。

【在 f****e 的大作中提到】
: 看这个式子:
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: leftG就是g[left[i]], rightG就是g[right[i]]
: 思路就是当考虑根节点为i的子树的max path sum是,有3种情况:
: 1. path不经过根节点,那么它要么完全在左子树中,要么完全在右子树中
: a。 如果完全在左子树中,那么就是f[left[i]]
: b。如果完全在右子树中,那么就是f[right[i]]
: 2.如果path经过根结点,那么答案就是g[left[i]]+g[right[i]]+w[i]
: g[left[i]]表示从i的左结点开始,一直往下走,能够达到的max sum
: g[right[i]]类似

avatar
s*k
39
sorry,自己算错了

【在 l*********8 的大作中提到】
: 是吗,你测试了?
avatar
m*k
40
seems a tree version of SubArrayLargestSum problem.

root
subtree

【在 d*********g 的大作中提到】
: How to find maximum path sum in a binary tree.
: The path need not be a top-bottom, can start and end nodes need not be root
: or leaf, path can start in left/right subtree and end in right/left subtree
: wrt any node.
: Careercup上看到的,感觉里面没有正确的解答。求版里大神指教。题目里如果没有最
: 后一句话就好办了,加上最后那句话感觉好复杂。

avatar
l*i
41
这道题是问max path, 还是max subtree?
用简单的case test
4
/ \
5 6
如果是max path, 我感觉应该返回 10,你的代码返回的是15

【在 l*********8 的大作中提到】
: 赞! 思路和代码都很简洁。
: 不过我觉得有个bug:
: g = root->val + max(leftG, rightG);
: 应该为:
: g = max(0, root->val + max(leftG, rightG));
: test case:
: 1
: \
: 5
: \

avatar
l*8
42
path 是5 4 6
看题目:
“The path need not be a top-bottom, can start and end nodes need not be
root
or leaf, path can start in left/right subtree and end in right/left subtree
wrt any node.”

【在 l*****i 的大作中提到】
: 这道题是问max path, 还是max subtree?
: 用简单的case test
: 4
: / \
: 5 6
: 如果是max path, 我感觉应该返回 10,你的代码返回的是15

avatar
l*i
43
知道了,谢谢

subtree

【在 l*********8 的大作中提到】
: path 是5 4 6
: 看题目:
: “The path need not be a top-bottom, can start and end nodes need not be
: root
: or leaf, path can start in left/right subtree and end in right/left subtree
: wrt any node.”

avatar
h*f
44
#include
struct Node {
int value;
Node* pLeft;
Node* pRight;
};
int findMaxSubTree(Node* pNode, int& maxSoFar) {
if (!pNode) return 0;
int leftSum = findMaxSubTree(pNode->pLeft, maxSoFar);
int rightSum = findMaxSubTree(pNode->pRight, maxSoFar);
int currentSum = pNode->value + std::max(0, leftSum) + std::max(0,
rightSum);
maxSoFar = std::max(currentSum, maxSoFar);
return currentSum;
}
int main() {
Node node4 = {4, NULL, NULL};
Node node3 = {3, NULL, NULL};
Node node6 = {6, &node4, &node3};
Node nodeMinus7 = {-7, &node6, NULL};
Node node5 = {5, &nodeMinus7, NULL};
int maxSoFar = 0;
findMaxSubTree(&node5, maxSoFar);
std::cout << maxSoFar << std::endl;
}
Just curious, what test cases are required to ensure the correctiveness if
the interviewer asks?
avatar
S*t
45
这题是我最近几次面别人挺喜欢用的一道

【在 f****e 的大作中提到】
: 你的标题中BST有误... 这题是G家面我的题....
: 用f[i]表示根节点为i的子树种的max path sum.
: 那么
: f[i]=max(f[left[i]], f[right[i]], g[left[i]]+g[right[i]]+w[i])
: 其中w[i]表示i节点的权重,g[x]表示从节点x,只能往下走,能够走出的最大的path
: sum.
: 代码也很好些
: int solve(TreeNode *root, int &g) {
: if (!root) {
: g = 0;

avatar
e*s
46
它是伟大的

【在 l*********8 的大作中提到】
: 赞! 思路和代码都很简洁。
: 不过我觉得有个bug:
: g = root->val + max(leftG, rightG);
: 应该为:
: g = max(0, root->val + max(leftG, rightG));
: test case:
: 1
: \
: 5
: \

avatar
i*e
47
How about binary tree with all nodes with negative values?
avatar
s*0
48
In that case, i think it should return the max one among all the negative.

【在 i**********e 的大作中提到】
: How about binary tree with all nodes with negative values?
avatar
l*8
49
我之前也问了这个问题。
Flexme的程序(和我修改的程序)在这种情况下返回empty path, sum为0.
如果不允许empty path, 那么程序要略作修改,要多加几句。

【在 i**********e 的大作中提到】
: How about binary tree with all nodes with negative values?
avatar
p*2
50

我也在考虑这个问题。程序需要改动一下。

【在 l*********8 的大作中提到】
: 我之前也问了这个问题。
: Flexme的程序(和我修改的程序)在这种情况下返回empty path, sum为0.
: 如果不允许empty path, 那么程序要略作修改,要多加几句。

avatar
i*e
51
好题。OJ 已经加上这题了。
要改动的话只要把 f 初始为 INT_MIN 就可以了。至于空树的情况,特别处理一下就行
avatar
p*2
52

我写了一下,大数据有run time error.
int[] dfs(TreeNode root)
{
int[] ans=new int[2];
Arrays.fill(ans, Integer.MIN_VALUE);
if(root!=null)
{
int[] l_ans=dfs(root.left);
int[] r_ans=dfs(root.right);

ans[0]=Math.max(l_ans[0], r_ans[0]);
ans[1]=Math.max(l_ans[1], r_ans[1]);
ans[1]=ans[1]<0?root.val:root.val+ans[1];

int m=root.val;
if(l_ans[1]>0)
m+=l_ans[1];
if(r_ans[1]>0)
m+=r_ans[1];

ans[0]=Math.max(ans[0], m);

}
return ans;
}

【在 p*****2 的大作中提到】
:
: 我也在考虑这个问题。程序需要改动一下。

avatar
l*a
53
int maxPathSum(TreeNode *root) {
int d = 0;
return maxPathSum(root, d);
}

int maxPathSum(TreeNode *node, int &depth){
if(node == NULL){
depth = 0;
return INT_MIN;
}

int dl = 0;
int fl = maxPathSum(node->left, dl);
int dr = 0;
int fr = maxPathSum(node->right, dr);

int f = max(fl, max(fr, dl + node->val + dr));
depth = max(max(dl, dr) + node->val, 0);
return f;
}
avatar
h*n
54
贴一个通过OJ的版本,能处理全部负数的情况
楼主的版本很牛逼,不过有个大的bug,就是递归的结束条件没法达到,因为调用前判
断是不是指针为空了,不为空才调用,但是需要为空的时候才能达到递归结束条件
g才能正确的自底向上
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxPathSum(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int res;
int g;

res = helper(root, g);
return res;
}

int helper(TreeNode * root, int & g)
{
if(!root)
{
g = 0;
return 0;
}

int leftG, rightG;
int maxSum = INT_MIN;

int leftMax = helper(root->left, leftG);
int rightMax = helper(root->right, rightG);
if(!root->left&&!root->right)
maxSum = root->val;
else if(!root->left)
maxSum = max(rightMax, root->val + leftG + rightG);
else if(!root->right)
maxSum = max(leftMax, root->val + leftG + rightG);
else maxSum = max(max(leftMax,rightMax),root->val + leftG + rightG);

g = max(0, root->val+max(leftG, rightG));
return maxSum;
}
};
avatar
i*e
55
这是因为stack overflow了。
我已经重新设计那个最大的large case,你程序现在可以过了。

【在 p*****2 的大作中提到】
:
: 我写了一下,大数据有run time error.
: int[] dfs(TreeNode root)
: {
: int[] ans=new int[2];
: Arrays.fill(ans, Integer.MIN_VALUE);
: if(root!=null)
: {
: int[] l_ans=dfs(root.left);
: int[] r_ans=dfs(root.right);

avatar
p*2
56

多谢大牛。

【在 i**********e 的大作中提到】
: 这是因为stack overflow了。
: 我已经重新设计那个最大的large case,你程序现在可以过了。

avatar
m*2
57
写个为代码, currentMax 是地址
F(node n, currentMax)
if n == Null
return -MAX_INT
leftMax = F(n.left, currentMax )
rightMax = F(n.right, currentMax )
currentMax = max(n.value,
n.value+ leftMax,
n.value + rightMax,
n.value+ leftMax + rightMax,
currentMax , )
return max(0, n.value+ leftMax, n.value + rightMax,n.value )
avatar
d*4
58
mark
avatar
d*4
59
我在java里面设置了一个class property,每次更新那个property,等到结果出来再把
那个property初始化。
我试着把f和g单独写,leetcode上面large judge过不了,因为递归套递归,O(n^2)了
吧。

【在 c********t 的大作中提到】
: java 因为不能传地址,好像写不出来,只能对g和f各写一个method
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。