牛客周赛 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. WPF Canvas在Image 图像上绘图,自适应缩放.

    效果如图 实现了绘图,自适应缩放 核心代码如下 <Window.InputBindings> <KeyBinding Key="Z" Modifiers=&quo ...

  2. Debezium-Flink-Hudi:实时流式CDC

    1. 什么是Debezium Debezium是一个开源的分布式平台,用于捕捉变化数据(change data capture)的场景.它可以捕捉数据库中的事件变化(例如表的增.删.改等),并将其转为 ...

  3. 高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  4. 使用Swig转换C++到别的编程语言

    项目github地址: aoce 设定aoce能分别与UE4/Unity3D/android demo对接,就这三来看,分别是C++/C#/java三种语言. C++导出给别的语言使用,一般来说,分为 ...

  5. npm install及其目录结构

    npm install 安装包及其依赖.npm install: 默认情况下,安装package.json文件中列出的所有依赖.加-P或--production后,只安装dependencies列出的 ...

  6. P5494 题解

    来一发 \(O(\log n)\) 线性空间的解法. 考虑通过只维护线段树叶子节点的虚树的方法压缩空间,考虑记录下每个节点的编号,然后通过异或完求最低位的 \(1\) 的方式求出 LCA 的深度,然后 ...

  7. PHP+Redis 实例【一】点赞 + 热度

    前言 点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql(写了几百行的代码都还没写完,有毒)啦 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或m ...

  8. oeasy教您玩转vim - 8 - # 追加文本

    追加文本 回忆上节课内容 我们这次深入了 i 命令 i 在当前的光标之前插入 I 在本行文本的最前面插入 还有一些常用的编辑命令 . 重做 u 撤销 ctrl+r 还原 关于插入,还有什么讲究吗? 类 ...

  9. 指针_C

    指针的代码 // Code file created by C Code Develop #include "ccd.h" #include "stdio.h" ...

  10. 解决vue.js出现Vue.js not detected错误

    第一:在拓展应用的文件夹中找到文件manifest.json,打开并将此处的false改成true. 第二:在vuejs devtool拓展程序的详情页中开启以下两个选项 如果你看到这,恭喜你,看到全 ...