襄阳网站制作公司有哪些lisp 网站开发

pingmian/2025/10/8 20:52:27/文章来源:
襄阳网站制作公司有哪些,lisp 网站开发,网站开发需要多少钱价格,wordpress近期评论L2-001. 紧急救援 作为一个城市的应急救援队伍的负责人#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候#xff0c;你…L2-001. 紧急救援 作为一个城市的应急救援队伍的负责人你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候你的任务是带领你的救援队尽快赶往事发地同时一路上召集尽可能多的救援队。 输入格式 输入第一行给出4个正整数N、M、S、D其中N2N500是城市的个数顺便假设城市的编号为0~(N-1)M是快速道路的条数S是出发地的城市编号D是目的地的城市编号。第二行给出N个正整数其中第i个数是第i个城市的救援队的数目数字间以空格分隔。随后的M行中每行给出一条快速道路的信息分别是城市1、城市2、快速道路的长度中间用空格分开数字均为整数且不超过500。输入保证救援可行且最优解唯一。 输出格式 第一行输出不同的最短路径的条数和能够召集的最多的救援队数量。第二行输出从S到D的路径中经过的城市编号。数字间以空格分隔输出首尾不能有多余空格。 输入样例 4 5 0 3 20 30 40 10 0 1 1 1 3 2 0 3 3 0 2 2 2 3 2输出样例 2 60 0 1 3 1 //2017-03-172 #include iostream3 #include cstdio4 #include cstring5 #include queue6 #include stack7 8 using namespace std;9 10 const int N 510;11 const int inf 0x3f3f3f3f;12 int n, m, G[N][N], dis[N], vis[N], pre[N], way[N], maxpeo[N];13 14 int dijkstra(int s, int d)15 {16 for(int i 0; i n; i)17 {18 dis[i] G[s][i];19 if(G[s][i] ! inf){20 pre[i] s;21 way[i];22 }23 }24 pre[s] -1;25 dis[s] 0;26 vis[s] 1;27 way[s] 1;28 int mindis, u;29 maxpeo[s] G[s][s];30 for(int i 0; i n; i)31 {32 mindis inf;33 for(int j 0; j n; j)34 if(!vis[j] dis[j] mindis)35 {36 mindis dis[j];37 u j;38 }39 vis[u] 1;40 for(int v 0; v n; v)41 {42 if(vis[v] || G[u][v]inf)continue;43 if(dis[v] dis[u]G[u][v]){44 dis[v] dis[u]G[u][v];45 pre[v] u;46 maxpeo[v] maxpeo[u] G[v][v];47 way[v] way[u];48 }else if(dis[v] dis[u]G[u][v]){49 way[v] way[u];50 if(maxpeo[v] maxpeo[u]G[v][v]){51 maxpeo[v] maxpeo[u] G[v][v];52 pre[v] u;53 }54 }55 }56 }57 return maxpeo[d]maxpeo[s];58 }59 60 int main()61 {62 int s, d, u, v, w;63 while(cinnmsd)64 {65 for(int i 0; i n; i)66 {67 for(int j 0; j n; j)68 G[i][j] inf;69 vis[i] 0;70 dis[i] inf;71 pre[i] -1;72 way[i] 0;73 maxpeo[i] 0;74 cinG[i][i];75 maxpeo[i] G[i][i];76 }77 for(int i 0; i m; i)78 {79 cinuvw;80 G[u][v] G[v][u] w;81 }82 int peo dijkstra(s, d);83 int pr d;84 stackint sk;85 while(pr ! s)86 {87 sk.push(pr);88 pr pre[pr];89 }90 coutway[d] peoendl;91 couts;92 int o;93 while(!sk.empty())94 {95 o sk.top();96 cout o;97 sk.pop();98 }99 coutendl; 100 } 101 102 return 0; 103 } View Code   L2-002. 链表去重 给定一个带整数键值的单链表L本题要求你编写程序删除那些键值的绝对值有重复的结点。即对任意键值K只有键值或其绝对值等于K的第一个结点可以被保留。同时所有被删除的结点必须被保存在另外一个链表中。例如另L为21→-15→-15→-7→15则你必须输出去重后的链表21→-15→-7、以及被删除的链表-15→15。 输入格式 输入第一行包含链表第一个结点的地址、以及结点个数N 105 的正整数。结点地址是一个非负的5位整数NULL指针用-1表示。 随后N行每行按下列格式给出一个结点的信息 Address Key Next 其中Address是结点的地址Key是绝对值不超过104的整数Next是下一个结点的地址。 输出格式 首先输出去重后的链表然后输出被删除结点组成的链表。每个结点占一行按输入的格式输出。 输入样例 00100 5 99999 -7 87654 23854 -15 00000 87654 15 -1 00000 -15 99999 00100 21 23854输出样例 00100 21 23854 23854 -15 99999 99999 -7 -1 00000 -15 87654 87654 15 -1 1 #include iostream2 #include cstdio3 #include cstring4 #include algorithm5 #include list6 7 using namespace std;8 9 const int N 1e610; 10 int ne[N], ke[N], book[10005]; 11 struct node 12 { 13 int add, key, next; 14 void setNode(int a, int k, int n){ 15 this-add a; 16 this-key k; 17 this-next n; 18 } 19 }; 20 21 int main() 22 { 23 int s, n, pos; 24 while(cinsn) 25 { 26 int ad; 27 for(int i 0; i n; i) 28 { 29 cinad; 30 cinke[ad]ne[ad]; 31 } 32 listnode l1, l2; 33 listnode::iterator it; 34 node tmp; 35 memset(book, 0, sizeof(book)); 36 pos s; 37 book[abs(s)] 1; 38 tmp.setNode(pos, ke[pos], ne[pos]); 39 l1.push_back(tmp); 40 pos ne[pos]; 41 while(pos ! -1) 42 { 43 if(book[abs(ke[pos])]){ 44 if(!l2.empty()){ 45 tmp l2.back(); 46 tmp.next pos; 47 l2.pop_back(); 48 l2.push_back(tmp); 49 } 50 tmp.setNode(pos, ke[pos], ne[pos]); 51 l2.push_back(tmp); 52 }else{ 53 book[abs(ke[pos])] 1; 54 if(!l1.empty()){ 55 tmp l1.back(); 56 tmp.next pos; 57 l1.pop_back(); 58 l1.push_back(tmp); 59 } 60 tmp.setNode(pos, ke[pos], ne[pos]); 61 l1.push_back(tmp); 62 } 63 pos ne[pos]; 64 } 65 tmp l1.back(); tmp.next -1; 66 l1.pop_back();l1.push_back(tmp); 67 for(it l1.begin(); it ! l1.end(); it){ 68 if(it-next -1)printf(%05d %d %d\n, it-add, it-key, it-next); 69 else printf(%05d %d %05d\n, it-add, it-key, it-next); 70 } 71 if(!l2.empty()){ 72 tmp l2.back(); tmp.next -1; 73 l2.pop_back();l2.push_back(tmp); 74 } 75 for(it l2.begin(); it ! l2.end(); it){ 76 if(it-next -1)printf(%05d %d %d\n, it-add, it-key, it-next); 77 else printf(%05d %d %05d\n, it-add, it-key, it-next); 78 } 79 } 80 81 return 0; 82 } View Code L2-003. 月饼 月饼是中国人在中秋佳节时吃的一种传统食品不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量请你计算可以获得的最大收益是多少。 注意销售时允许取出一部分库存。样例给出的情形是这样的假如我们有3种月饼其库存量分别为18、15、10万吨总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼获得 72 45/2 94.5亿元。 输入格式 每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、以及不超过500以万吨为单位的正整数D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量以万吨为单位最后一行给出N个正数表示每种月饼的总售价以亿元为单位。数字间以空格分隔。 输出格式 对每组测试用例在一行中输出最大收益以亿元为单位并精确到小数点后2位。 输入样例 3 20 18 15 10 75 72 45输出样例 94.501 //2017-03-182 #include iostream3 #include cstdio4 #include cstring5 #include algorithm6 7 using namespace std;8 9 const int N 1005; 10 struct node{ 11 double a, b; 12 double c; 13 bool operator (const node x){ 14 return c x.c; 15 } 16 }moom[N]; 17 18 int main() 19 { 20 int n, need; 21 while(cinnneed) 22 { 23 for(int i 0; i n; i) 24 cinmoom[i].a; 25 for(int i 0; i n; i) 26 cinmoom[i].b; 27 for(int i 0; i n; i) 28 moom[i].c moom[i].b*1.0/moom[i].a; 29 sort(moom, moomn); 30 double ans 0; 31 for(int i 0; i n; i) 32 { 33 if(need moom[i].a){ 34 ans moom[i].c*need; 35 break; 36 }else{ 37 ans moom[i].b; 38 need - moom[i].a; 39 } 40 } 41 printf(%.2lf\n, ans); 42 } 43 44 return 0; 45 } View Code L2-004. 这是二叉搜索树吗 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树对于任一结点 其左子树中所有结点的键值小于该结点的键值其右子树中所有结点的键值大于等于该结点的键值其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”即将所有结点的左右子树对换位置后所得到的树。 给定一个整数键值序列现请你编写程序判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。 输入格式 输入的第一行给出正整数N1000。随后一行给出N个整数键值其间以空格分隔。 输出格式 如果输入序列是对一棵二叉搜索树或其镜像进行前序遍历的结果则首先在一行中输出“YES”然后在下一行输出该树后序遍历的结果。数字间有1个空格一行的首尾不得有多余空格。若答案是否则输出“NO”。 输入样例1 7 8 6 5 7 10 8 11输出样例1 YES 5 7 6 8 11 10 8输入样例2 7 8 10 11 8 6 7 5输出样例2 YES 11 8 10 7 5 6 8输入样例3 7 8 6 8 5 10 9 11输出样例3 NO1 //2017-03-192 #include iostream3 #include cstdio4 #include cstring5 6 using namespace std;7 8 const int N 1005;9 int bt[N], bst1[N], bst2[N], ANS[N], n, cnt;10 struct node{11 int data;12 node *lson, *rson;13 node(int d):data(d), lson(NULL), rson(NULL){}14 };15 16 class BST17 {18 public:19 node *rt;20 BST():rt(NULL){}21 void insert(int a)22 {23 node* nd new node(a);24 if(rt NULL){25 rt nd;26 }else{27 node *p rt, *q NULL;28 while(p ! NULL){29 q p;30 if(a p-data){31 p p-lson;32 }else{33 p p-rson;34 }35 }36 if(a q-data)q-lson nd;37 else q-rson nd;38 }39 }40 };41 42 void preOrder1(node* id)43 {44 if(id ! NULL)45 {46 bst1[cnt] id-data;47 cnt;48 preOrder1(id-lson);49 preOrder1(id-rson);50 }51 }52 53 void preOrder2(node* id)54 {55 if(id ! NULL)56 {57 bst2[cnt] id-data;58 cnt;59 preOrder2(id-rson);60 preOrder2(id-lson);61 }62 }63 64 void postOrder1(node* id)65 {66 if(id ! NULL){67 postOrder1(id-lson);68 postOrder1(id-rson);69 ANS[cnt] id-data;70 cnt;71 }72 }73 74 void postOrder2(node* id)75 {76 if(id ! NULL){77 postOrder2(id-rson);78 postOrder2(id-lson);79 ANS[cnt] id-data;80 cnt;81 }82 }83 84 int main()85 {86 while(cinn)87 {88 BST bst;89 for(int i 0; i n; i)90 {91 cinbt[i];92 bst.insert(bt[i]);93 }94 cnt 0;95 preOrder1(bst.rt);96 cnt 0;97 preOrder2(bst.rt);98 bool fg1 true, fg2 true;99 for(int i 0; i n; i){ 100 if(bt[i] ! bst1[i])fg1 false; 101 if(bt[i] ! bst2[i])fg2 false; 102 } 103 if(fg1){ 104 coutYESendl; 105 cnt 0; 106 postOrder1(bst.rt); 107 for(int i 0; i n; i) 108 if(i n-1)coutANS[i]endl; 109 else coutANS[i] ; 110 }else if(fg2){ 111 coutYESendl; 112 cnt 0; 113 postOrder2(bst.rt); 114 for(int i 0; i n; i) 115 if(i n-1)coutANS[i]endl; 116 else coutANS[i] ; 117 }else coutNOendl; 118 } 119 120 return 0; 121 } View Code L2-005. 集合相似度 给定两个整数集合它们的相似度定义为Nc/Nt*100%。其中Nc是两个集合都有的不相等整数的个数Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式 输入第一行给出一个正整数N50是集合的个数。随后N行每行对应一个集合。每个集合首先给出一个正整数M104是集合中元素的个数然后跟M个[0, 109]区间内的整数。 之后一行给出一个正整数K2000随后K行每行对应一对需要计算相似度的集合的编号集合从1到N编号。数字间以空格分隔。 输出格式 对每一对需要计算的集合在一行中输出它们的相似度为保留小数点后2位的百分比数字。 输入样例 3 3 99 87 101 4 87 101 5 87 7 99 101 18 5 135 18 99 2 1 2 1 3输出样例 50.00% 33.33%1 //2017-03-192 #include iostream3 #include cstdio4 #include cstring5 #include algorithm6 #include set7 8 using namespace std;9 10 int se[55][1005], cnt[55]; 11 12 double merge(int a, int b) 13 { 14 int nt 0, nc 0; 15 int cnt1 0, cnt2 0; 16 while(cnt1 cnt[a] cnt2 cnt[b]) 17 { 18 if(se[a][cnt1] se[b][cnt2]){ 19 nt; 20 cnt1; 21 }else if(se[a][cnt1] se[b][cnt2]){ 22 nt; 23 cnt2; 24 }else{ 25 nt; 26 nc; 27 cnt1; 28 cnt2; 29 } 30 } 31 if(cnt1cnt[a])nt cnt[a]-cnt1; 32 if(cnt2cnt[b])nt cnt[b]-cnt2; 33 return nc*1.0/nt; 34 } 35 36 int main() 37 { 38 int n, m, a; 39 while(cinn) 40 { 41 memset(cnt, 0, sizeof(cnt)); 42 for(int i 1; i n; i) 43 { 44 cinm; 45 setint S; 46 setint::iterator it; 47 for(int j 0; j m; j) 48 { 49 cina; 50 it S.find(a); 51 if(it S.end()){ 52 S.insert(a); 53 se[i][cnt[i]] a; 54 cnt[i]; 55 } 56 } 57 sort(se[i], se[i]cnt[i]); 58 } 59 cinm; 60 int s1, s2; 61 while(m--) 62 { 63 cins1s2; 64 double ans merge(s1, s2)*100; 65 printf(%.2lf%\n, ans); 66 } 67 } 68 69 return 0; 70 } View Code L2-006. 树的遍历 给定一棵二叉树的后序遍历和中序遍历请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。 输入格式 输入第一行给出一个正整数N30是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。 输出格式 在一行中输出该树的层序遍历的序列。数字间以1个空格分隔行首尾不得有多余空格。 输入样例 7 2 3 1 5 7 6 4 1 2 3 4 5 6 7输出样例 4 1 6 3 5 7 2 1 //2017-03-202 #include iostream3 #include cstdio4 #include cstring5 #include queue6 7 using namespace std;8 9 int post[35], in[35], ANS[35]; 10 struct node{ 11 int data; 12 node *lson, *rson; 13 node(int d):data(d), lson(NULL), rson(NULL){} 14 }; 15 16 struct BT{ 17 node *root; 18 void rebuild(int n) 19 { 20 root buildTree(post, in, n); 21 } 22 node* buildTree(int *post, int *in, int n) 23 { 24 if(n 1)return NULL; 25 node *rt new node(post[n-1]); 26 if(n 1)return rt; 27 int R; 28 for(int i 0; i n; i) 29 { 30 if(in[i] post[n-1]){ 31 R i; 32 break; 33 } 34 } 35 rt-lson buildTree(post, in, R); 36 rt-rson buildTree(postR, inR1, n-R-1); 37 return rt; 38 } 39 void levelOrder() 40 { 41 queuenode* q; 42 q.push(root); 43 node *h; 44 int cnt 0; 45 while(!q.empty()){ 46 h q.front(); 47 q.pop(); 48 ANS[cnt] h-data; 49 if(h-lson)q.push(h-lson); 50 if(h-rson)q.push(h-rson); 51 } 52 for(int i 0; i cnt; i) 53 if(i cnt-1)coutANS[i]endl; 54 else coutANS[i] ; 55 } 56 }; 57 58 int main() 59 { 60 int n; 61 while(cinn) 62 { 63 for(int i 0; i n; i) 64 cinpost[i]; 65 for(int i 0; i n; i) 66 cinin[i]; 67 BT bt; 68 bt.rebuild(n); 69 bt.levelOrder(); 70 } 71 72 return 0; 73 } View Code L2-008. 最长对称子串 对给定的字符串本题要求你输出最长对称子串的长度。例如给定Is PATTAP symmetric?最长对称子串为s PATTAP s于是你应该输出11。 输入格式 输入在一行中给出长度不超过1000的非空字符串。 输出格式 在一行中输出最长对称子串的长度。 输入样例 Is PATTAP symmetric?输出样例 111 //2017-03-192 #include iostream3 #include cstdio4 #include cstring5 6 using namespace std;7 8 string str;9 int len; 10 11 int search(int pos) 12 { 13 int l, r, ans 1; 14 l pos-1; 15 r pos1; 16 while(l 0 r len) 17 { 18 if(str[l] str[r]) 19 { 20 ans2; 21 l--; 22 r; 23 }else break; 24 } 25 return ans; 26 } 27 28 int search2(int pos) 29 { 30 int l, r, ans 0; 31 l pos; 32 r pos1; 33 while(l 0 r len) 34 { 35 if(str[l] str[r]) 36 { 37 ans2; 38 l--; 39 r; 40 }else break; 41 } 42 return ans; 43 } 44 45 int main() 46 { 47 while(getline(cin, str)) 48 { 49 len str.length(); 50 int ans 0, tmp; 51 for(int i 0; i len; i) 52 { 53 tmp search(i); 54 if(tmpans)ans tmp; 55 tmp search2(i); 56 if(tmpans)ans tmp; 57 } 58 coutansendl; 59 } 60 61 return 0; 62 } View Code L2-009. 抢红包 没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录请你统计一下他们抢红包的收获。 输入格式 输入第一行给出一个正整数N 104即参与发红包和抢红包的总人数则这些人从1到N编号。随后N行第i行给出编号为i的人发红包的记录格式如下 K N1 P1 ... NK PK 其中K0 K 20是发出去的红包个数Ni是抢到红包的人的编号Pi 0是其抢到的红包金额以分为单位。注意对于同一个人发出的红包每人最多只能抢1次不能重复抢。 输出格式 按照收入金额从高到低的递减顺序输出每个人的编号和收入金额以元为单位输出小数点后2位。每个人的信息占一行两数字间有1个空格。如果收入金额有并列则按抢到红包的个数递减输出如果还有并列则按个人编号递增输出。 输入样例 10 3 2 22 10 58 8 125 5 1 345 3 211 5 233 7 13 8 101 1 7 8800 2 1 1000 2 1000 2 4 250 10 320 6 5 11 9 22 8 33 7 44 10 55 4 2 1 3 8800 2 1 23 2 123 1 8 250 4 2 121 4 516 7 112 9 10输出样例 1 11.63 2 3.63 8 3.63 3 2.11 7 1.69 6 -1.67 9 -2.18 10 -3.26 5 -3.26 4 -12.321 //2017-03-192 #include iostream3 #include cstdio4 #include cstring5 #include algorithm6 7 using namespace std;8 9 const int N 10010; 10 struct node{ 11 int id, cnt; 12 double out, in; 13 double fin; 14 bool operator (node x) 15 { 16 if(fin x.fin)return cnt x.cnt; 17 return fin x.fin; 18 } 19 }man[N]; 20 21 int main() 22 { 23 int n, k; 24 while(cinn) 25 { 26 for(int i 1; i n; i) 27 { 28 man[i].in 0; 29 man[i].out 0; 30 man[i].cnt 0; 31 } 32 for(int i 1; i n; i) 33 { 34 man[i].id i; 35 cink; 36 int id, monky; 37 while(k--) 38 { 39 cinidmonky; 40 man[id].in monky; 41 man[i].out monky; 42 man[id].cnt; 43 } 44 } 45 for(int i 1; i n; i) 46 man[i].fin (man[i].in-man[i].out)/100; 47 sort(man1, mann1); 48 for(int i 1; i n; i) 49 printf(%d %.2lf\n, man[i].id, man[i].fin); 50 } 51 52 return 0; 53 } View Code L2-010. 排座位 布置宴席最微妙的事情就是给前来参宴的各位宾客安排座位。无论如何总不能把两个死对头排到同一张宴会桌旁这个艰巨任务现在就交给你对任何一对客人请编写程序告诉主人他们是否能被安排同席。 输入格式 输入第一行给出3个正整数N 100即前来参宴的宾客总人数则这些人从1到N编号M为已知两两宾客之间的关系数K为查询的条数。随后M行每行给出一对宾客之间的关系格式为“宾客1 宾客2 关系”其中“关系”为1表示是朋友-1表示是死对头。注意两个人不可能既是朋友又是敌人。最后K行每行给出一对需要查询的宾客编号。 这里假设朋友的朋友也是朋友。但敌人的敌人并不一定就是朋友朋友的敌人也不一定是敌人。只有单纯直接的敌对关系才是绝对不能同席的。 输出格式 对每个查询输出一行结果如果两位宾客之间是朋友且没有敌对关系则输出“No problem”如果他们之间并不是朋友但也不敌对则输出“OK”如果他们之间有敌对然而也有共同的朋友则输出“OK but...”如果他们之间只有敌对关系则输出“No way”。 输入样例 7 8 4 5 6 1 2 7 -1 1 3 1 3 4 1 6 7 -1 1 2 1 1 4 1 2 3 -1 3 4 5 7 2 3 7 2输出样例 No problem OK OK but... No way1 #include iostream2 #include cstdio3 #include cstring4 5 using namespace std;6 7 int G[105][105];8 int n;9 10 void query(int a, int b) 11 { 12 if(G[a][b] 0){ 13 for(int i 1; i n; i) 14 if(G[a][i] 1 G[b][i] 1){ 15 coutNo problemendl; 16 return; 17 } 18 coutOKendl; 19 }else if(G[a][b] 1){ 20 for(int i 1; i n; i) 21 if(G[a][i] -1 G[b][i] -1) 22 return; 23 coutNo problemendl; 24 }else if(G[a][b] -1){ 25 for(int i 1; i n; i) 26 if(G[a][i] 1 G[b][i] 1){ 27 coutOK but...endl; 28 return; 29 } 30 coutNo wayendl; 31 } 32 } 33 34 int main() 35 { 36 int m, q, u, v, re; 37 while(cinnmq) 38 { 39 memset(G, 0, sizeof(G)); 40 for(int i 0; i m; i) 41 { 42 cinuvre; 43 G[u][v] G[v][u] re; 44 } 45 while(q--) 46 { 47 cinuv; 48 query(u, v); 49 } 50 } 51 52 return 0; 53 } View Code L2-011. 玩转二叉树 给定一棵二叉树的中序遍历和前序遍历请你先将树做个镜面反转再输出反转后的层序遍历的序列。所谓镜面反转是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式 输入第一行给出一个正整数N30是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔行首尾不得有多余空格。 输入样例 7 1 2 3 4 5 6 7 4 1 3 2 6 5 7输出样例 4 6 1 7 5 3 21 //2017-03-202 #include iostream3 #include cstdio4 #include cstring5 #include queue6 7 using namespace std;8 9 int pre[35], in[35], ANS[35]; 10 struct node{ 11 int data; 12 node *lson, *rson; 13 node(int d):data(d), lson(NULL), rson(NULL){} 14 }; 15 16 struct BT{ 17 node *root; 18 void rebuild(int n) 19 { 20 root buildTree(pre, in, n); 21 } 22 node* buildTree(int *pre, int *in, int n) 23 { 24 if(n 1)return NULL; 25 node *rt new node(pre[0]); 26 if(n 1)return rt; 27 int R; 28 for(int i 0; i n; i) 29 { 30 if(in[i] pre[0]){ 31 R i; 32 break; 33 } 34 } 35 rt-lson buildTree(pre1, in, R); 36 rt-rson buildTree(pre1R, inR1, n-R-1); 37 return rt; 38 } 39 void levelOrder() 40 { 41 queuenode* q; 42 q.push(root); 43 node *h; 44 int cnt 0; 45 while(!q.empty()){ 46 h q.front(); 47 q.pop(); 48 ANS[cnt] h-data; 49 if(h-rson)q.push(h-rson); 50 if(h-lson)q.push(h-lson); 51 } 52 for(int i 0; i cnt; i) 53 if(i cnt-1)coutANS[i]endl; 54 else coutANS[i] ; 55 } 56 }; 57 58 int main() 59 { 60 int n; 61 while(cinn) 62 { 63 for(int i 0; i n; i) 64 cinin[i]; 65 for(int i 0; i n; i) 66 cinpre[i]; 67 BT bt; 68 bt.rebuild(n); 69 bt.levelOrder(); 70 } 71 72 return 0; 73 } View Code L2-012. 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种 “x is the root”x是根结点“x and y are siblings”x和y是兄弟结点“x is the parent of y”x是y的父结点“x is a child of y”x是y的一个子结点。输入格式 每组测试第1行包含2个正整数N 1000和M 20分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。之后M行每行给出一个命题。题目保证命题中的结点键值都是存在的。 输出格式 对输入的每个命题如果其为真则在一行中输出“T”否则输出“F”。 输入样例 5 4 46 23 26 24 10 24 is the root 26 and 23 are siblings 46 is the parent of 23 23 is a child of 10输出样例 F T F T1 //2017-03-202 #include iostream3 #include cstdio4 #include cstring5 6 using namespace std;7 8 struct Heap{9 int h[1010];10 int n;11 void init()12 {13 n 0;14 }15 void shiftup(int pos)16 {17 int fa, tmp;18 while(pos 0){19 fa (pos-1)/2;20 if(h[fa]h[pos]){21 tmp h[pos];22 h[pos] h[fa];23 h[fa] tmp;24 pos fa;25 }else break;26 }27 }28 void addNode(int x)29 {30 h[n] x;31 shiftup(n-1);32 }33 void show(){34 for(int i 0; i n; i)35 couth[i] ;36 coutendl;37 }38 };39 40 int main()41 {42 int n,m;43 while(cinnm)44 {45 Heap heap;46 heap.init();47 int a;48 for(int i 0; i n; i)49 {50 cina;51 heap.addNode(a);52 }53 int x, y;54 string s1, s2, s3, s4;55 while(m--)56 {57 cinx;58 cins1;59 if(s1[0] a){60 cinys2s3;61 int p1, p2;62 for(int i 0; i heap.n; i)63 {64 if(heap.h[i] x)p1 i;65 if(heap.h[i] y)p2 i;66 }67 if((p1-1)/2 (p2-1)/2)coutTendl;68 else coutFendl;69 }else{70 cins2;71 if(s2[0] a){72 cins3s4y;73 int p1, p2;74 for(int i 0; i heap.n; i)75 {76 if(heap.h[i] x)p1 i;77 if(heap.h[i] y)p2 i;78 }79 if((p1-1)/2 p2)coutTendl;80 else coutFendl; 81 }else{82 cins3;83 if(s3[0] r){84 if(heap.h[0] x)coutTendl;85 else coutFendl;86 }else{87 cins4y;88 int p1, p2;89 for(int i 0; i heap.n; i){90 if(heap.h[i] x)p1 i;91 if(heap.h[i] y)p2 i;92 }93 if((p2-1)/2 p1)coutTendl;94 else coutFendl;95 }96 }97 }98 }99 } 100 101 return 0; 102 } View Code   L2-017. 人以群分 社交网络中我们给每个人定义了一个“活跃度”现希望根据这个指标把人群分为两大类即外向型outgoing即活跃度高的和内向型introverted即活跃度低的。要求两类人群的规模尽可能接近而他们的总活跃度差距尽可能拉开。 输入格式 输入第一行给出一个正整数N2 N 105。随后一行给出N个正整数分别是每个人的活跃度其间以空格分隔。题目保证这些数字以及它们的和都不会超过231。 输出格式 按下列格式输出 Outgoing #: N1 Introverted #: N2 Diff N3其中 N1 是外向型人的个数N2 是内向型人的个数N3 是两群人总活跃度之差的绝对值。 输入样例1 10 23 8 10 99 46 2333 46 1 666 555输出样例1 Outgoing #: 5 Introverted #: 5 Diff 3611输入样例2 13 110 79 218 69 3721 100 29 135 2 6 13 5188 85输出样例2 Outgoing #: 7 Introverted #: 6 Diff 9359 1 //2018-03-142 #include cstdio3 #include cstring4 #include iostream5 #include algorithm6 7 using namespace std;8 9 const int N 100005; 10 int arr[N]; 11 12 int main() 13 { 14 int n; 15 while(~scanf(%d, n)){ 16 for(int i 0; i n; i) 17 scanf(%d, arr[i]); 18 sort(arr, arrn); 19 int in n/2; 20 int sumIn 0, sumOut 0; 21 for(int i 0; i n; i){ 22 if(i in) sumIn arr[i]; 23 else sumOut arr[i]; 24 } 25 printf(Outgoing #: %d\nIntroverted #: %d\nDiff %d\n, n-in, in, sumOut-sumIn); 26 } 27 28 return 0; 29 } View Code   L2-019. 悄悄关注 新浪微博上有个“悄悄关注”一个用户悄悄关注的人不出现在这个用户的关注列表上但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探根据某人的关注列表和其对其他用户的点赞情况扒出有可能被其悄悄关注的人。 输入格式 输入首先在第一行给出某用户的关注列表格式如下 人数N 用户1 用户2 …… 用户N 其中N是不超过5000的正整数每个“用户i”i1, ..., N是被其关注的用户的ID是长度为4位的由数字和英文字母组成的字符串各项间以空格分隔。 之后给出该用户点赞的信息首先给出一个不超过10000的正整数M随后M行每行给出一个被其点赞的用户ID和对该用户的点赞次数不超过1000以空格分隔。注意用户ID是一个用户的唯一身份标识。题目保证在关注列表中没有重复用户在点赞信息中也没有重复用户。 输出格式 我们认为被该用户点赞次数大于其点赞平均数、且不在其关注列表上的人很可能是其悄悄关注的人。根据这个假设请你按用户ID字母序的升序输出可能是其悄悄关注的人每行1个ID。如果其实并没有这样的人则输出“Bing Mei You”。 输入样例1 10 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao 8 Magi 50 Pota 30 LLao 3 Ammy 48 Dave 15 GAO3 31 Zoro 1 Cath 60输出样例1 Ammy Cath Pota输入样例2 11 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao Pota 7 Magi 50 Pota 30 LLao 48 Ammy 3 Dave 15 GAO3 31 Zoro 29输出样例2 Bing Mei You 1 //2018-03-142 #include cstdio3 #include cstring4 #include iostream5 #include algorithm6 #include set7 8 using namespace std;9 10 const int N 5005; 11 12 string strs[2*N]; 13 int arr[2*N]; 14 setstring st, ans_st; 15 16 int main() 17 { 18 int n, m; 19 while(cinn){ 20 string str; 21 st.clear(); 22 for(int i 0; i n; i){ 23 cinstr; 24 st.insert(str); 25 } 26 cinm; 27 int sum 0; 28 for(int i 0; i m; i){ 29 cinstrs[i]arr[i]; 30 sum arr[i]; 31 } 32 double avg 1.0*sum/m; 33 setstring::iterator iter; 34 ans_st.clear(); 35 for(int i 0; i m; i){ 36 if((iter st.find(strs[i])) st.end() arr[i] avg){ 37 ans_st.insert(strs[i]); 38 } 39 } 40 if(ans_st.empty()){ 41 coutBing Mei Youendl; 42 }else{ 43 for(auto x: ans_st){ 44 coutxendl; 45 } 46 } 47 } 48 49 return 0; 50 } View Code   L2-020. 功夫传人 一门武功能否传承久远并被发扬光大是要看缘分的。一般来说师傅传授给徒弟的武功总要打个折扣于是越往后传弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子或者是吃到了灵丹、挖到了特别的秘笈会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。 这里我们来考察某一位祖师爷门下的徒子徒孙家谱假设家谱中的每个人只有1位师傅除了祖师爷没有师傅每位师傅可以带很多徒弟并且假设辈分严格有序即祖师爷这门武功的每个第i代传人只能在第i-1代传人中拜1个师傅。我们假设已知祖师爷的功力值为Z每向下传承一代就会减弱r%除非某一代弟子得道。现给出师门谱系关系要求你算出所有得道者的功力总值。 输入格式 输入在第一行给出3个正整数分别是N105——整个师门的总人数于是每个人从0到N-1编号祖师爷的编号为0Z——祖师爷的功力值不一定是整数但起码是正数r ——每传一代功夫所打的折扣百分比值不超过100的正数。接下来有N行第i行i0, ..., N-1描述编号为i的人所传的徒弟格式为 Ki ID[1] ID[2] ... ID[Ki] 其中Ki是徒弟的个数后面跟的是各位徒弟的编号数字间以空格间隔。Ki为零表示这是一位得道者这时后面跟的一个数字表示其武功被放大的倍数。 输出格式 在一行中输出所有得道者的功力总值只保留其整数部分。题目保证输入和正确的输出都不超过1010。 输入样例 10 18.0 1.00 3 2 3 5 1 9 1 4 1 7 0 7 2 6 1 1 8 0 9 0 4 0 3输出样例 404 1 //2018-03-152 #include cstdio3 #include cstring4 #include iostream5 #include algorithm6 #include cmath7 8 using namespace std;9 10 const int N 100005; 11 int fa[N], dd_id[N], dd_bs[N], depth[N]; 12 13 int getDepth(int x){ 14 if(fa[x] x)return 0; 15 if(depth[x])return depth[x]; 16 return depth[x] getDepth(fa[x])1; 17 } 18 19 int main() 20 { 21 int n, k; 22 double Z, r; 23 while(cinnZr){ 24 r (100-r)/100; 25 int cnt 0, tmp; 26 memset(depth, 0, sizeof(depth)); 27 for(int i 0; i n; i) 28 fa[i] i; 29 for(int i 0; i n; i){ 30 cin k; 31 if(!k){ 32 cintmp; 33 dd_id[cnt] i; 34 dd_bs[cnt] tmp; 35 }else{ 36 while(k--){ 37 cintmp; 38 fa[tmp] i; 39 } 40 } 41 } 42 double sum 0; 43 for(int i 0; i cnt; i){ 44 double dsum Z*dd_bs[i]; 45 int dp getDepth(dd_id[i]); 46 dsum * pow(r, dp); 47 sum dsum; 48 } 49 cout(int)sumendl; 50 } 51 52 return 0; 53 } View Code   L2-021. 点赞狂魔 微博上有个“点赞”功能你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签而你点赞的博文的类型也间接刻画了你的特性。然而有这么一种人他们会通过给自己看到的一切内容点赞来狂刷存在感这种人就被称为“点赞狂魔”。他们点赞的标签非常分散无法体现出明显的特性。本题就要求你写个程序通过统计每个人点赞的不同标签的数量找出前3名点赞狂魔。 输入格式 输入在第一行给出一个正整数N100是待统计的用户数。随后N行每行列出一位用户的点赞标签。格式为“Name K F1 ... FK”其中 Name 是不超过8个英文小写字母的非空用户名1K1000Fii1, ..., K是特性标签的编号我们将所有特性标签从1到107编号。数字间以空格分隔。 输出格式 统计每个人点赞的不同标签的数量找出数量最大的前3名在一行中顺序输出他们的用户名,其间以1个空格分隔,且行末不得有多余空格。如果有并列则输出标签出现次数平均值最小的那个题目保证这样的用户没有并列。若不足3人则用“-”补齐缺失例如“mike jenny -”就表示只有2人。 输入样例 5 bob 11 101 102 103 104 105 106 107 108 108 107 107 peter 8 1 2 3 4 3 2 5 1 chris 12 1 2 3 4 5 6 7 8 9 1 2 3 john 10 8 7 6 5 4 3 2 1 7 5 jack 9 6 7 8 9 10 11 12 13 14输出样例 jack chris john1 //2018-03-152 #include cstdio3 #include cstring4 #include iostream5 #include algorithm6 7 using namespace std;8 9 const int N 110; 10 11 struct Node{ 12 string name; 13 int len, uniLen; 14 15 bool operator(Node node){ 16 if(uniLen node.uniLen) 17 return len node.len; 18 return uniLen node.uniLen; 19 } 20 }person[N]; 21 22 int arr[1010]; 23 24 int main() 25 { 26 int n; 27 while(cin n){ 28 string str; 29 for(int i 0; i n; i){ 30 cinperson[i].nameperson[i].len; 31 for(int j 0; j person[i].len; j) 32 scanf(%d, arr[j]); 33 sort(arr, arrperson[i].len); 34 int cnt unique(arr, arrperson[i].len) - arr; 35 person[i].uniLen cnt; 36 } 37 sort(person, personn); 38 if(n 0)cout- - -endl; 39 else if(n 1)coutperson[0].name - -endl; 40 else if(n 2)coutperson[0].name person[1].name -endl; 41 else coutperson[0].name person[1].name person[2].nameendl; 42 } 43 44 return 0; 45 } View Code   L3-001. 凑零钱 韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里发现这家店有个特别的规矩你可以用任何星球的硬币付钱但是绝不找零当然也不能欠债。韩梅梅手边有104枚来自各个星球的硬币需要请你帮她盘算一下是否可能精确凑出要付的款额。 输入格式 输入第一行给出两个正整数N104是硬币的总个数M102是韩梅梅要付的款额。第二行给出N枚硬币的正整数面值。数字间以空格分隔。 输出格式 在一行中输出硬币的面值 V1  V2  ... Vk满足条件 V1  V2  ... Vk  M。数字间以1个空格分隔行首尾不得有多余空格。若解不唯一则输出最小序列。若无解则输出“No Solution”。 注我们说序列{A[1], A[2], ...}比{B[1], B[2], ...}“小”是指存在 k 1 使得 A[i]B[i] 对所有 i k 成立并且 A[k] B[k]。 输入样例1 8 9 5 9 8 7 2 3 4 1输出样例1 1 3 5输入样例2 4 8 7 2 4 3输出样例2 No Solution 1 //2018-03-152 #include iostream3 #include cstdio4 #include cstring5 #include algorithm6 7 using namespace std;8 9 const int N 10010; 10 int arr[N], book[N], suffix_sum[N];//后缀和 11 int n, m; 12 bool ok; 13 14 void dfs(int step, int money){ 15 //剪枝 16 if(step n || ok || money m || moneysuffix_sum[step] m)return; 17 if(money m){ 18 ok true; 19 bool first true; 20 for(int i 0; i n; i){ 21 if(book[i]){ 22 if(first){ 23 printf(%d, arr[i]); 24 first false; 25 }else{ 26 printf( %d, arr[i]); 27 } 28 } 29 } 30 printf(\n); 31 } 32 book[step] 1; 33 dfs(step1, moneyarr[step]); 34 book[step] 0; 35 dfs(step1, money); 36 } 37 38 int main() 39 { 40 while(~scanf(%d%d, n, m)) 41 { 42 for(int i 0; i n; i) 43 scanf(%d, arr[i]); 44 sort(arr, arrn); 45 suffix_sum[n] 0; 46 for(int i n-1; i 0; i--) 47 suffix_sum[i] suffix_sum[i1]arr[i]; 48 ok false; 49 memset(book, 0, sizeof(book)); 50 dfs(0, 0); 51 if(!ok)printf(No Solution\n); 52 } 53 54 return 0; 55 } View Code   转载于:https://www.cnblogs.com/Penn000/p/6568905.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WordPress一键开启全站SSLdede模板网站如何搭建

