zoukankan      html  css  js  c++  java
  • contest 1.13

    A.发财兔1A

    O(nlogn)

    #include <iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<map>
    typedef long long ll;
    using namespace std;
     
    ll n,num;
    ll a[1000005];
    ll b[1000005];
    ll cnt[1000005];
     
    ll getid(ll x){
      return lower_bound(b+1,b+1+num,x)-b;
    }
     
    int main()
    {
        scanf("%lld",&n);
        for(ll i=1;i<=n;i++){
            scanf("%lld",&a[i]);
            b[i]=a[i];
        }
        sort(a+1,a+1+n);
        sort(b+1,b+1+n);
        num=unique(b+1,b+1+n)-(b+1);
        for(ll i=1;i<=n;i++){
            ll id=getid(a[i]);
            cnt[id]++;
        }
        ll ans=0;
        for(ll i=1;i<=n;i++){
            ll now=1;
            while(now<=2*a[n]){
                if(now<a[i]||now-a[i]<a[i]) {now*=2;continue;}
                ll id=getid(now-a[i]);
                if(b[id]==now-a[i]){
                  ans+=cnt[id];
                  if(now-a[i]==a[i]) {ans--;cnt[getid(a[i])]--;}
                }
                now*=2;
            }
        }
        printf("%lld
    ",ans);
        return 0;
    }
     
    View Code

    C.发财兔1C

    树状数组+前缀和差分

    #include <iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<map>
    #define lowbit(x) x&(-x)
    typedef long long ll;
    using namespace std;
    
    int n,m;
    int a[1000005],A[1000005];
    ll c[1000005];
    map<int,int> last;
    
    struct Query{
      int l,r,id;
      ll ans;
    }q[1000005];
    
    bool cmp1(Query a,Query b){
      return a.r<b.r;
    }
    
    bool cmp2(Query a,Query b){
      return a.id<b.id;
    }
    
    void add(int pos,int val){
      for(int i=pos;i<=n;i+=lowbit(i)) c[i]^=val;
    }
    
    ll getsum(int pos){
      ll ret=0;
      for(int i=pos;i>0;i-=lowbit(i)) ret^=c[i];
      return ret;
    }
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            A[i]=A[i-1]^a[i];
        }
        for(int i=1;i<=m;i++){
            scanf("%d%d",&q[i].l,&q[i].r);
            q[i].id=i;
        }
        sort(q+1,q+1+m,cmp1);
        int now=1;
        for(int i=1;i<=n;i++){
            if(last[a[i]]) add(last[a[i]],a[i]);
            last[a[i]]=i;
            add(i,a[i]);
            while(now<=m&&q[now].r<=i){
                int l=q[now].l,r=q[now].r;
                q[now].ans=(A[r]^A[l-1])^(getsum(r)^getsum(l-1));
                now++;
            }
        }
        sort(q+1,q+1+m,cmp2);
        for(int i=1;i<=m;i++){
            printf("%lld
    ",q[i].ans);
        }
        return 0;
    }
    View Code

    E.bomb

    暴力

    #include <iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #include<map>
    #define inf 0x3f3f3f3f
    using namespace std;
     
    map<double,int> mp;
     
    struct Node{
      int x,y;
    }node[1205];
     
    double getk(Node a,Node b){
      double x=a.x-b.x;
      double y=a.y-b.y;
      if(y==0) return 0;
      else if(x==0) return inf;
      else return y*1.0/(x*1.0);
    }
     
    int main()
    {
        int n;scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d%d",&node[i].x,&node[i].y);
        }
        int ans=1;
        for(int i=1;i<=n;i++){
            int cnt=1;
            mp.clear();
            for(int j=1;j<=n;j++){
                if(j==i) continue;
                double k=getk(node[i],node[j]);
                mp[k]++;
                cnt=max(cnt,mp[k]+1);
            }
            ans=max(ans,cnt);
        }
        printf("%d
    ",ans);
        return 0;
    }
     
    View Code

    F.matrix

    预处理+枚举

    #include <iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    
    char Map[5005][5005];
    int cnt[5005][5005];
    int vis[5005];
    
    int main()
    {
        int n,m;scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
            scanf("%s",Map[i]+1);
        }
        for(int i=1;i<=n;i++){
            for(int j=m;j>=1;j--){
                if(Map[i][j]=='0') cnt[i][j]=0;
                else cnt[i][j]=cnt[i][j+1]+1;
                //printf("%d
    ",cnt[i][j]);
            }
        }
        int ans=0;
        for(int i=1;i<=m;i++){
            memset(vis,0,sizeof(vis));
            for(int j=1;j<=n;j++){
                vis[cnt[j][i]]++;
            }
            int all=0;
            for(int j=n;j>=1;j--){
                all+=vis[j];
                ans=max(ans,j*all);
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
    View Code
    转载请注明出处:https://www.cnblogs.com/lllxq/
  • 相关阅读:
    Zend Framework 2.1.5 中根据服务器的环境配置调用数据库等的不同配置
    在基于 Eclipse 的 IDE 中安装和使用 Emmet(ZenCoding)
    【翻译】Emmet(Zen Coding)官方文档 之六 自定义 Emmet
    【翻译】Emmet(Zen Coding)官方文档 之二 缩写
    【翻译】Emmet(Zen Coding)官方文档 之七 一览表
    【翻译】Emmet(Zen Coding)官方文档 之三 CSS 缩写
    【翻译】Emmet(Zen Coding)官方文档 之四 动作
    【翻译】Emmet(Zen Coding)官方文档 之一 web 编程的必备工具
    Zend Framework 2 时区设置警告问题的解决
    【翻译】Emmet (Zen Coding) 元素类型
  • 原文地址:https://www.cnblogs.com/lllxq/p/10263221.html
Copyright © 2011-2022 走看看