Codeforces Round #371 (Div. 2)

来源:互联网 发布:网络用语qb是什么意思 编辑:程序博客网 时间:2024/05/20 23:30

A.

两线段的交为

判断一下,交是否合法要省略的时间是否在交内就行

#include <iostream>#include <string.h>#include <queue>#include <cmath>#include <cstdio>#include <map>#include <string>#include <algorithm>using namespace std;int main(){    long long l1,l2,l,r1,r2,r,k;    while(cin>>l1>>r1>>l2>>r2>>k){        l=max(l1,l2);        r=min(r1,r2);        long long ans=r-l+1;        if(k>=l&&k<=r)            ans--;        cout<<max(ans,(long long)0)<<endl;    }}


B.

  要满足题意,只能出现三个点:最大点/最小点/当最大加最小是偶数时存在中间点

#include <iostream>#include <string.h>#include <queue>#include <cmath>#include <cstdio>#include <map>#include <string>#include <algorithm>using namespace std;const int MAXN=100000+5;long long a[MAXN];int main(){    int n;    bool flag1;    while(~scanf("%d",&n)){        map<long long,bool> flag;        flag1=1;        for(int i=0;i<n;i++)            scanf("%lld",&a[i]);        sort(a,a+n);        flag[a[0]]=1;flag[a[n-1]]=1;        if((a[0]+a[n-1])%2==0) flag[(a[0]+a[n-1])/(long long)2]=1;        for(int i=0;i<n&&flag1;i++)            if(flag[a[i]]==0)            flag1=0;        if(flag1)            cout<<"YES"<<endl;        else            cout<<"NO"<<endl;    }}
C.

都按要求转化成18位就行

#include <iostream>#include <string.h>#include <queue>#include <cmath>#include <cstdio>#include <map>#include <string>#include <algorithm>using namespace std;string tr(long long x){    string str;    for(int i=0;i<18;i++){        str+=x%2+'0';        x/=10;    }    //cout<<str<<endl;    return str;}int main(){    int n;    while(~scanf("%d",&n)){        getchar();        map<string,int> a;        while(n--){            char b;            long long c;            scanf("%c %lld",&b,&c);            getchar();            if(b=='+'){                a[tr(c)]++;            }else if(b=='-'){                a[tr(c)]--;            }else if(b=='?'){                cout<<a[tr(c)]<<endl;            }        }    }}


D.

二分搜?

E.

咋DP啊?


0 0
原创粉丝点击