牛客周赛 Round 5

A-游游的字母变换_牛客周赛 Round 5 (nowcoder.com)

#include <bits/stdc++.h>
#define int long long using namespace std; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); string s;
cin >> s;
for(int i = 0;i < s.size();i ++){
if(s[i] >= 'A' && s[i] < 'Z') s[i]++;
else if(s[i] > 'a' && s[i] <= 'z') s[i]--;
else if(s[i] == 'Z') s[i] = 'A';
else if(s[i] == 'a') s[i] = 'z'; }
cout << s << endl; return 0;
}

B-游游的排列构造_牛客周赛 Round 5 (nowcoder.com)

要使得\(a_i\)为前\(i\)个元素的最大值,我们可以考虑第一个放第\((n - k + 1)\)大元素,后面每两个依次放这个元素大\(1\),即\(k-1\),直到\(k = 0\),这样就能构成满足条件的序列了

#include <bits/stdc++.h>
#define int long long using namespace std; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); int n,k;
cin >> n >> k; for(int i = 1,j = 1;j <= n;j++){
if(k > 0 && (j & 1)) {
cout << n - k + 1 << ' ';
k--;
}else{
cout << i ++ << ' ';
}
} return 0;
}

C-游游的二进制树_牛客周赛 Round 5 (nowcoder.com)

考虑\(1 \le n \le 10^3\),我们直接暴搜(其实最开始只是想骗点分),最开始我是傻傻的按01字符串转换成数字去判断是否满足条件的,但是最后只得了\(80pt\),QAQ,后来看了别人的,发现其实直接往左移一位就可以了qwq

#include <bits/stdc++.h>
#define int long long using namespace std; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); int n,l,r;
cin >> n >> l >> r;
string s;
cin >> s;
s = " " + s;
vector<int> g[n + 1];
for(int i = 1,x,y; i < n;i ++){
cin >> x >> y;
g[x].emplace_back(y);
g[y].emplace_back(x);
} int ans = 0;
string str;
function<void(int,int,int,int)> dfs = [&](int u,int v,int val,int len){ if(val > r)
return ; if(val >= l && val <= r && len > 1){
ans ++;
} for(auto i : g[u]){
if(i == v) continue;
dfs(i,u,(val << 1) + s[i] - '0',len + 1);
}
}; for(int i = 1;i <= n;i ++){
dfs(i,0,s[i] - '0', 1);
} cout << ans << endl; return 0;
}

D-游游的矩阵统计_牛客周赛 Round 5 (nowcoder.com)(双指针)

当 上层\(k\)个元素和下层\(k\)个元素都不同时,我们知道此时恰好有\(k-1\)种不同的元素的\(2*2\)的子矩阵数量.

\[\begin{bmatrix}
1 & 1 & 1 & 1\\
2 & 2 & 2 & 2
\end{bmatrix}
\]

像这样,就有\(3\)个符合条件的子矩阵数量,

但是对于这样的我们不太好去判断

\[\begin{bmatrix}
1 & 2\\
1 & 1
\end{bmatrix}
\]

所以我们可以每次判断完成后记录最后上下两个元素去下一轮单独判断,当然最开始一列是没有前面的元素的,所以$ i \ne 0 || j \ne 0$,判断的同时,将判断完的的元素删去,好让指针指向下一个连续段

#include <bits/stdc++.h>
#define int long long using namespace std;
typedef pair<int,int> PII; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); int n,m1,m2;
cin >> n >> m1 >> m2;
vector<PII> up(m1),down(m2);
for(auto &[x,y] : up)
cin >> x >> y;
for(auto &[x,y] : down)
cin >> x >> y; map<int,int> mp;
int i = 0, j = 0, ans = 0;
while(i < m1 || j < m2){
mp[up[i].first]++;
mp[down[j].first] ++; if((i != 0 || j != 0) && mp.size() == 2)
ans ++; if(up[i].first != down[j].first){
int k = min(up[i].second, down[j].second);
up[i].second -= k;
down[j].second -= k;
ans += k - 1;
}else{
int k = min(up[i].second, down[j].second);
up[i].second -= k;
down[j].second -= k;
} mp.clear();
mp[up[i].first] ++;
mp[down[j].first] ++; if(!up[i].second) i++;
if(!down[j].second) j++;
} cout << ans << endl; return 0;
}

E-小红的树构造_牛客周赛 Round 5 (nowcoder.com)

想要使得所有点权值乘积最小,肯定也要路径最短,那自然是菊花图啦

因此一共有\(2-2/3-3,2-3/3-2,2-2-2/3-3-3,2-2-3/2-3-2/3-2-2,3-2-3/2-3-3\)这几种路径,

为啥把\(2-2/3-3,2-2-2/3-3-3\)放一起呢,因为它们的乘积的因子数都是相同的,其他的只是位置不同,路径结果是一样的

