10410 这题说的是给了一棵多叉树的 bfs遍历轨迹 和dfs 遍历 轨迹 在父节点向叶子节点扩展的时候优先遍历编号较小的节点。我还原出这课树特殊判定

根据bfs的顺序来建立这课树,用一个队列安排要构造的这课子树 条件是这棵树拥有孩子节点,判定这个点的下一层孩子ij(i<j)节点之间的在dfs中  的间隔节点 将这些点分配给i节点因为可以知道这些节点肯定是i的孩子节点或者孙子节点 如果这些在dfs中 间 隔 的 节 点 个 数 大 于 0 就 把 i 点 推 入 队 列 当 中 ( 因 为 i 节 点有孩子节点) 这样不断的去构造这棵树的子树,还有就是当一层当中只有一个节点的时候且这个节点的编号比孩子节点来得大的时候这样就得特判 因为像我那样就直接将他们归为一层了要进行特判的条件他们有同样的祖先且前者大于后者这样后者就一定是前者的孩子而不可能是后者的兄弟节点

#include <string.h>
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int maxn = ;
vector<int> map[maxn];
int dfs[maxn],bfs[maxn],n;
int locdfs[maxn],locbfs[maxn],per[maxn];
int work(int a, int b){
int num = ;
for( int i = locdfs[a]+ ; i<n; ++ i ){
if( per[dfs[i]] != per[a] || dfs[i] == b )break;
per[dfs[i]] = a;
num++;
}
return num;
}
void solve(){ queue<int>Q;
Q.push(dfs[]);
while(!Q.empty()){
int t = Q.front();
Q.pop();
int start = locdfs[t] + ;
int F = locbfs[dfs[start]];
for( int i = F ; i <n ; i++ ){
int t1 = bfs[i],t2 = bfs[i+];
if(per[t1]!=t)break;
if(t1>t2){
int num=work(t1,);
if(num>) Q.push(t1);
map[t].push_back(t1); break;
}
int num = work(t1,t2);
if(num>) Q.push(t1);
map[t].push_back(t1);
}
}
}
int main(){ while( scanf("%d",&n) == ){ for(int i = ; i <= n ; ++ i)
map[i].clear();
for(int i = ; i < n ; ++ i){
scanf("%d",&bfs[i]);
locbfs[bfs[i]] = i ;
}
bfs[n] = ;
for(int i = ; i < n ; ++ i){
scanf("%d",&dfs[i]);
locdfs[dfs[i]] = i ;
}
dfs[n] = ;
for( int i = ; i <=n ; ++ i)
per[i] = dfs[];
solve();
for( int i = ; i <= n ; ++ i){
printf("%d:",i);
for( int j = ; j <map[i].size() ; ++ j )
printf(" %d",map[i][j]);
printf("\n");
}
} return ;
}
/*
4 3 5 1 2 8 6 7 9 10
4 3 1 7 10 2 6 9 5 8
*/

10895 这题比较简单说的是给了一个矩阵然后转置后输出

#include <cstdio>
#include <string.h>
#include <iostream>
#include <queue>
using namespace std;
const int maxn=;
struct node{
int column,value;
node(int a= ,int b= ){
column = a; value = b;
}
bool operator <(const node &A)const{
return column>A.column;
}
}T[maxn];
priority_queue<node>ans[][maxn];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)==){
for( int i = ; i <= n ; ++ i ) while(!ans[][i].empty())ans[][i].pop();
for( int i = ; i <= m ; ++i ) while(!ans[][i].empty())ans[][i].pop();
for( int i= ;i <= n ; i++){
int num;
scanf("%d",&num);
for( int j = ; j < num ; ++ j)
scanf("%d",&T[j].column);
for( int j = ; j< num ; ++ j)
scanf("%d",&T[j].value);
for( int j= ; j< num ; ++ j)
ans[][i].push(T[j]);
}
for( int i = ; i <=n ; ++ i ){
while(!ans[][i].empty()){
node t = ans[][i].top(); ans[][i].pop();
ans[][t.column].push(node(i,t.value));
}
}
printf("%d %d\n",m,n);
for( int i = ; i <= m ; i++ ){
int num = ans[][i].size();
for( int j = ; j< num ; j++){
T[j]=ans[][i].top(); ans[][i].pop();
}
printf("%d",num);
for( int j = ; j < num ; ++ j){
printf(" %d",T[j].column);
}
printf("\n");
if(num>){
for( int j = ; j < num- ; ++ j)
printf("%d ",T[j].value);
printf("%d",T[num-].value);
}
printf("\n");
}
} return ;
}

AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) Chapter 3. Data Structures Fundamental Data Structures的更多相关文章

  1. AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 6. Mathematical Concepts and Methods

    uva 106 这题说的是 说计算 x^2 + y^2  =  z^2  xyz 互质 然后计算个数和 在 N内 不在 勾股数之内的数的个数 然后去找需要的 维基百科上 看到 另 n*m*2 =b   ...

  2. Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 5. Dynamic Programming

    10192 最长公共子序列 http://uva.onlinejudge.org/index.php?option=com_onlinejudge& Itemid=8&page=sho ...

  3. Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 7. Graph Algorithms and Implementation Techniques

    uva 10803 计算从任何一个点到图中的另一个点经历的途中必须每隔10千米 都必须有一个点然后就这样 floy 及解决了 ************************************* ...

  4. Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines 论文研读

    摘要 本文提出了一种用于训练支持向量机的新算法:序列最小优化算法(SMO).训练支持向量机需要解决非常大的二 次规划(QP)优化问题.SMO 将这个大的 QP 问题分解为一系列最小的 QP 问题.这些 ...

  5. [UVA] 11991 - Easy Problem from Rujia Liu? [STL应用]

    11991 - Easy Problem from Rujia Liu? Time limit: 1.000 seconds Problem E Easy Problem from Rujia Liu ...

  6. uva--11991 - Easy Problem from Rujia Liu?(sort+二分 map+vector vector)

    11991 - Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for e ...

  7. UVA-11991 Easy Problem from Rujia Liu?

    Problem E Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for ...

  8. UVa 11991:Easy Problem from Rujia Liu?(STL练习,map+vector)

    Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...

  9. UVA 11991 Easy Problem from Rujia Liu?(vector map)

    Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...

随机推荐

  1. Linux渗透之反弹Shell

    前言 当我们在渗透Linux主机时,反弹一个交互的shell是非常有必要的.在搜索引擎上搜索关键字“Linux 反弹shell”,会出现一大堆相关文章,但是其内容不但雷同,而且都仅仅是告诉我们执行这个 ...

  2. 使用disavled属性锁定input内容不可以修改后,打印获取不到对应的值

    当我们需要锁定input内容不让修改时,可以使用disabled="disabled"和readonly="readonly", 官方的解释是:disabled ...

  3. Python 核心编程

    第3章 Python 基础 1.语句和语法: 注释(#): 继续换句话说跨行(\):有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,如小括号.中括号,花括号等,另 ...

  4. ubuntu下绝对路径和相对路径的问题

     绝对路径与相对路径 除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意.因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relativ ...

  5. Scikit-learn技巧(拓展)总结

    Scikit-learn技巧(拓展)总结 本文转载自:http://www.jianshu.com/p/516f009c0875 最近看了<Python数据挖掘入门与实战>,网上有说翻译地 ...

  6. 蓝桥杯 - G将军有一支训练有素的军队 - [树形DP]

    G将军有一支训练有素的军队,这个军队除开G将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是G将军).现在G将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加敢死 ...

  7. HDU 4352 - XHXJ's LIS - [数位DP][LIS问题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  8. ORACLE中Drop table cascade constraints之后果.

    当你要drop一个table时,如果删除table的动作会造成trigger或constraint产生矛盾,系统会出现错误警告的讯息而不会允许执行..一个极简单的例子,例如你有一个员工基本资料表,上面 ...

  9. element 表格元素 超链接

    1.在循环体中的事件绑定 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  10. Drip is a launcher for the Java Virtual Machine that provides much faster startup times than the java command. The drip script is intended to be a drop-in replacement for the java command, only faster

    小结: 1.初始化jvm: 2.第一次唤醒java命令不快,后续快: https://github.com/elastic/logstash Advanced: Drip Launcher Drip  ...