原来爱才是最不重要的。

博客讲述了两个朋友的爱情故事,一个因母亲不喜欢妻子而离婚,另一个因距离远而分手。还指出身边很多人因父母不同意、条件差异等原因放弃爱情,强调除爱情外,工作、地位等都很重要,爱情成了最易舍弃的。

我的一个朋友最近才和妻子离婚了,我们都觉得奇怪,他的妻子是在他最困难的时候走近他的,在他被所有的人抛弃的时候向他伸出爱之手的,这一路的风风雨雨是我们所看到过的,这一路的艰难困苦也是我们所共同目睹的。

而现在,在他妻子的努力下,他的生活慢慢的好了,乡下的父母也接到城里来了,他却和妻子离婚了,他告诉我们,他没得选择,他的母亲极不喜欢他的妻子,他只能在母亲与妻子中选择一个,而且他说,母亲只能有一个,妻子却可以再一次的选择。

我约他的妻子喝过一次茶,温温柔柔的小女子,满眼的忧伤让人顿生无数怜爱。我试着问她离婚的原因,小女子只是含着泪摇头“我做不到他母亲所要求的媳妇。”然后无语。我接触过她的前任婆婆,一个很蛮横的堂客们。我也知道她对媳妇的所谓之的要求,在她家做客的时候,我满耳朵听到的都是她对这个媳妇的挑拨。

而这个小女子居然就这样平平静静的走出了她付出了无数的家庭,而这个男人居然就这样放弃了曾对他有恩的一个小女子,原因只是他太爱她,但是在母亲与妻子中他只能选择一个。

又有一个朋友与远方的他相爱了,相互间的吸引激起了无数的火花,每个深夜,彼此间的电波交流,彼此心与心的呼喊。她告诉我,他是她所遇到过的最能让她心动的男子,而他却是我网络上的一个朋友,于是我也经常听到他在告诉过我,他惊叹今日今时才遇到他心中的女子。

两个相爱的人,恨不能穿越千山万水分分相守,电话电波已经无法承载他们的爱情,每月的电话费也让他们节衣缩食。于是,我说你们上网吧,来我的婚姻物语版吧,写你们的相思,写你们的爱恋。

这样我每次上网时总能看到他们在彼此写着一些只有对方才看得懂的文字,当然这些文字会被扫掉的,每当这时,我总会复制下来,日子久了,他们的文字居然让我整理出了几万字的情语情话。

就在我准备将这些文字整理发表时,他们突然的从版面上消失了,而且告诉我永远不会来了,因为他们永远的结局了。我很莫明其妙,因为他们之间的深情曾经深深的感动着我,他们彼此的依恋曾让我在无数个夜里落泪。这样相爱的两个人居然说结束就结束了。

我问为什么,两个人同时告诉我,因为彼此距离太远了,他不可能放弃一切到她的城市来,而她也抛不下所有去他的身边。就这样两个人因为距离慢慢的放手,慢慢的任一段爱消失了。

身边还有许多这样的例子,身边还有许多这样的朋友,看他们相爱的时候春花秋月,牵手相拥,恨不能生生世世相守。而结束的时候往往会有这样与那样的原因,有的说因为父母不同意,不想伤父母的心;有的说两个人的条件相差太多,有的人说年龄相差太多,有的人说距离相差太远……

而且这许许多多的原因都是很重要的,父母不同意以后的家庭关系会搞不好,两个人条件相差太多会让以后的生活不和,年龄是最大的问题,相差太多思想没办法沟通,距离怎么能让爱相守呢,还是找个身边的人相爱现实的多……

是啊,有这么多的问题摆在面前,这相爱的两个人怎么能不就结束了呢。只是当初相爱时这一切不是明摆的吗?为什么要等到爱深了,情浓了,离不得,弃伤心的时候了才将这一切又重新摆放出来将自己的爱情打得粉碎?

