首页 > 其他分享 >牛客周赛52

牛客周赛52

时间:2024-07-22 19:40:54浏览次数:6  
标签:周赛 int res 52 牛客 fac inf define mod

 小红的最大字典

 

​编辑

思路:使用优先队列进行多路归并

#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
#define endl '\n'
#define pq priority_queue
using namespace std;
typedef pair<int,int> pii;

void solve(){
	priority_queue<pair<char,string>>q;
	int n;
	for(int i = 0;i < n;i ++){
		string s;
		cin >> s;
		q.push({s[0], s});
	}
	string ans = "";
	while(q.size()){
		auto [c, s] = q.top();
		q.pop();
		s.erase(0, 1);
		ans += c;
		if(s.size() > 0)
			q.push({s[0], s});
	}
	cout << ans << endl;
}

signed main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t = 1;
    while(t--)
    {
        solve();
    }
    return 0;
}
  

 

​编辑

思路:这里有个结论,只要左右括号相等,通过循环移位一定可以成为合法的字符串序列,所以这道题就变成一道组合数学的题了

int fac[N], inf[N];

int ksm(int a, int b) {
    int res = 1;
    while (b) {
        if (b & 1) res = res * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return res;
}

int C(int n, int m) {
    return fac[n] * inf[n - m] % mod * inf[m] % mod;
}


void solve() {
    fac[0] = inf[0] = 1;
    for (int i = 1; i < N; i++) {
        fac[i] = fac[i - 1] * i % mod;
        inf[i] = inf[i - 1] * ksm(i, mod - 2) % mod;
    }
    int n; cin >> n;
    string s; cin >> s;
    int c1 = 0, c2 = 0, cv = 0;
    for (auto i : s) {
        c1 += (i == '(');
        c2 += (i == ')');
        cv += (i == '?');
    }
    if (c1 > n / 2 || c2 > n / 2 || n & 1) {
        cout << 0 << '\n';
    } else cout << C(cv, abs(c1 - c2) + (cv - abs(c1 - c2)) / 2) << '\n';
}


标签:周赛,int,res,52,牛客,fac,inf,define,mod
From: https://www.cnblogs.com/litianyu1969/p/18316757

相关文章

  • 在AvaotaA1全志T527开发板上驱动WS2812 RGB LCD
    在AvaotaSBC的开发板中,通常会有几个WS2812RGBLED灯。例如AvaotaA1的如下位置:对于AvaotaOS,提供了硬件的LEDC(LightEmittingDiodeController),发光二极管控制器作为WS2812RGBLED灯的控制器。每个LED的三基色均可实现256级亮度显示,因此整个LED可完成25......
  • 题解:牛客周赛 Round 52 A
    A两数之和时间限制:C/C++1秒,其他语言2秒空间限制:C/C++262144K,其他语言524288KSpecialJudge,64bitIOFormat:%lld题目描述对于给定的正整数\(z\),你需要寻找两个不同的正整数\(x\)和\(y\),使得\(x+y=z\)成立。如果不存在这样的\(x\)和\(y\),你只需要输出NO。......
  • 京东员工达近52万人!阿里的2倍、拼多多的30倍
    据最新数据显示,京东员工总数已接近52万人。这一数字是阿里巴巴的2倍、腾讯的5倍、拼多多的30倍。对比其他互联网公司普遍以降本增效为主基调,京东的员工数量反而增加。过去一年增加了66445人,近两年总计增加13万人。兄弟们还等什么,赶快冲!正好今天要分享的粉丝投稿的面经里面就有京......
  • 小白牛客周赛52
    https://ac.nowcoder.com/acm/contest/86373C题小红的数字对对碰写之前一直没想到如此简单可能因为脑子转不过来,按位异或的意思差不多就是异或和,11=0,10=1,01=1,00=0,所以有此负数的异或将其先进行绝对值如3为11然后进行补码就变成了00这样子由此可以推出负数和负数的异或还是......
  • 2024牛客多校第二场
    BMST类似根号分治的思路,点数少的跑Prim,点数大的跑Kruscal有个坑点是分界点调100过不了,90能卡过去#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e5+5;constllinf=1e16;intn,m,Q;structed{intu,v,w;}edge[N<<1];bool......
  • Array Sum up increment. 1526, 3229
    1526.MinimumNumberofIncrementsonSubarraystoFormaTargetArrayYouaregivenanintegerarray target.Youhaveanintegerarray initial ofthesamesizeas target withallelementsinitiallyzeros.Inoneoperationyoucanchoose any subarray......
  • Codeforces Round 952 (Div. 4)复盘
    第一次打比赛的总结Q1CreatingWords这道题其实主要考的就是对于输入语句的理解,最开始我想的是运用scanf,puts,一个语句一个语句的去读取,但是确实对各个输入语句的了解过于肤浅了,特别是哪个读不读空格之类的,其实也算是没有把题目看清楚,它的难度其实没有自己以为的那么难,因为是限......
  • 牛客周赛 Round 52
    写在前面代码需要手动展开!!!第一次赛时AK牛客周赛A题要想分解成两个不同的正整数,这个数至少也得是3那么一个大于等于3的数可以分解成1和x-1点击查看代码#include<bits/stdc++.h>#defineall(x)(x).begin(),(x).end()#definefifirst#definesesecond#definelowbit(......
  • 牛客周赛 Round 52 最塘的一场也是看的出平时水平的一场
     A.两数之和题意+思路:你需要找到不同的正整数x和y,使得x+y=z成立->如果<=2输出NO如果>2就输出1z-1即可Code:n=int(input())ifn<=2:print('NO')else:print('YES')print(1,n-1)B.小红装匣子题意: 小红有a块1×2大小的......
  • 牛客FreeRTOS刷题总结
    1.在FreeRTOS中延时函数也相对模式和绝对模式,在FreeRTOS中不同的模式用的函数不同,其中函数vTaskDelay()是相对模式(相对延时函数),函数vTaskDelayUntil()是绝对模式(绝对延时函数)。两者都会阻塞任务。具体内容可以看博客这一篇:https://www.cnblogs.com/bathwind/p/18139217......