首页 > 其他 > 详细

2020.10.03 ACM 实验室2020.10.03天梯赛练习*1

时间:2020-10-04 22:18:56      阅读:51      评论:0      收藏:0      [点我收藏+]

7-11 重排链表

思路:这种给地址的连标题我现在是在结构体先构造好struct,然后按下标输入给的东西。用一个vector记下来从头地址一直到尾地址的所有地址,之后再进行题目的操作

代码:

struct LNode
{
	int add;
	int data;
	int next;
}List[100000];
int main()
{
	int fa, n;
	vector<int>ls;
	cin >> fa >> n;
	for (int i = 0; i < n; i++)
	{
		int temp;
		cin >> temp;
		cin >> List[temp].data;
		cin >> List[temp].next;
		List[temp].add = temp;
	}
	while (fa != -1)
	{
		ls.push_back(fa);
		fa = List[fa].next;
	}
	for (int i = 0; i < ls.size()/2; i++)
	{
		if (!i)
			printf("%05d %d ", ls[ls.size() - 1 - i], List[ls[ls.size() - 1 - i]].data);
		else
			printf("%05d\n%05d %d ", ls[ls.size() - 1 - i], ls[ls.size() - 1 - i], List[ls[ls.size() - 1 - i]].data);
		printf("%05d\n%05d %d ", ls[i], ls[i], List[ls[i]].data);
	}
	if (ls.size() % 2 != 0)
	{
		printf("%05d\n%05d %d ", ls[ls.size() / 2], ls[ls.size() / 2], List[ls[ls.size() / 2]].data);
	}
	cout << -1;
	return 0;
}

7-12 分而治之

题意:共有n个城市,给出两个城市,表示他们之间有一条路问如果攻占下其中的几座城市之后,能不能使得所有的城市都孤立。

思路:

代码:

/*
  \\               //
   \\             //
    \\           //
##DDDDDDDDDDDDDDDDDDDDDD##
## DDDDDDDDDDDDDDDDDDDD ##
## hh   /\     ***** hh ##
## hh  //\\   **     hh ##
## hh //__\\  **     hh ##
## hh//    \\  ***** hh ##
## hh      wwww      hh ##
## hh                hh ##
## MMMMMMMMMMMMMMMMMMMM ##
##MMMMMMMMMMMMMMMMMMMMMM##
     \/            \/
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<math.h>
#include<map>
#include<iostream>
#include<algorithm>
using namespace std;
int read() {
    int ans=0,flag=1;
    char ch=getchar();
    while( (ch>‘9‘ || ch<‘0‘) && ch!=‘-‘ ) ch=getchar();
    if(ch==‘-‘) flag=-1,ch=getchar();
    while(ch>=‘0‘ && ch<=‘9‘) ans=ans*10+ch-‘0‘,ch=getchar();
    return ans*flag;
}
struct A{
	int a;
	int b;
}p[10010];
int aa[10010];
int main(){
	int n,m,x,y,t;
	cin>>t>>n;
	int ss=n;
	for(int i=0;i<n;i++){
		cin>>p[i].a>>p[i].b;
	}
	int q,w,e,r;

	cin>>q;
	while(q--){
		memset(aa,0,sizeof(aa)); 
		w=read();
		int ans=0;
		for(int tt=0;tt<w;tt++){
			e=read();
			aa[e]=1;
		}
		int flag = 1;
		for(int i=0;i<ss;i++){
			if(aa[p[i].a]==0&&aa[p[i].b]==0){
				flag=0;
				break;
			}
		}
		if(flag){
			printf("YES\n");
		}
		else
			printf("NO\n");
	}
	return 0;
}

2020.10.03 ACM 实验室2020.10.03天梯赛练习*1

原文:https://www.cnblogs.com/pioneerjiesen/p/13768454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!