首页 > 其他分享 >ABC 285 ABCD

ABC 285 ABCD

时间:2023-01-15 22:00:11浏览次数:67  
标签:ABCD typedef ABC const LL cin long mp 285

https://atcoder.jp/contests/abc285/tasks

A - Edge Checker 2

题目大意:

二叉树,给定两个数字,问其中一个是否和另一个数字直接连线?也即是是否是父节点?
Sample Input 1  
1 2
Sample Output 1  
Yes
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=1000200,M=4002;
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        LL x,y;
        cin>>x>>y;
        if(x==y/2||x/2==y) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

B - Longest Uncommon Prefix

题目大意:

给定长度为n的字符串S,从1到n,i为间隔个数,求S[k]!=S[k+i],一旦==立即停止.
Sample Input 1  
6
abcbac
Sample Output 1  
5
1
2
0
1
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=1000200,M=4002;
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        LL n;
        cin>>n;
        string s;
        cin>>s;
        s=" "+s;
        for(int i=1;i<n;i++)
        {
            LL sum=0;
            for(int l=1,r=1+i;r<=n;l++,r++)
            {
                //cout<<s[l]<<" "<<s[r]<<endl;
                if(s[l]!=s[r]) sum++;
                else break;
            }
            cout<<sum<<endl;
        }
    }
    return 0;
}

C - abc285_brutmhyhiizp

题目大意:

A-z为1-26,AA27 AB28~ 给定一个字符串问表示的数字是多少?
Sample Input 3  
BRUTMHYHIIZP
Sample Output 3  
10000000000000000

从后往前依次计算,每一个字母根据位置所在都可以有26的i次方种搭配

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=1000200,M=4002;
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        string s;
        cin>>s;
        reverse(s.begin(),s.end());
        map<char,LL> mp;
        for(int i=65;i<=90;i++)
        {
            mp[(char)i]=i-64;
        }
        LL sum=0;
        for(int i=0;i<s.size();i++)
        {
            if(i==0) sum+=mp[s[i]];
            else sum+=(LL)pow(26,i)*(mp[s[i]]);
        }
        cout<<sum<<endl;
    }
    return 0;
}

D - Change Usernames

题目大意:

左边的网名想换成右边的网名,但是注意网名不能重复,问是否能够全部换成功?
Sample Input 3  
5
aaa bbb
yyy zzz
ccc ddd
xxx yyy
bbb ccc
Sample Output 3  
Yes

感觉我的方法繁琐了一些,用了离散化,然后分别存了前一个节点和下一个节点,还附带了状态值和个数
如果实在看不懂可以换下一个

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=1000200,M=4002;
LL beg=1,ans=0,a[N],b[N],st[N],last[N];
string s[N],c[N];
vector<LL> v[N];
bool flag=true;
void dfs(LL x)
{
    if(st[x]!=0||flag==false) return ;
    st[x]=1;
    ans--;
    for(int i=0;i<v[x].size();i++)
    {
        if(st[v[x][i]]==0) dfs(v[x][i]);
        else
        {
            flag=false; return ;
        }
    }
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        memset(last,0,sizeof last);
        LL n;
        cin>>n;
        map<string,LL> mp;
        for(int i=1;i<=n;i++)
        {
            cin>>s[i]>>c[i];
            if(mp[s[i]]==0) ans++,a[i]=beg++,mp[s[i]]=a[i];
            else a[i]=mp[s[i]];
            if(mp[c[i]]==0) ans++,b[i]=beg++,mp[c[i]]=b[i];
            else b[i]=mp[c[i]];
            //cout<<a[i]<<" "<<b[i]<<endl;
            v[a[i]].push_back(b[i]);
            last[b[i]]=a[i];
        }
        for(int i=1;i<=n;i++)
        {
            if(last[a[i]]==0)
            {
                dfs(a[i]);
                if(flag==false) break;
            }
        }
        if(ans!=0||flag==false) cout<<"No"<<endl;
        else cout<<"Yes"<<endl;
    }
    return 0;
}

标签:ABCD,typedef,ABC,const,LL,cin,long,mp,285
From: https://www.cnblogs.com/Vivian-0918/p/17054230.html

相关文章

  • abc243 E - Edge Deletion
    题意:给定无重边无自环的带正权无向连通图,问最多删除几条边能保持所有点对的最短距离不变\(n\le300\)思路:删除边\(u\overset{w}{-}v\)当且仅当原图中存在其它路径的......
  • ARC153 ABC 题解
    A【题意】给定\(N\),求第\(N\)个满足以下条件的数:它是一个\(9\)位数,没有前导\(0\)。它的第一位等于它的第二位。它的第五位等于它的第六位。它的第七位等于它......
  • Atcoder abc275F
    Atcoderabc275F题意:给出一个长度为\(n\)的数组\(A=(a_1​,a_2​,…,a_N)\),问是否能通过删掉一些子段使剩下的数之和为\(q\)。若可以,求出最小操作次数,否则输出−1......
  • AcWing 第 86 场周赛 ABC
    https://www.acwing.com/activity/content/competition/problem_list/2794/4794.健身#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpa......
  • ABC242 E - (∀x∀)
    题目连接:https://atcoder.jp/contests/abc242/tasks/abc242_e翻译一下题目大意就是给定一个只包含大写字母的字符串S,输出所有字典序比S小且是回文串的字符串的数量这道题......
  • abc254 F - Rectangle GCD
    题意:给定等长的正整数组\(a[],b[]\),它们确定了一个矩阵\(A_{i,j}=a_i+b_j\)。\(q\)次询问,回答矩阵中一个矩形区域内所有数的\(\gcd\)\(n,q\le2e5\)思路:差分,绝对......
  • AT2282 [ABC051C] Back and Forth 题解
    Description在一个平面直角坐标系内,有一点\(A(x_1,y_1)\)和点\(B(x_2,y_2)\)你需要从\(A\)点走到\(B\)点,再走到\(A\)点,再走到\(B\)点,再回到\(A\)点。期间,你......
  • abc258 G - Triangle
    题意:给定图的邻接矩阵,问三元环的数量\(n\le3000\)思路:\(O(n^3)\)的最naive的暴力,用bitset优化到\(O(n^3/64)\)暴力搜\((i,j)\),则另外两个点\((i,k),(j,k)\)在......
  • abc--263--E
    E-Sugoroku3关键其实也就是正常的投色子问题,从后面转移到前面,只是需要用一个后缀和进行优化,懂期望dp后还是挺好写的。代码#include<bits/stdc++.h>usingnamespac......
  • abc262 E - Red and Blue Graph
    题意:对给定无向图进行红蓝2染色,要求红点恰有\(k\)个,且两端点异色的边有偶数条。问染色方案数无重边无自环\(n\le2e5\)思路:考虑dp->复杂度不行。考虑组合数->......