[oj]樱花对称问题

[思路]

横坐标x对称图的特点:

1.所有y坐标加起来sum/n没有余数

2.一对对称坐标中x相同,y加起来为sum/n*2

3.判断一组后进行标记



#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n;
    int i,j;
    int flag;
    
    while(scanf("%d",&n)!=-1)
    {
        int x[n],y[n],k[n];
        int sum;
        sum=0;
        flag=-1;
        for(i=0;i<n;i++)
        { 
			k[i]=0;
            scanf("%d %d",&x[i],&y[i]);
			//	printf("sum:%d",sum);
            sum=sum+y[i];
        }
        //printf("sum:%d",sum);
    	sum=2*sum;
    	if(sum%n!=0) 
		{
			flag=0;//printf("!!!!");
		}
    	else
    	{
        	sum=sum/n;
        	for(i=0;i<n;i++)
        	{
            	if(k[i]==0&&y[i]*2!=sum)
            	{
                	for(j=i+1;j<=n-1;j++)
                	{
                    	if(y[i]+y[j]==sum&&x[j]==x[i])
                    	{
                        	k[i]=k[j]=1;
                        	break;
                    	}
                	}
                	if(j==n) 
					{	flag=0;
					   // printf("@@@@@@");
					}
            	}
        	}
        if(flag==-1)
    	{	flag=1;
		}
    
    }
    if(flag==1)
    	printf("YES\n");
    else if(flag==0)
    	printf("NO\n");
    //else
      //  printf("!!!!!!!");
	}
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值