zoukankan      html  css  js  c++  java
  • Summer training #5

    B:分析序列 构造树(优先队列)

    #include <bits/stdc++.h>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define foror(i,a,b) for(i=a;i<b;i++)
    #define foror2(i,a,b) for(i=a;i>b;i--)
    #define EPS 1.0e-8
    #define PI acos(-1.0)
    #define INF 3000000000
    #define MOD 1000000009
    #define mem(a,b) memset((a),b,sizeof(a))
    #define TS printf("!!!
    ")
    #define lson o<<1, l, m
    #define rson o<<1|1, m+1, r
    //using ll = long long;
    //using ull= unsigned long long;
    //std::ios::sync_with_stdio(false);
    using namespace std;
    //priority_queue<int,vector<int>,greater<int>> que;
    typedef long long ll;
    vector<int> tree[8000];
    int visit[8000];
    int pop=0;
    int pop1=1;
    int scan[8000];
    priority_queue<int, vector<int>, greater<int> > leaf;
    int maxn=0;
    int main()
    {
     //freopen("in.txt", "r", stdin);
     //freopen("out.txt", "w", stdout);
     int now;
     //TS;
     while(scanf("%d ",&now)!=EOF)
     {
            scan[++pop]=now;
            maxn=max(maxn,now);
            visit[now]++;
     }
     //cout<<maxn<<endl;
     visit[maxn]++;
     //TS;
     for(int i=1;i<=maxn;i++)
     {
            if(visit[i]==0)
            {
            leaf.push(i);
            }
     }
     while(!leaf.empty())
     {
            int cur;
            cur= leaf.top();
            leaf.pop();
            tree[scan[pop1]].push_back(cur);
            //cout<<scan[pop1]<<"pushin:"<<cur<<endl;
            tree[cur].push_back(scan[pop1]);
            //cout<<cur<<"pushin:"<<scan[pop1]<<endl;
            if(--visit[scan[pop1]]==0)
            leaf.push(scan[pop1]);
            pop1++;
     }
     for(int i=1;i<=maxn;i++)
     {
            //printf("%d ",tree[i].size());
            sort(tree[i].begin(),tree[i].end());
            printf("%d:",i);
            for(int j=0;j<(int)tree[i].size();j++)
            {
            printf(" %d",tree[i][j]);
            }
            printf("
    ");
     }
      return 0;
    }
    View Code

    C:求满足题意的正方形个数(二维前缀和 前缀和思想)  更难的相似的:http://agc015.contest.atcoder.jp/tasks/agc015_c

    F: 打表找规律

    #include <bits/stdc++.h>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define foror(i,a,b) for(i=a;i<b;i++)
    #define foror2(i,a,b) for(i=a;i>b;i--)
    #define EPS 1.0e-8
    #define PI acos(-1.0)
    #define INF 3000000000
    #define MOD 1000000009
    #define mem(a,b) memset((a),b,sizeof(a))
    #define TS printf("!!!
    ")
    #define lson o<<1, l, m
    #define rson o<<1|1, m+1, r
    //using ll = long long;
    //using ull= unsigned long long;
    //std::ios::sync_with_stdio(false);
    using namespace std;
    //priority_queue<int,vector<int>,greater<int>> que;
    typedef long long ll;
    int main()
    {
     //freopen("in.txt", "r", stdin);
     //freopen("out.txt", "w", stdout);
     int t;
     cin >> t;
     while(t--)
     {
            int s,k;
            scanf("%d %d",&s,&k);
            if(k%2==1)
            {
            if(s%2==0)
            {
            cout<<0<<endl;
            continue;
            }
            else
            {
            cout<<1<<endl;
            continue;
            }
            }
            else
            {
            /*int now=0;
            while(s>0)
            {
            now+=s%k;
            s/=k;
            }
            cout<<now<<endl;*/
            int now=s%(k+1);
            if(now%2==1)
            cout<<1<<endl;
            else
            {
            if(now==k)
            cout<<k<<endl;
            else
            cout<<0<<endl;
            }
            }
     }
      return 0;
    }
    View Code

    G:水

    H:二进制分析(lucky 测试数据没有失败的也没有要求最优解的)

    #include <bits/stdc++.h>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define foror(i,a,b) for(i=a;i<b;i++)
    #define foror2(i,a,b) for(i=a;i>b;i--)
    #define EPS 1.0e-8
    #define PI acos(-1.0)
    #define INF 3000000000
    #define MOD 1000000009
    #define mem(a,b) memset((a),b,sizeof(a))
    #define TS printf("!!!
    ")
    #define lson o<<1, l, m
    #define rson o<<1|1, m+1, r
    //using ll = long long;
    //using ull= unsigned long long;
    //std::ios::sync_with_stdio(false);
    using namespace std;
    //priority_queue<int,vector<int>,greater<int>> que;
    typedef long long ll;
    int er[100];
    int er2[100];
    int ans[100];
    ll l,r;
    int pop=0;
    ll anser1=0;
    void init(ll t)
    {
     int pop=0;
     while(t>0)
     {
       er[pop++]=t%2;
       t=t/2;
     }
    }
    void init2(ll t)
    {
     int pop=0;
     while(t>0)
     {
       er2[pop++]=t%2;
       t=t/2;
     }
    }
    ll now[100];
    int main()
    {
     //freopen("in.txt", "r", stdin);
     //freopen("out.txt", "w", stdout);
     mem(ans,-1);
     int flag=1;
     int have=0;
     int n;
     cin >> n;
     for(int i=1;i<=n;i++)
            cin>>now[i];
     for(int i=1;i<n;i++)
     {
            if(flag==0)
            break;
            mem(er,0);
            mem(er2,0);
            ll cur=now[i];
            ll next=now[i+1];
            init(cur);
            init2(next);
            int flag2=0;
            for(int j=59;j>=0;j--)
            {
            if(er[j]!=er2[j])
            {
            //        cout<< j<<endl;
            if(er[j]==0&&er2[j]==1)
            {
            if(ans[j]==-1)
            {
            ans[j]=0;
            have++;
            flag2=1;
            break;
            }
            else if(ans[j]==0)
            {
            flag2=1;
            break;
            }
            }
            else if(er[j]==1&&er2[j]==0)
            {
            if(ans[j]==-1)
            {
            ans[j]=1;
            have++;
            flag2=1;
            break;
            }
            else if(ans[j]==1)
            {
            flag2=1;
            break;
            }
            }
            }
            }
            if(flag2==0)
            flag=0;
     }
     if(flag==0)
     {
      cout<<0<<endl;
      return 0;
     }
     ll anser=1LL*1<<(60-have);
     cout<<anser<<endl;
      return 0;
    }
    View Code

    I:数位DP 

    #include <bits/stdc++.h>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define foror(i,a,b) for(i=a;i<b;i++)
    #define foror2(i,a,b) for(i=a;i>b;i--)
    #define EPS 1.0e-8
    #define PI acos(-1.0)
    #define INF 3000000000
    #define MOD 1000000007
    #define mem(a,b) memset((a),b,sizeof(a))
    #define TS printf("!!!
    ")
    #define lson o<<1, l, m
    #define rson o<<1|1, m+1, r
    //using ll = long long;
    //using ull= unsigned long long;
    //std::ios::sync_with_stdio(false);
    using namespace std;
    //priority_queue<int,vector<int>,greater<int>> que;
    typedef long long ll;
    ll ans[2005][4];
    void init()
    {
            ans[1][1]=26,ans[1][2]=ans[1][3]=0;
            for(int i=1;i<=1999;i++)
            {
               ans[i+1][1]=(ans[i][1]+ans[i][2]+ans[i][3])*25%MOD;
               ans[i+1][2]=ans[i][1]%MOD,ans[i+1][3]=ans[i][2]%MOD;
            }
    }
    int main()
    {
     //freopen("in.txt", "r", stdin);
     //freopen("out.txt", "w", stdout);
     init();
     int t;
     cin >> t;
     while(t--)
     {
            int n;
            scanf("%d",&n);
            ll anser=(ans[n][1]+ans[n][2]+ans[n][3])%MOD;
            cout<<anser<<endl;
     }
      return 0;
    }
    View Code
  • 相关阅读:
    【WebService】WebService之WSDL文档深入分析(三)
    Android开发——发布第三方库到JitPack上
    Android破解学习之路(七)—— 乐秀视频编辑 内购破解 专业版 价值40元的破解
    Android破解心得——记学习七少月安卓大型安全公开课
    【转】Android播放音频MediaPlayer的几种方式介绍
    Android开发——EditText的属性使用
    Android开发——Fragment的简单使用总结
    Android开发——签名包的生成
    Android Stuido xml使用app属性没有提示代码
    Android开发——设置界面的创建
  • 原文地址:https://www.cnblogs.com/Aragaki/p/7157935.html
Copyright © 2011-2022 走看看