Animals
蒟蒻

Day3-T1

原题目

  Describe:暴力出奇迹 [ 注意步长0.5!]

  code:

#include<bits/stdc++.h>
using namespace std;
inline int read(){
    int f=1,res=0,ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();};
    while(ch>='0'&&ch<='9'){res=res*10+ch-'0';ch=getchar();};
    return res*f;
}
int n,l,sum,a[201];
double b[201],b2[201];
int tot1,tot2,ans;
int main()
{
    n=read(),l=read();
    for(int i=1;i<=n;i++)a[i]=read();
    sort(a+1,a+n+1);
    for(double i=0.5;i<l;i+=0.5)                                   //可行性剪枝:仅可能存在于某节点或相邻两节点中点
    {
        tot1=0;tot2=0;sum=0;
        memset(b,0,sizeof(b));
        memset(b2,0,sizeof(b2));
        
        for(int j=1;j<=n;j++)                                      //L or R
        if(a[j]<i)b[++tot1]=i-a[j];
        else if(a[j]>i)b2[++tot2]=a[j]-i;
        
        sort(b+1,b+tot1+1);sort(b2+1,b2+tot2+1);
        
        for(int i=1;i<=min(tot1,tot2);i++)
        if(b[i]==b2[i])sum++;else break;
        
        if(sum==tot1||sum==tot2)ans++;                             //与左半部分一样多或与右半部分一样多
    }
    cout<<ans<<endl;
}

 

  

 

posted @ 2018-10-31 18:54  年下丶  阅读(124)  评论(0编辑  收藏  举报
--- 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 百里守约 ---