首页 > 其他分享 >Acwing76场周赛

Acwing76场周赛

时间:2022-11-06 10:59:02浏览次数:83  
标签:周赛 idx int Acwing76 inq long add include

题目链接

这次还是只做出来两道题,前两题都挺简单的,注意第二题需要开long long不开会wa,代码粘上来,以后可能会看吧


第一题

#include<iostream>
#include <string>
using namespace std;
string a, b;
int main()
{
    char str1[110], str2[110];
    cin >> str1 >> str2;
    a += str1; b += str2;
    if(a.length() != b.length())
    {
        cout << "NO";
        return 0;
    }
    for(int i = 0, j = b.length() - 1; i < a.length(); i ++ ,j --)
    {
        if(a[i] != b[j])
        {
             cout << "NO";
            return 0;
        }
    }
    cout << "YES";
    return 0;
}

第二题


#include <iostream>
#include <unordered_map>
using namespace std;

const int N = 1e5 + 10;
typedef long long ll;
unordered_map<char, ll>mp;
ll ans;
char a[N];

int main()
{
    cin >> a;
    for(int i = 0; a[i]; ++i) mp[a[i]] ++;
    for(auto x : mp)
    {
        ll k = x.second;
        ans += k * k;
    }
    cout << ans << endl;
    return 0;
}

第三题

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int N = 1010, M = N * 10;

typedef long long ll;
char str[N];
int d[N], n;
bool inq[N];

int h[N], e[M], w[M], ne[M], idx;
void add(int a, int b, int c)
{
    w[idx] = c; e[idx] = b; ne[idx] = h[a]; h[a] = idx ++;
    // cout << a << ' '<< b << ' ' << c << endl;
}

void spfa()
{
    queue<int>q;
    memset(d, -0x3f, sizeof d);
    d[0] = 0;q.push(0);inq[0] = 1;
    while(q.size())
    {
        int t = q.front();q.pop();inq[t] = 0;
        for(int i = h[t]; i != -1; i =ne[i])
        {
            int j = e[i];
            if(d[j] < d[t] + w[i])
            {
                d[j] = d[t] + w[i];
                if(!inq[j])
                {
                    inq[j] = 1;
                    q.push(j);
                }
            }
        }
    }
}

int main()
{
    memset(h, -1, sizeof h);
    cin >> n >> (str + 1);
    for(int i = 1; i <= n - 1; ++ i)
    {
        if(str[i] == '<')    add(i, i + 1, 1);
        else if(str[i] == '>')  add(i + 1, i, 1);
        else if(str[i] == '=')  add(i, i + 1, 0), add(i + 1, i, 0);
    }
    for(int i = 1; i <= n; ++ i)    add(0, i, 1);
    spfa();
    for(int i = 1; i <= n; ++ i)    cout << d[i] << ' ';
    return 0;
}

标签:周赛,idx,int,Acwing76,inq,long,add,include
From: https://www.cnblogs.com/cxy8/p/16862131.html

相关文章

  • OJ周赛第一场——连环画
    连环画 问题描述连环画是一种特殊类型的填字游戏。小马和小亮最近迷上了这个游戏。他们一共有n个不同的单词,每个单词有无限个。他们很好奇如果各自拿若干个单......
  • OJ周赛第一次——Good morning
    Goodmorning 问题描述一天,小马在A点过B分准时起床(24小时制),而小亮在C点过D分1秒准时起床。 输入 输入4个整数A,B,C,D0≤A≤230≤B≤590≤C≤230≤D≤5......
  • OJ周赛第一场——数列
    数列 问题描述给你一个长度为N的由0和1组成的整数序列:A=(A1,A2,⋯,AN​)。你可以选择是否进行一个操作。该操作为选择一个区间(l,r),使得区间的0变成1,1变成0。......
  • 2022年zzuli周赛(2)
    消消乐我们可以考虑贪心,想一想,如果\(s\)串和\(t\)串中有一个字母相同的话,是不是就相当于必然存在\(S,t\)相同(将两个字符串删减成一个字母就可以了)C:#include<stdio......
  • LeeCode 317周赛复盘
    T1:可被3整数的偶数的平均值思路:数组遍历被3整数的偶数\(\Leftrightarrow\)被6整数的数publicintaverageValue(int[]nums){intsum=0;intcount=0;......
  • leetcode 第90场双周赛
    6226.摧毁一系列目标题意:对于数组中每一个数nums[i],可以摧毁数组中值等于nums[i]+c*space的数(c为非负整数),求摧毁最大数量时的最小nums[i]思路:如果两个数x,y可以同时被摧......
  • acwing第75场周赛
    这次题比较水,但是还是没能ak,自己小结一下吧第一道题就是自己枚举相加就行第二道题是一个多关键字排序,wa了几次,是因为优先级有两个是相同的需要特判一下,然后可以把字符转......
  • 牛客OI周赛7-普及组
    这一场感觉良好也只能打这种普及组长长信心这样子A:救救喵咪给你坐标轴上的个点,求出对于每个点,有多少个点的坐标和坐标都大于它。()是开玩笑的吧直接#include<iostream>#d......
  • 2022级HAUT新生周赛题解汇总
    2022级HAUT新生周赛(零)题解@:2022级HAUT新生周赛(一)题解@卞子骏:2022级HAUT新生周赛(二)题解@武其轩:2022级HAUT新生周赛(三)题解@焦小航:2022级HAUT新生周赛(四)题解@张子豪:202......
  • LeeCode 316周赛复盘
    T1:判断两个事件是否存在冲突思路:判断两个区间是否有交集publicbooleanhaveConflict(String[]event1,String[]event2){//比较Unicode字符,使用compareTo函......