• Full_of_Boys训练2总结


    题目来源::西安电子科技大学第16届程序设计竞赛网络同步赛

    A, B, C: easy problem

    D. 另一个另一个简单题

    做法是加起来,除n。希望会推导的聚聚指点。

    #include <bits/stdc++.h>
    const int inf =0x3f3f3f3f;
    using namespace std;
    int T;
    int ans;
    int main(){
        scanf("%d",&T);
        while(T--){int n;
            scanf("%d",&n);ans=0;
            for(int i=1;i<=n;++i){int x;
                scanf("%d",&x);
                ans+=x;
            }
            printf("%d
    ",ans/n);
        }
    }
    

    F. Operating System

    贪心,每次替换掉该元素下一个出现的最远的元素。原题:BZOJ1826

    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <cstring>
    typedef long long ll;
    const int maxn = 70000+700;
    using namespace std;
    int n,m;
    int a[maxn],pr[maxn],pos[maxn],in[maxn],cnt=0;
    ll b[maxn],v[maxn];
    struct node{
        int w;
        node(){}
        node(int x){w=x;}
        bool operator < (node a)const {
            return pos[a.w] > pos[w];
        }
    };
    priority_queue<node>q;
    int main()
    {
        int qq;
        while(scanf("%d%d%d",&n,&m,&qq)!=EOF){
            cnt=0;
            memset(in,0,sizeof(in));
            memset(pos,0,sizeof(pos));
            memset(pr,0,sizeof(pr));
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            memset(v,0,sizeof(v));
            while(!q.empty())q.pop();
    
            for(int i=1;i<=qq;++i) scanf("%lld",&b[i]),v[cnt++]=(b[i]);
            sort(v,v+cnt);
            cnt = unique(v,v+cnt)-v;
            for(int i=1;i<=qq;++i){
                a[i]= lower_bound(v,v+cnt,b[i])-v+1;
            }
            for(int i=0;i<maxn;++i) pr[i]=qq+1;
            for(int i=qq;i>=1;--i){
                pos[i]=pr[a[i]];
                pr[a[i]]=i;
            }
            pos[qq+1]=qq+1;
            int ans=0,sz=0;
            for(int i=1;i<=qq;++i){
                if(in[a[i]]){
                    q.push(node{i});
                    continue;
                }
                if(sz==n){
                    while(!q.empty()){
                        int u=q.top().w;q.pop();
                        if(in[a[u]]){
                            in[a[u]]=0;
                            break;
                        }
                    }
                }
                else ++sz;
                in[a[i]]=1;
                ++ans;
                q.push(node{i});
            }
            printf("%d
    ",ans);
        }
        return 0;
    }

    E.Xieldy And His Password

    dp[i][j]表示以i这一位为最高位,模3等于j的方法数。那么转移就是:t=(j*2+a[i])%3 ,dp[i][t] = dp[i-1][j]; 还有一个转移是只包含第i位的方案所以dp[a[i]]]++;

    #include <bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    char s[1000007];
    ll dp[1000007][3];
    int main(){
        while(~scanf(" %s",s)) {int len=strlen(s);
            memset(dp,0,sizeof(dp));
            ++dp[0][s[0]-'0'];
            for(int i=1;i<len;++i){
                for(int j=0;j<3;++j){
                    int t = (2*j%3+s[i]-'0')%3;
                    dp[i][t]=dp[i-1][j];
                }
                ++dp[i][s[i]-'0'];
            }
            ll ans = 0;
            for(int i=0;i<len;++i)ans+=dp[i][0];
            printf("%lld
    ",ans);
        }
    }
    

     J. Database

    大模拟。。。仰慕zyc巨神的200+代码,不贴了

    反思:完全没有罚时意识,自我放弃罚时。。。导致6题倒数。对于有明显确定思路的题,必须过手造数据,才能交。中文题感觉很良好,这题要是英文估计凉一半。对于没思路题的难度可以跟自己做出的其他相同他人数的题对比一下,确定是找规律还是推公式。dp状态确定极其不熟练,很简单的状态就是没思路,需要加强。但是,zyc码力惊人!!!orz

  • 相关阅读:
    【设计模式+原型理解】第四章:函数的三种角色+原型链终结版
    【设计模式+原型理解】第三章:javascript五种继承父类方式
    【设计模式+原型理解】第二章:基于构造函数扩展出来的原型模式
    【设计模式+原型理解】第一章:使用Javascript来巧妙实现经典的设计模式
    【Javascript】JS遍历数组的三种方法:map、forEach、filter
    mysql_8.0.12环境配置
    Vue搭建环境
    Flask学习:根据WTF实现登录
    Flask学习:简单的实现登录功能(表单,消息显示)
    Flask学习:模板的使用(变量,控制器,过滤器)
  • 原文地址:https://www.cnblogs.com/RRRR-wys/p/8904593.html
Copyright © 2020-2023  润新知