是啊,这一切的一切都很重要,父母重要,工作重要,地位重要,身份重要,房子重要,朋友重要……这么重要的东西,一样也不能放弃,这么重要的东西,舍了一样生活这会变得艰难了。只有爱情是最不重要的,只有爱情是最容易舍弃的,因了任何一个原因,我们都可以放弃爱情,管他曾经的山盟海誓,管他以前的花前月下,管他彼此的难舍难分,管他痛哭与眼泪,舍了就舍了,弃了就弃了。

原来除了爱情以外,什么都是重要的,原来什么都重要,只有爱情是最不重要的……

“专情枝”:是一根有两个分岔的树枝,只有当两个分岔上连接的枝条传过来的情话都是“”的时候,这根枝条的根部才传出“”;否则树枝根部传出的是“”。 “博枝”:也是一根有两个分岔的树枝,只有当两个分岔上连接的枝条传过来的情话都是“”的时候,这根枝条的根部才传出“”;否则树枝根部传出的都是“”。 “情变枝”:是没有分岔的一根直枝,如果一端接到“”,另一端必须传出“”;反之如果一端接到“”,另一端则会传出“”。 慧娘将这些树枝摆放在院子里,布了一个“情阵”,先选一根特殊的枝条作为初试一枝,从这枝条的根部开始,扩散开去,令它们根枝相连。然后她在末梢的枝杈旁随意写下“”或“”。现在请你写个程序帮她算出来,在初始一枝的根部,她能得到“”还是“”? 输入格式: 输入在第一行中给出正整数 N(≤30),是慧娘制作的情枝数量。这里假设她将所有的情枝从 1 到 N 做好了编号。随后 N 行,第 i 行给出第 i 枝的描述,格式为 类型 左分枝连接的编号 右分枝连接的编号 其中 类型 为 1 代表专情、2 代表博、3 代表情变。当然如果是情变枝,则后面跟的是其唯一末端连接的情枝编号,并没有两个分枝的信息。如果一个分枝是末梢,并没有连接其它枝条,则对应编号为 0。 接下来一行中给出正整数 K(≤30),是慧娘询问的次数。以下 K 行,每行给出一个由 0 和 1 组成的字符串,其中 0 表示“”,1 表示“”—— 这是慧娘从左到右在每个枝杈末梢处写下的。(注意:“从左到右”的意思是,我们从初试一枝出发去遍历所有枝条的末梢时,总是遵循先遍历左边情阵、再遍历右边情阵的顺序) 输出格式: 对慧娘的每个询问,如果她在初始一枝的根部能得到“”,就输出 Ai;否则输出 BuAi。 输入样例: 6 2 6 4 1 0 0 3 1 2 0 0 3 0 1 5 2 5 11111 00000 11100 10011 01100 输出样例: BuAi Ai Ai BuAi BuAi
最新发布
11-18
我们来分析这个问题。 这是一个树形结构上的递归逻辑计算问题。每根“情枝”可以看作一个节点,其行为由类型决定: - **专情枝(1)**:只有当左右两个子节点都返回“”时,才返回“”,否则返回“”。 → `left == && right == ` - **博枝(2)**:只要有一个是“”,就返回“”;只有当两个都是“”时才返回“”。 → `left == && right == ` 才返回“”,否则“” - **情变枝(3)**:只有一个子节点,输出与输入相反。 → `!child_value` 末梢节点(即左/右编号为0)是叶子节点,它们的值由输入字符串中按**从左到右先序遍历顺序**给出的“/”序列决定。 关键点: - “从左到右”的定义是:从初试一枝开始进行**先序遍历(根->左->右)**,收集所有末端(即连接编号为0的方向)的值。 - 我们需要对每次询问的01串,按照这个顺序赋给每一个末梢。 - 然后自底向上计算每个节点的输出值,终得到根节点(第1根)的输出。 ### 解决步骤: 1. 构建节点结构体,记录类型和左右连接。 2. 建立树结构(注意:输入第 i 行对应第 i 号节点) 3. 使用 DFS 先序遍历整棵树,收集所有末端(叶子)位置,并记录访问顺序。 4. 对于每一次查询,将01串依次赋给这些末端位置。 5. 再次使用 DFS 计算每个节点的输出值(递归返回 bool 值,true 表示“”)。 6. 输出根节点结果。 --- 下面是完整的 C++ 实现代码: ```cpp #include <iostream> #include <vector> #include <string> #include <map> using namespace std; struct Branch { int type; int left; int right; }; vector<Branch> branches; // branches[i] 表示编号为 i 的枝 (1-indexed) vector<bool> leafValues; // 按照先序遍历顺序存储末端(叶子)的值 int leafIndex; // 当前取哪个叶子值 // 先序遍历,收集末端(叶子)出现的顺序(用于确定输入字符串如何分配) void collectLeaves(int node) { if (node == 0) return; const Branch& b = branches[node]; if (b.type == 3) { // 情变枝:只有一个子节点(在 left 字段),但当前节点是叶子 collectLeaves(b.left); } else { // 专情或博:有两个分支 if (b.left == 0) { // 左边是末端 leafValues.push_back(false); // 占位 } else { collectLeaves(b.left); } if (b.right == 0) { // 右边是末端 leafValues.push_back(false); // 占位 } else { collectLeaves(b.right); } } } // DFS 计算当前节点的输出值(true: , false: ) bool compute(int node, const string& input) { if (node == 0) return false; // 安全默认 const Branch& b = branches[node]; if (b.type == 3) { bool childVal = compute(b.left, input); return !childVal; // 情变:取反 } else { bool leftVal, rightVal; if (b.left == 0) { leftVal = (input[leafIndex++] == '1'); } else { leftVal = compute(b.left, input); } if (b.right == 0) { rightVal = (input[leafIndex++] == '1'); } else { rightVal = compute(b.right, input); } if (b.type == 1) { // 专情枝:都爱才 return leftVal && rightVal; } else { // 博枝:都爱才,否则 return !(leftVal == false && rightVal == false); } } } int main() { int N; cin >> N; branches.resize(N + 1); // 1-indexed for (int i = 1; i <= N; ++i) { int t, l, r = 0; cin >> t >> l; if (t != 3) { cin >> r; } else { r = 0; // 情变枝没有右分支 } branches[i] = {t, l, r}; } // 收集叶子节点的数量(通过先序遍历顺序) leafValues.clear(); collectLeaves(1); // 从初试一枝(节点1)开始 int K; cin >> K; while (K--) { string input; cin >> input; leafIndex = 0; // 重置叶子索引 bool result = compute(1, input); if (result) { cout << "Ai" << endl; } else { cout << "BuAi" << endl; } } return 0; } ``` --- ### 解释: - `collectLeaves` 函数用于预先确定有多少个末端节点,以及它们在先序遍历中的顺序。虽然我们没直接用它赋值,但它帮助我们理解结构。 - 实际上,在 `compute` 中我们一边遍历一边读取输入字符串中的字符(通过 `leafIndex` 指针),确保“从左到右”符合先序顺序。 - 情变枝只使用左字段作为子节点,右字段无意义(设为0)。 - 所有末端(编号为0的连接)被视为输入点,其值来自输入字符串中的下一位。 --- ### 正确性验证(以样例为例): - 节点1: 类型2(博),左=6,右=4 - 节点2: 类型1(专情),左=0,右=0 → 两个末端 - 节点3: 类型3(情变),左=1 → 连接到节点1 - 节点4: 类型2(博),左=0,右=0 → 两个末端 - 节点5: 类型3(情变),左=0 → 一个末端 - 节点6: 类型1(专情),左=5,右=2 → 子节点非末端 构建关系较复杂,但从节点1开始先序遍历,末端访问顺序应为: 1. 节点6 的左(节点5)→ 节点5 是末端(左=0)→ 第一个叶 2. 节点6 的右(节点2)→ 节点2 的左 → 第二个叶 3. 节点2 的右 → 第三个叶 4. 节点1 的右(节点4)→ 节点4 的左 → 第四个叶 5. 节点4 的右 → 第五个叶 共5个末端,所以输入字符串长度为5。 对于输入 `"11111"`,每个末端都是“”,后根节点输出“” → 输出 `BuAi`,匹配样例。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值