zoukankan      html  css  js  c++  java
  • PAT12-012【建最小堆】

    卧槽。。没看清 值 还有负的。。

    PS: 注意他说是一个一个插入的,也就是插在完全二叉树的最末位置,然后向上更新。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    
    int a[1010];
    
    void BuildMinHeap(int n)
    {
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    		int j=i;
    		while(a[j]<a[j/2]&&j>1)
    		{
    			swap(a[j],a[j/2]);
    			j/=2;
    		}
    	}
    }
    
    int main()
    {
    	int x,y,len,k,n;
    	char s[110];
    	scanf("%d%d",&n,&k);
    	BuildMinHeap(n);
    	
    	while(k--)
    	{
    		int flag,ff=0;
    		scanf("%d",&x);
    		gets(s);
    		len=strlen(s);
    		y=0;
    		for(int i=0;i<len;i++)
    		{
    			if(s[i]=='-') ff=1;
    			if(i+1<len&&s[i]=='r'&&s[i+1]=='o') flag=1;
    			if(i+1<len&&s[i]=='s'&&s[i+1]=='i') flag=2;
    			if(i+1<len&&s[i]=='p'&&s[i+1]=='a') flag=3;
    			if(i+1<len&&s[i]=='c'&&s[i+1]=='h') flag=4;
    			if(s[i]>='0'&&s[i]<='9') y=y*10+s[i]-'0';
    		}
    		if(ff) y=-y;
    		if(flag==1)
    		{
    			if(x==a[1]) puts("T");
    			else puts("F");
    		}
    		else if(flag==2)
    		{
    			bool f=false;
    			for(int i=1;(2*i+1)<=n;i++)
    				if((a[2*i]==x&&a[2*i+1]==y)||(a[2*i]==y&&a[2*i+1]==x)) 
    					{puts("T");f=true;break;}
    			if(!f) puts("F");
    		}
    		else if(flag==3)
    		{
    			bool f=false;
    			for(int i=1;i<=n;i++)
    			{
    				if(a[i]==x)
    					if(2*i<=n&&a[2*i]==y){puts("T");f=true;break;}
    				if(a[i]==x)
    					if((2*i+1)<=n&&a[2*i+1]==y){puts("T");f=true;break;}
    			}
    			if(!f) puts("F");
    		}
    		else if(flag==4)
    		{
    			bool f=false;
    			for(int i=1;i<=n;i++)
    			{
    				if(a[i]==y)
    					if(2*i<=n&&a[2*i]==x){puts("T");f=true;break;}
    				if(a[i]==y)
    					if((2*i+1)<=n&&a[2*i+1]==x){puts("T");f=true;break;}
    			}
    			if(!f) puts("F");		
    		}
    	}
    	return 0;
    }
    


  • 相关阅读:
    软件架构师如何工作(即架构漫谈读后感)
    寒假学习记录22
    寒假学习记录21
    寒假学习记录20
    实验四 LL(1)语法分析
    大学生熬夜情况调查结果分析
    大学生熬夜情况调查计划
    实验三 递归下降分析分析法
    实验一 根据状态转换图手工构造词法扫描器
    《软件需求工程》阅读笔记06
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777371.html
Copyright © 2011-2022 走看看