关于自己出的题的一个解决方案修改/评测问题
  • 板块灌水区
  • 楼主Redl1ght_S
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/30 13:50
  • 上次更新2024/7/30 15:02:18
查看原帖
关于自己出的题的一个解决方案修改/评测问题
1057897
Redl1ght_S楼主2024/7/30 13:50

捞下同学做的加强版:https://www.luogu.com.cn/discuss/873061
我做的原版题目: https://www.luogu.com.cn/problem/U457567

不太形式化题意:类似一个加密程序(加强版加上了一个解密)

输入一棵有 6363 个节点的完全二叉树的所有节点(保证第一层有 202^0 个节点,第二层有 212^1 个节点,以此类推直到第 66 层有 252^5 个节点),每个节点有一个编号 ii。

加密方式如下:把这棵完全二叉树按后序遍历排序之后,把输入的字符串按 asciiascii 编码成一个整数列表 NN,连续访问列表 NN 6363 次,QQ 表示第 QQ 次询问。然后访问第 QQ 个遍历后的节点字符,将节点的原编号 +31+31 转换为 asciiascii(即为节点字符),将原来的字符转化为节点字符。

举例:假设需要加密的数据为 #!",每位的 asciiascii 为:32 _{32},#35_{35},!33_{33},"34_{34};后序遍历后的完全二叉树节点编号后是 ......(省略50位) 32 35 34 33...... 那么加密后的数据为 )*,+。

输入格式:
第 11 行输入一个整数 TT,代表询问组数。
第 22 到 64T+164T+1 行每 6464 行输入以下内容:

  • 完全二叉树的第 ii 个节点的左节点 lil_i 和右节点 rir_i。(第 11 到 6363 行,用数字编号表示,在每个询问中第 ii 行的节点编号即为 ii)
  • 需要加密的字符串(第 6464 行)

输出格式:
输出一共 TT 行。
每一行输出加密后的字符串。

部分代码(帮改改,完整代码要私信)


struct treeNode{
	char pre, post;
}TREE[70];
string operate_string;
vector<char> backed_tree;

void post_order(int x){
	.....
   // 节点转后续遍历储存到 backed_tree
}

string ecr(string o){
	char ans[70] = {}; 
	for(int i=0; i<sizeof(o); ++i){
		ans[i] = '?';
	}
	for(int i=0; i<sizeof(o); ++i){
		for(int j=0; i<backed_tree.size(); ++j){
		 	char ch = (char)backed_tree[j];
		 	if(o[i] == (char)j+1)
		 		ans[i] = backed_tree[j];
	    }
	}
	stringstream res;
	for(int i=0; i<sizeof(o); ++i)
		res << ans[i];
	return sstream.str(res);
}
       
int main(void){
    ......
   // 输入
}

学校训练题在这里放代码会被爆切的

(不对这话好熟悉)

2024/7/30 13:50
加载中...