首页 > 其他分享 >Codeforces Round #553 (Div. 2) A,B,C,D

Codeforces Round #553 (Div. 2) A,B,C,D

时间:2023-05-26 15:02:55浏览次数:44  
标签:int ll cin 553 Codeforces xx tie Div mod


A:Maxim and Biology

传送门

因为数据范围比较小,就暴力就完事儿了。

#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int convert(char a, char b)
{
    if (a == b)
        return 0;
    if (a > b)
        swap(a, b);
    int x = b - a;
    a = a - 'A' + 26;
    b = b - 'A';
    int y = a - b;
    return x < y ? x : y;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n = 0, ans = INF;
    string s;
    cin >> n;
    cin >> s;
    for (int i = 0; i <= n - 4; i++)
    {
        int t = 0;
        t += convert(s[i], 'A');
        t += convert(s[i + 1], 'C');
        t += convert(s[i + 2], 'T');
        t += convert(s[i + 3], 'G');
        if (t < ans) ans = t;
    }
    cout << ans << endl;
    return 0;
}

B:Dima and a Bad XOR

传送门

因为要求异或最终结果大于零,那么由异或的性质可以得到,只要给定的数里有两个及以上不同的数,一定是满足题目要求的,否则的话,就全异或起来看一看就OK了。

#include <bits/stdc++.h>
using namespace std;
int x[520][520];
set<int>s;
int main()
{
#ifndef ONLINE_JUDGE
    freopen("in","r",stdin);
#endif // ONLINE_JUDGE
    cin.tie(0);
    cout.tie(0);
    int n,m,id = -1;
    cin >> n >> m;
    for(int i = 1;i <= n; i++)
    {
        s.clear();
        for(int j = 1;j <= m; j++)
        {
            cin >> x[i][j];
            s.insert(x[i][j]);
        }
        if(s.size() >= 2)
            id = i;
    }
    if(id == -1)
    {
        int ans = 0;
        for(int i = 1;i <= n; i++)
            ans ^= x[i][1];
        if(ans)
        {
            cout << "TAK" << endl;
            for(int i = 1;i <= n; i++)
                cout << 1 << " ";
            cout << endl;
        }
        else
            cout << "NIE" << endl;
    }
    else
    {
        cout << "TAK" << endl;
        int ans = 0,k;
        for(int i = 1;i <= n; i++)
            if(i != id)
                ans ^= x[i][1];
        for(int i = 1;i <= m; i++)
        {
            k = ans ^ x[id][i];
            if(k)
            {
                for(int j = 1;j <= n; j++)
                {
                    if(j != id)
                        cout << 1 << " ";
                    else
                        cout << i << " ";
                }
                cout << endl;
                break;
            }
        }
    }
    return 0;
}

C:Problem for Nazar

传送门

一种前缀和的思想,既然是让求指定区间的和,那么就可以用大区间的和减去小区间的和。只不过因为数据的问题,很明显不能用一个数组存储前缀和。但是数列是有规律的,可以数出区间内有多少偶数,多少奇数,这些奇数偶数都是有规律的,就可以求和,然后计算就OK了。

#include<bits/stdc++.h>
typedef int in;
#define int long long
using namespace std;
const int mod = 1e9+7;
int xx[2];
int sum(int x)
{
    int f = 0,c = 1;
    xx[0] = 0;
    xx[1] = 0;
    while(x)
    {
        xx[f] += min(c,x);
        x -= min(c,x);
        f = !f;
        c *= 2;
    }
    int ji = ((xx[0] % mod) * (xx[0] % mod)) % mod;
    int ou = ((xx[1] % mod) * ((xx[1] + 1) % mod)) % mod;
    return (ji + ou) % mod;
}
in main()
{
    int l,r;
    cin >> l >> r;
    int ans = (sum(r) - sum(l-1) + mod) % mod;
    cout << ans << endl;
    return 0;
}

D:Stas and the Queue at the Buffet

传送门

性价比排序,找到最佳的性价比,排序完成后根据题目要求算和就OK了。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e5 + 10;
typedef struct node
{
    ll a,b;
    bool operator < (const node &r)
    {
        ll x = a - b;
        ll y = r.a - r.b;
        return x > y;
    }
};
node x[maxn];
int main()
{
#ifndef ONLINE_JUDGE
    freopen("in","r",stdin);
#endif // ONLINE_JUDGE
    cin.tie(0);
    cout.tie(0);
    ll n;
    cin >> n;
    for(ll i = 0;i < n; i++)
        cin >> x[i].a >> x[i].b;
    sort(x,x + n);
    ll ans = 0;
    for(ll i = 0;i < n; i++)
        ans += (x[i].a * i + x[i].b * (n - i - 1));
    cout << ans << endl;
    return 0;
}

 

