上一页 1 ··· 49 50 51 52 53 54 55 56 57 ··· 67 下一页
摘要: 给定后序中序求先序,树中每个结点的值各不相同。 unordered_map<char,int> pos; string in,post; int n; void build(int inl,int postl,int n) { if(!n) return; char root=post[postl+ 阅读全文
posted @ 2021-01-25 10:48 Dazzling! 阅读(265) 评论(0) 推荐(0)
摘要: 根据先序和中序确定后序。树中每个结点的值都是不同的,不需要特判了。 递归构造完左右子树后输出根即为后序。 string pre,in; unordered_map<char,PII> tree; unordered_map<char,int> pos; int build(int prel,int 阅读全文
posted @ 2021-01-25 09:34 Dazzling! 阅读(89) 评论(0) 推荐(0)
摘要: 树的前序遍历,水题~ unordered_map<char,char> l,r,fa; set<char> node; int n; void preorder(char root) { if(root == '*') return; cout<<root; preorder(l[root]); p 阅读全文
posted @ 2021-01-24 23:13 Dazzling! 阅读(42) 评论(0) 推荐(0)
摘要: 数据结构里的经典题了,不过这次是借助$STL$而不是花哨的指针 ^_^ 用一个$pair$数组来存树,结点上存的是下标,最后输出结果时要将下标对应成值,恰好我们存了中序遍历的下标和值的对应关系,于是最后输出层序遍历结果时将下标转成对应中序序列中的值就好了。 ps:树中每个结点的值都是不同的。 con 阅读全文
posted @ 2021-01-24 20:07 Dazzling! 阅读(36) 评论(0) 推荐(0)
摘要: 水题,水题,又读了假题@_@ 判断系数是否构成回文,数组大小开到$30$就够了,$n$最大为$10^9$,而基数最小为$2$,\(2^{30} > 10^9\),即最多有$30$位。 相同数码,基数越大,按权展开值越大,即为的单调性。 反之,相同数值,基数越小,位数越多。 ps: $\color$加 阅读全文
posted @ 2021-01-24 13:02 Dazzling! 阅读(43) 评论(0) 推荐(0)
摘要: 状态数为$2^{100-1}$,显然不能用二进制枚举了。 观察到下列性质: 交换区间反转的顺序对最终结果是没有影响的 对同一个区间进行两次以上的反转是多余的 由此,问题就转化成立求需要被反转的区间的集合。 我们先考虑一下最左端的硬币,包含该硬币的区间只有一个,因此如果该硬币和目标状态一致,我们就不需 阅读全文
posted @ 2021-01-24 10:20 Dazzling! 阅读(62) 评论(0) 推荐(0)
摘要: 本以为是个打表题,没想到竟是个规律题orz 打表 const int N=110; int a[N][N]; int n; void init() { for(int i=0;i<100;i++) { a[i][i]=1; for(int j=i+1;j<100;j++) a[i][j]=a[i][ 阅读全文
posted @ 2021-01-24 09:33 Dazzling! 阅读(71) 评论(0) 推荐(0)
摘要: 又是熟悉的毒瘤进制转换题(雾) 注意点: 结果均在$b$进制下表示 十六进制注意$10 \sim 15$用$A \sim F$表示嗷 int b; char get(int x) { if(x>=0 && x<=9) return '0'+x; return 'A'+x-10; } string b 阅读全文
posted @ 2021-01-21 18:49 Dazzling! 阅读(62) 评论(0) 推荐(0)
摘要: 比较好想的浮点数二分吧,虽然提前知道标签是二分>_< const int N=1e5+10; double a[N]; int n,m; bool check(double mid) { int cnt=0; for(int i=0;i<n;i++) cnt+=int(a[i]/mid); retu 阅读全文
posted @ 2021-01-21 18:04 Dazzling! 阅读(56) 评论(0) 推荐(0)
摘要: 挺好想的二分题吧。 const int N=1e5+10; PII a[N]; int n,k; bool check(int mid) { int res=0; for(int i=0;i<n;i++) res+=(a[i].fi/mid)*(a[i].se/mid); return res>=k 阅读全文
posted @ 2021-01-21 17:51 Dazzling! 阅读(33) 评论(0) 推荐(0)
上一页 1 ··· 49 50 51 52 53 54 55 56 57 ··· 67 下一页