嗯。调试时总发现自己打印的调试信息太过普通、单调,于是乎…… Notice 要在终端实现字体的特殊样式,通常通过使用特殊的控制字符来实现,而不是通过某语言本身的功能来实现。 在大多数终端中,可以使用 ANSI 转义序列来设置字体的…

性价比高的做网站公司wordpress插件手动升级

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/garyxiong/blog/624619

古风网站的关于我们页面怎么做产品代理推广方案

文章目录 职业分析与计算机方向的选择、发展一:编程学习解读与职业分析1.编程的学习阶段:(1)入门阶段(2)熟悉阶段(3)学到什么程度才叫精通呢? 2.职业分析(1&a…

重庆seo网站策划阿芹网站建设

首先登录码云 https://gitee.com/,注册一个账号,并登录账号。1. 在码云上创建项目在码云首页顶部,下图所示,右上角头像旁边的加号,鼠标移上去会显示下拉的,点击“新建项目”。填写好项目的名称、路径等&…

建站公司费用情况静态网站如何做优化

定义一对一关联,例如,一个用户都有一个个人资料。 一、两表 1.用户表:user 2.工作经验表:work_experience user表的id关联work_experience表的user_id。 注意看,user_id1的有2条工作经验 二、数据模型 主表模型:…

英语网站开发的背景台州网站平面设计

简介: 函数计算可观测性经历了 1.0 -> 2.0 的发展,从闭门造车的可观测发展成开源的可观测,从平台的可观测发展为开发者的可观测,从FaaS Only 的可观测演进成了云原生的可观测。 作者:夏莞 背景 Serverless 将成为…

帮人做ppt的网站某企业电子商务网站建设

在rime中州韵小狼毫 联想词组 滤镜一文中,我们通过Filter滤镜功能配置了联想词组的功能,这使得我们在输入一些关键词汇时,可以联想补充一些附加的词组,例如我输入“手机”,就可以联想补充对应的手机号,如下…

电力建设期刊网站经常维护吗php做网站难吗

基于vue3 ant-design 自定义SVG图标iconfont的解决方案; ant-design加载本地iconfont.js不显示图标问题 一、准备工作 1、首先去阿里巴巴矢量图标库自定义添加自己的图标;网站地址https://www.iconfont.cn/ 整个步骤是:选择图标–添加到项…

爱站网在线全集私人影视软件开发模型是什么

题目描述 小明很喜欢猜谜语。最近,他被邀请参加了X星球的猜谜活动。 每位选手开始的时候都被发给777个电子币。 规则是:猜对了,手里的电子币数目翻倍,猜错了,扣除555个电子币, 扣完为止。 小明一共猜了15条谜语。战果…

重庆手机模板建站海南建设培训与执业中心网站

新增的功能多种手势,轻触即发,针对支持触摸屏设备,支持单击、双击、唤出右键菜单、上下滑动等多种触摸屏手势。搭配屏幕键盘,让您随心所欲,手指点到即得到。随机应变,识变从宜,推出智能镜像源概…

电商自学网广州网站seo营销模板

创建真机调试证书(苹果开发者平台各个选项对应的含义) 原文地址:http://jingyan.baidu.com/article/ff411625b8141312e48237a7.html转载于:https://www.cnblogs.com/siasyl/p/5340593.html

网站开发 发布wordpress搬家乱码

电脑键盘上所有英文键的意思1、Esc :取消和退出键2、Tab :表格键切换键3、Caps Lock :字母大小写切换键4、Shift :转换键5、Ctrl: 控制键,需要配合其他键或鼠标使用, 例如复制CtrIC6、Alt: 可选(切换)键,-般与其它键组合使用, 例如…

pc网站制作化妆品网站主页设计

资源名称:Java Web设计模式之道 PDF第一部分 仙人指路——设计模式简介第1章 设计模式概述1.1 设计模式是什么1.2 软件设计模式的发展历程1.3 作者阐述软件设计模式的主要方式第二部分 设计红宝书——设计模式原则详解第2章 设计原则之开闭原则2.1 何谓开闭原则2.2 …

学到什么程度可以做网站绍兴微网站建设

本来第一次看《流畅的python》觉得这部分没用,就跳过去,后面又出现,回头看还是一知半解,查了诸多资料,好像有一点明白了,立下帖子。1、memoryviewmemoryview()函数返回给定参数的内存查看对象(memory view)…

顶呱呱网站开发陕西住房建设厅官方网站

原文:https://blog.csdn.net/hackmind/article/details/48137233 0x01、技术 1、技术是程序员吃饭的手艺,打磨自己的手艺肯定无可厚非 2、保持对技术的热爱,不断学习,持续编程 3、有敬畏心,明白自己是在做商业项目…

快盘做网站服务器已经有域名 如何建网站

经过需求分析(https://blog.csdn.net/weixin_45626468/article/details/115324885)阶段的工作,系统必选“做什么”已经清楚了,现在是决定“怎样做”的时候了。 总体设计的基本目的就是回答“概况地说,系统应该如何实现…

永康营销型网站建设网站加速器免费安卓

公司简介 Salla 是一家 2016 年成立,位于沙特麦加的自建站电商平台。 作为中东 Shopify,其最大的特点是支持阿拉伯语建站,并且提供更多适应中东地区特点的本地化服务。截止目前,已有 47,000 家店铺入驻 Salla,商品销售…

用html5做网站的心得体会flash怎么制作网站

文章目录 openssl3.2 - 官方demo学习 - signature - rsa_pss_direct.c概述笔记END openssl3.2 - 官方demo学习 - signature - rsa_pss_direct.c 概述 用RSA私钥签名 d2i_PrivateKey_ex()可以从内存载入私钥数据, 得到私钥EVP_PKEY* 从私钥产生ctx, 对ctx进行签名初始化, 设置…

网站域名是啥自定义页面wordpress

通过Python对接口进行自动化后需要把xml格式的报文放到LoadRunner上进行压力测试,在pyCharm控制台打印出报文后,把报文放到LoadRunner中做了格式调整后,每个字段需要添加双引号。手动给每一行的字段添加双引号太费时费力,利用UE也…

四川网站建设方案wordpress二级目录安装

在上一篇上《Unity接入SQLite (一):SQLite介绍-CSDN博客》中已经介绍了如何在Unity中接入SQLite插件,并且创建了一个db文件。如何进行数据库的读取,其中SQL命令非常重要 1.SQL支持的数据类型 SQL数据类型是用来定义数据库中存储的数据的类型&#xff0…