标签:int,ll,cin,553,Codeforces,xx,tie,Div,mod
From: https://blog.51cto.com/u_16131191/6356124

相关文章

  • CodeForces 1108C Nice Garland(DFS)
    传送门题目大意就是给你一个由'R','G','B'三个字母组成的字符串,然后这个字符串需要满足任意相邻的三个字符不能相同,如果不满足则需要你对其进行更改,然后输出更改的次数和更改完的字符串。具体的思路就是枚举"RGB"这三个的组合,显然只有3!个,然后依次计算步数代码如下#include<iostream>......
  • Codeforces Round #552 (Div. 3) 1154
    A:传送门就是解个方程,也没什么说的#include<bits/stdc++.h>usingnamespacestd;intmain(){inta[4],x,b,c;for(inti=0;i<4;i++)cin>>a[i];sort(a,a+4);c=a[3]-a[0];x=a[1]-c;b=a[2]-c;cout<<x......
  • Educational Codeforces Round 149 (Rated for Div. 2)
    EducationalCodeforcesRound149(RatedforDiv.2)A-GrasshopperonaLine思路:只有两种情况,x整除k时为x-1和1,否则为xvoidsolve(){intx,k;cin>>x>>k;if(x%k==0){cout<<"2\n"<<x-1<<&qu......
  • Codeforces 1439E - Cheat and Win
    模拟赛放了道*3500,结果全场都切了,非常恐怖。首先考虑怎么样的树是合法的,打个表发现SG函数值为\(\sum_{d}2^d·(\text{深度为d的点个数}\bmod2)\),换句话说后手必胜当且仅当每种深度的点数都是偶数。于是实际上我们只用建出虚树之后树上差分一下求出每个点被覆盖的情况,进而......
  • 【题解】Codeforces Round 737 (CF1557)
    VP情况:solve:4/5rank:431st评价:VP了一下,我这个shaberB直接5发罚时,耽误了二十多分钟,以及被D各种细节差点搞死。A.EzzatandTwoSubsequences(*800)题目描述:给定一个序列,将其分为\(2\)个组,要求这两个组的平均值之和最大,组内的数不要求在原序列中连续。题目分析:我们......
  • CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!) A-E
    CodeTONRound4(Div.1+Div.2,Rated,Prizes!) A.BeautifulSequenceinta[N],poi[N];voidsolve(){intn=read(),ans=0;for(inti=1;i<=n;i++){a[i]=read();}for(inti=1;i<=n;i++){if(a[i]<=i)ans=1;}......
  • 【CSS】div宽度由内部文字宽度决定
    默认div的宽度会占满全屏或由父级决定使用  width:fit-content;可以解决前后对比前:后: ......
  • CodeForces 1827E Bus Routes
    洛谷传送门CF传送门比较神奇的题。定一个非叶子\(r\)为根。显然只用判断两个叶子是否可达。求出每个叶子向上能一步跳到的深度最浅的点\(p_i\),那么如果\(p_i\)不在一条链上就无解,因为两条路径没有交点。然后只用判断\(p_i\)最深的叶子的\(p_i\)能不能一步到达其他......
  • Codeforces Gym 103119B - Boring Problem(高斯消元)
    考虑建出AC自动机,朴素做法是高斯消元,\(f_i=\sum\limits_{j=0}^{k-1}f_{to_{i,j}}p_j+1\),复杂度\(O(n^3m^3)\),不能接受。考虑优化高斯消元的过程,我们定义以下节点为“关键点”:根节点对于一个trie树(也就是未经过AC自动机getfail操作得到的树)上有超过两个儿子的节点\(x......
  • Codeforces Round 862 (Div. 2) A-D
    CodeforcesRound862(Div.2) A.WeNeedtheZerointa[N];voidsolve(){intn=read(),sum;for(inti=1;i<=n;i++){a[i]=read();if(i==1)sum=a[i];elsesum^=a[i];}if(n%2)cout<<sum<<'\n'......