zoukankan      html  css  js  c++  java
  • Codeforces Round #630 (Div. 2)

    题目链接:https://codeforces.com/contest/1332

    A. Exercising Walk

    可走的最远距离:左:x-x1,右:x2-x,下:y-y1,上:y2-y

    如果可以移动,通过折返行走,两个相对方向至少有一个可以消为0,然后看余下步数是否小于等于该方向可走的最远距离,类似于一种模拟的做法,好多大佬都是直接结论QAQ。

    #include <bits/stdc++.h>
    using namespace std;
    
    void solve()
    {
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        int x,y,x1,x2,y1,y2;
        cin>>x>>y>>x1>>y1>>x2>>y2;
        
        int l1=max(x-x1,x2-x),l2=max(y-y1,y2-y);
        if(l1>0){
            int mi=min(a,b);
            a-=mi,b-=mi;
            if(a>0&&a<=x-x1) a=0;
            if(b>0&&b<=x2-x) b=0;
        }
    
        if(l2>0){
            int mi=min(c,d);
            c-=mi,d-=mi;
            if(c>0&&c<=y-y1) c=0;
            if(d>0&&d<=y2-y) d=0;
        }
    
        if(a||b||c||d) cout<<"No
    ";
        else cout<<"Yes
    ";
    }
    
    int main()
    {
        int t;cin>>t;
        while(t--)
            solve();
        return 0;
    }
    View Code

    B. Composite Coloring

    题面其实暗示得非常明确:给你一个合数数组,最多染11种颜色,相同颜色gcd大于1。

    为什么是11?因为平方小于1000的质因数只有11个:

    2,3,5,7,11,13,17,19,23,29,31。

    因为每个数可以被分解成质因数之积,最小质因数相同的染一个颜色即可。

    #include <bits/stdc++.h>
    using namespace std;
    
    void solve()
    {
        int n;cin>>n;
        int res[n]={};
    
        int color=0;
        map<int,int> m;
        
        for(int i=0;i<n;i++){
            int t;cin>>t;
            for(int j=2;j<=t;j++){
                if(t%j==0){//j为t的最小质因数
                    if(m[j]) res[i]=m[j];
                    else res[i]=m[j]=++color;
                    break;
                }
            }
        }
    
        cout<<color<<"
    ";
        for(int i=0;i<n;i++) cout<<i<<" 
    "[i==n-1];
    }
    
    int main()
    {
        int t;cin>>t;
        while(t--)
            solve();
        return 0;
    }
    View Code

    C. K-Complete Word

    每次操作如下:

    • 回文:取两端
    • 周期:取两端向另一端的周期字符

    由题意这些字符必须相同,因为要最小替换次数,统计每个字母,换成出现次数最多的即可。

    #include <bits/stdc++.h>
    using namespace std;
     
    void solve()
    {
        int n,k;cin>>n>>k;
        string s;cin>>s;
    
        int ans=0;
        bool vis[n]={};
    
        for(int i=0;i<n;i++)
        {
            if(vis[i]) continue;
    
            vector<char> v;
    
            for(int j=i;j<n;j+=k)
                if(!vis[j]){
                    v.push_back(s[j]);
                    vis[j]=true;
                }
            for(int j=n-i-1;j>=0;j-=k)
                if(!vis[j]){
                    v.push_back(s[j]);
                    vis[j]=true;
                }
                
            int mx=0,cnt[26]={};
            for(char c:v) mx=max(mx,++cnt[c-'a']);
            ans+=int(v.size())-mx;
        }
        cout<<ans<<"
    ";
    }
     
    int main()
    {
        int t;cin>>t;
        while(t--)
            solve();
        return 0;
    }
    View Code

    D. Walk on Matrix

    该dp代码会因为追求当前的最大与值而舍弃掉会使答案更大的较小值,如:

    $egin{bmatrix} 0 & 011 & 0 \ 100 & 111 & 011 end{bmatrix}$

    所以可以构造:

    $egin{bmatrix} inf+k & k &inf \ inf & inf+k &k end{bmatrix}$

    #include <bits/stdc++.h>
    using namespace std;
    const int inf=1<<17;
    int main()
    {
        int k;cin>>k;
        cout<<"2 3
    ";
        cout<<(inf+k)<<' '<<k<<' '<<inf<<"
    ";
        cout<<inf<<' '<<(inf+k)<<' '<<k;
        return 0;
    }
    View Code
  • 相关阅读:
    JedisConnectionException: java.net.ConnectException: Connection refused
    Mysql索引整理总结
    jstat命令总结
    Java死锁排查和Java CPU 100% 排查的步骤整理
    Spring-Session实现Session共享实现原理以及源码解析
    Spring-Session实现Session共享Redis集群方式配置教程
    Spring-Session实现Session共享入门教程
    Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】
    jsp获取当前日期,包括星期几
    使用joda-time工具类 计算时间相差多少 天,小时,分钟,秒
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12609890.html
Copyright © 2011-2022 走看看