• 2019山东省赛总结


    A-暴力模拟

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    string day[]={"Monday","Tuesday","Wednesday","Thursday","Friday"};
    int t;
    ll y11,m1,d1,y2,m2,d2;
    string s1;
    int main(){
        cin>>t;
        while(t--){
           cin>>y11>>m1>>d1;
           cin>>s1;
           cin>>y2>>m2>>d2;
           ll ans1=y11*360+(m1-1)*30+d1;
           ll ans2=y2*360+(m2-1)*30+d2;
           int tt=0;
           for(int i=0;i<=4;i++){
                   if(s1==day[i]){
                       tt=i;
                    break;      
                }
           }
           if(ans1>=ans2){
                   ans1-=ans2;
                ans1%=5;
                cout<<day[(tt-ans1+5)%5]<<endl;    
           }else{
                   ans2-=ans1;
                   ans2%=5;
                   cout<<day[(tt+ans2)%5]<<endl;
           }
        }
        return 0;
    }
    View Code

    B-dp+组合数

    #include<bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    const ll mod=998244353;
    const int maxn=110;
    int n,k,m,t;
    char st[maxn],ed[maxn];
    ll dp[maxn][maxn];
    ll C[maxn][maxn];
    
    void init(){
        C[0][0]=1;
        for(int i=1;i<=105;i++){
            C[i][0]=C[i][i]=1;
            for(int j=1;j<i;j++)
                C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
        }    
    }
    
    int main(){
        init();
        scanf("%d",&t);
        while(t--){
            scanf("%d%d%d",&n,&k,&m);
            scanf("%s",st+1);scanf("%s",ed+1);
            memset(dp,0,sizeof(dp));
            int s=0;
            for(int i=1;i<=n;i++){
                if(st[i]!=ed[i]) s++;
            }
            dp[0][s]=1;
            for(int i=0;i<k;i++){
                for(int j=0;j<=n;j++){
                    if(dp[i][j]==0) continue;
                    for(int kk=0;kk<=j;kk++){ //DAODA
                        int k2=m-kk;// bu dao da
                        if(k2>(n-j)) continue;
                        if(k2<0) continue;
                        dp[i+1][(j-kk)+k2]=(dp[i+1][(j-kk)+k2]+dp[i][j]*C[j][kk]%mod*C[n-j][k2]%mod)%mod;
                    } 
                }
            }
            printf("%lld
    ",dp[k][0]);
        }
        return 0;
    }
    View Code

    C-傻逼题

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 100005
    #define ll long long
    ll t,x,y,n,k,ans;
    char s[maxn];
    
    int main(){
        cin>>t;
        while(t--){
            ans=x=y=0;
            cin>>n>>k;
            scanf("%s",s);
            int len=strlen(s);
            for(int i=0;i<len;i++){
                if(s[i]=='R')x++;
                if(s[i]=='L')x--;
                if(s[i]=='U')y++;
                if(s[i]=='D')y--;
                ans=max(ans,abs(x)+abs(y));
            }
            x*=(k-1);y*=(k-1);
            ans=max(ans,abs(x)+abs(y));
            
            for(int i=0;i<len;i++){
                if(s[i]=='R')x++;
                if(s[i]=='L')x--;
                if(s[i]=='U')y++;
                if(s[i]=='D')y--;
                ans=max(ans,abs(x)+abs(y));
            }
            cout<<ans<<endl;
        }
    }
    View Code

    D-简单图论

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long 
    ll n,k,m;
    char s[200005];
    int main(){
        int t;
        cin>>t;
        while(t--){
            cin>>k;
            scanf("%s",s);
            cin>>n>>m;
            for(int i=1;i<=m;i++){
                int u,v;
                scanf("%d%d",&u,&v);
            }
        
        
            ll tot=(m-n+1)%k;
            cout<<3-(s[tot]-'0')<<endl;
        }
    }
    View Code

    F-贪心

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    int n,a[100005];
    int main(){
        int t;cin>>t;
        while(t--){
            cin>>n;ll sum=0;
            for(int i=1;i<=n;i++)scanf("%d",&a[i]);
            for(int i=1;i<=n;i++)
                sum+=a[i];
            ll p=sum%n,q=sum/n,ans=p;
            
            for(int i=1;i<=n;i++)
                if(a[i]<q)ans+=(q-a[i]);
            cout<<ans<<endl;
        }
    }
    View Code

    H-贪心

    #include<bits/stdc++.h>
    #include<queue>
    #define maxn 100005
    using namespace std;
    struct Node{
        int l,r;
        bool operator<(Node a)const {return r>a.r;}
    }p[maxn];
    int cmp(Node a,Node b){
        if(a.l==b.r)return a.r<b.r;
        return a.l<b.l;
    }
    
    priority_queue<Node>pq;
    
    int t,n,m;
    
    int main(){
        cin>>t;
        while(t--){
            cin>>n;
            for(int i=1;i<=n;i++)scanf("%d%d",&p[i].l,&p[i].r);
            sort(p+1,p+1+n,cmp);
            while(!pq.empty())pq.pop();
        //    pq.push(p[1]);
            int id=1,ans=0,pos=p[1].l;
            while(id<=n){//把所有包含pos的线段加入pq,移动pos 
                if(id>n)break;
                else pos=p[id].l;
                while(id<=n && pos<=p[id].r && pos>=p[id].l){
                    pq.push(p[id++]);
                }
                while(pq.size() && pos<p[id].l){
                    if(pos<=pq.top().r)ans++,pos++;
                    pq.pop();
                }            
            }
            while(pq.size()){
                if(pos<=pq.top().r)ans++,pos++;
                pq.pop();
            }
            cout<<ans<<endl;
        }    
    } 
    View Code

    L-拓扑排序

    #include <bits/stdc++.h>
    using namespace std;
    
    #define pb push_back
    #define clr(a,b) memset(a,b,sizeof(a))
    #define REP(i,s,t) for(int i=s;i<=t;i++)
    const int N = 110;
    
    vector<int>G1[N],G2[N];
    
    bool fp;
    int n,m,cnt1,cnt2;
    int in[N],vis[N];
    
    inline void init(){
        fp=false;
        REP(i,0,n)G1[i].clear();
        REP(i,0,n)G2[i].clear();
        clr(in,0);
    }
    inline void Toposort(){
        queue<int>q;
        REP(i,1,n) if(in[i]==0){
            q.push(i);
        }
        int num=0;
        while(!q.empty()){
            int u=q.front();q.pop();
            num++;
            for(int i=0;i<G1[u].size();i++){
                int v=G1[u][i];
                in[v]--;
                if(in[v]==0)q.push(v);
            }
        }
        if(num<n)fp=true;
    }
    void dfs1(int u){
        vis[u]=1;
        for(int i=0;i<G1[u].size();i++){
            int v=G1[u][i];
            if(!vis[v]){
                cnt1++,dfs1(v);          //将其正向能够达到的点全部标记 
            }
        }
    }
    void dfs2(int u){
        vis[u]=1;
        for(int i=0;i<G2[u].size();i++){
            int v=G2[u][i];
            if(!vis[v]){
                cnt2++,dfs2(v);
            }
        }
    }
    int main(){
        int T;cin>>T;
        while(T--){
            init();
            scanf("%d%d",&n,&m);
            REP(i,1,m){
                int u,v;scanf("%d%d",&u,&v);
                G1[u].pb(v);G2[v].pb(u);
                in[v]++;
                if(u==v)fp=true;          
            }
            Toposort();
            if(fp){
                REP(i,1,n)printf("0");
                puts("");
            }else{
                REP(i,1,n){
                    cnt1=cnt2=0;
                    clr(vis,0);dfs1(i);
                    clr(vis,0);dfs2(i); 
                    //printf("cnt1=%d,cnt2=%d
    ",cnt1,cnt2);
                    if(cnt1<=n/2 && cnt2<=n/2){
                        printf("1");
                    }else printf("0");
                }
                puts("");
            }
    //        if(T)printf(" ");
    //        else puts("");
        }
    }
    View Code
  • 相关阅读:
    Qt数据库应用13通用数据库分页
    Qt编写地图综合应用57跨平台(win、linux、mac、uos、kylin等)
    Qt编写可视化大屏电子看板系统24模块2当月计划
    Qt数据库应用11通用数据生成器
    Qt数据库应用12通用数据库清理
    Qt编写可视化大屏电子看板系统23模块1产量汇总
    Build your first app
    Migrate your app from Xamarin.Forms
    .NET MAUI Preview4 状态预览(5月)
    2021年总结
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10887813.html
Copyright © 2020-2023  润新知