且\(3,2\)这样单独组合的因子数要小于它们混合组合的因子数,因此我们要尽量的把\(2,3\)中数量最多的放菊花图的中心

#include <bits/stdc++.h>
#define int long long using namespace std; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); int n,k;
cin >> n >> k;
n -= k;
if(n > k) swap(n,k);//看谁数量更多就放中心 const int mod = 1e9 + 7;
auto 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 ans = 1;
ans = ksm(3,k - 1) % mod;
//2-2/3-3有k-1条边
ans = ans * ksm(4,n) % mod;
//2-3/3-2有n条边
ans = ans * ksm(4,(k - 1) * (k - 2) / 2) % mod;
//2-2-2/3-3-3有(k-1)*(k-2)/2条边,因为有个点在中心
ans = ans * ksm(6,(k - 1) * n) % mod;
//2-2-3...有(k-1)*n条边
ans = ans * ksm(6,n * (n - 1) / 2) % mod;
//3-3-2...有n*(n-1)/2条边
cout << ans << endl;
return 0;
}

牛客周赛 Round 5的更多相关文章

  1. 牛客周赛11TG B-弹钢琴

    链接:https://ac.nowcoder.com/acm/contest/941/B来源:牛客网 题目描述 春希想听和纱弹钢琴! 为了阻止异变的发生,Pi将钢琴魔改了 钢琴上有 N 个键,每个键有 ...

  2. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  3. 牛客OI周赛8-提高组A-用水填坑

    牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...

  4. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)

    链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  5. 牛客OI周赛7-提高组 A 小睿睿的等式

    链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...

  6. 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)

    链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...

  7. 牛客OI周赛7-普及组 解题报告

    出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...

  8. 牛客OI周赛2-提高组

    A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  9. 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)

    https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...

  10. 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)

    链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...

随机推荐

  1. 使用python解析nginx日志

    性能测试时,需使用生产环境各接口请求比例分配接口请求比,nginx统计脚本如下: import re import pandas as pd import xlwt obj = re.compile( ...

  2. UITableView的使用样例(简易向)

    功能实现 构建一个UITableView,并使其默认显示a,b,c--.. 构建一个按钮,点击后列表变为英文字母 构建一个按钮,点击后列表变为数字 基本概念 实现前头文件需要签订协议(如何签订向后看) ...

  3. Mysql 聚合函数嵌套使用

    Mysql 聚合函数嵌套使用 目的:Mysql 聚合函数嵌套使用 聚合函数不可以直接嵌套使用,比如: max(count(*)) 思路:但是可以嵌套子查询使用(先分组取出count值, 再将count ...

  4. ClickHouse介绍(三)MergeTree系列表引擎

    MergeTree系列表引擎 ClickHouse中最核心的引擎当属MergeTree系列引擎,其中基础表引擎为MergeTree,常用的表引擎还有ReplacingMergeTree.Summing ...

  5. CF620E

    题目 CF620E 思路 这个题是一个在树上操作的题,每次操作的对象都是以一个结点为根的子树,在1e5的操作下暴力做法必然会超时 观察到c的范围很小,可以考虑状态压缩 考虑将此问题转化为区间问题,利用 ...

  6. 面向对象VS面向过程

    什么是面向对象呢? 对于接触或者熟悉一些编程知识的同学来讲,"面向对象"这个词儿一点儿也不陌生.经常听说XX语言是完全面向对象的编程语言,比如C#.Java这些便是完全面向对象的编 ...

  7. 解决方案 | Windows 验证账号出现 0x80190001错误解决

    一.问题描述 点击windows开始→账户→更改账户设置→验证,出现下面的错误. 二.解决方法 网上流行的是这个方法,https://blog.csdn.net/qq_36393978/article ...

  8. 使用GSAP制作动画视频

    GSAP 3Blue1Brown给我留下了深刻印象.利用动画制作视频,内容简洁,演示清晰.前两天刚好碰到一件事,我就顺便学习了一下怎么用代码做动画. 以javascrip为例,有两个动画引擎,GSAP ...

  9. 全网最适合入门的面向对象编程教程:18 类和对象的 Python 实现-多重继承与 PyQtGraph 串口数据绘制曲线图

    全网最适合入门的面向对象编程教程:18 类和对象的 Python 实现-多重继承与 PyQtGraph 串口数据绘制曲线图 摘要: 本文主要介绍了 Python 中创建自定义类时如何使用多重继承.菱形 ...

  10. [oeasy]python0104_指示灯_显示_LED_辉光管_霓虹灯

    编码进化 回忆上次内容 x86.arm.riscv等基础架构 都是二进制的 包括各种数据.指令   但是我们接触到的东西 都是屏幕显示出来的字符   计算机 显示出来的 一个个具体的字型   ​   ...