游游的you(简单)(贪心,模拟)
链接:https://www.nowcoder.com/questionTerminal/cd117803b3364b218a8b3dcc498dee25?page=1&onlyReference=false
来源:牛客网
游游现在有a个’y’,b个’o’,c个’u’,他想用这些字母拼成一个字符串。
三个相邻的字母是"you"可以获得2分,两个相邻的字母是"oo",可以获得1分。
问最多可以获得多少分?
输入描述:
第一行一个整数qqq,代表询问次数。
接下来qqq行,每行三个正整数a,b,ca,b,ca,b,c,用空格隔开。
1≤q≤1051\leq q \leq 10^51≤q≤105
1≤a,b,c≤1091\leq a,b,c \leq 10^91≤a,b,c≤109
输出描述:
输出qqq行,代表每次询问的答案。
示例1
输入
3
1 1 1
2 3 2
1 5 2
输出
2
4
5
说明
第一次询问,可以拼出"you",获得2分。
第二次询问,可以拼出"oyouyou",获得4分。
第三次询问,可以拼出"uooooyou",获得5分。
代码
#include <iostream>
using namespace std;
int y,o,u;
int main() {
int n;
cin>>n;
while(n--)
{
cin>>y>>o>>u;
int sum=0;
int k=min(y,o);
k=min(k,u);
sum+=2*k;
y-=k;
o-=k;
u-=k;
if(o>=2)
sum+=o-1;
cout<<sum<<endl;
}
}
NC398 腐烂的苹果(中等)(多源bfs)
描述
给定一个 𝑛×𝑚 n×m 的网格,其中每个单元格中可能有三种值中的一个 0 , 1 , 2。
其中 0 表示这个格子为空、1 表示这个格子有一个完好的苹果,2 表示这个格子有一个腐烂的苹果。
腐烂的苹果每分钟会向上下左右四个方向的苹果传播一次病菌,并导致相邻的苹果腐烂。请问经过多少分钟,网格中不存在完好的苹果。如果有苹果永远不会腐烂则返回 -1
数据范围: 1≤𝑛,𝑚≤1000 1≤n,m≤1000 ,网格中的值满足 0≤𝑣𝑎𝑙≤2 0≤val≤2
示例1
输入:
[[2,1,1],[1,0,1],[1,1,1]]
返回值:
4
示例2
输入:
[[2,1,0],[1,0,1],[0,0,0]]
返回值:
-1
代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param grid int整型vector<vector<>>
* @return int整型
*/
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int rotApple(vector<vector<int> >& grid) {
int n,m;
n=grid.size();
m=grid[0].size();
queue<pair<int,int>> q;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(grid[i][j]==2)
q.push({i,j});
}
}
int step=0;
while(q.size())
{
int sz=q.size();
step++;
while(sz--)
{
int i=q.front().first;
int j=q.front().second;
q.pop();
for(int k=0;k<4;k++)
{
int x=dx[k]+i,y=dy[k]+j;
if(x>=0&&x<n&&y>=0&&y<m&&grid[x][y]==1)
{
grid[x][y]=2;
q.push({x,y});
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(grid[i][j]==1)
return -1;
}
}
return step-1;
}
};
JZ62 孩子们的游戏(圆圈中最后剩下的数)(中等)(动态规划,约瑟夫环问题)
孩子们的游戏(圆圈中最后剩下的数)_牛客题霸_牛客网 (nowcoder.com)
描述
每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0… m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客礼品,请你试着想下,哪个小朋友会得到这份礼品呢?
数据范围:1≤𝑛≤50001≤n≤5000,1≤𝑚≤100001≤m≤10000
要求:空间复杂度 𝑂(1)O(1),时间复杂度 𝑂(𝑛)O(n)
示例1
输入:
5,3
复制
返回值:
3
复制
示例2
输入:
2,3
复制
返回值:
1
复制
说明:
有2个小朋友编号为0,1,第一次报数报到3的是0号小朋友,0号小朋友出圈,1号小朋友得到礼物
示例3
输入:
10,17
复制
返回值:
2
代码
class Solution {
public:
int LastRemaining_Solution(int n, int m) {
// write code here
int dp=0;
for(int i=1;i<=n;i++)
{
dp=(dp+m)%i;
}
return dp;
}
};
复制
返回值:
2
## 代码
```c++
class Solution {
public:
int LastRemaining_Solution(int n, int m) {
// write code here
int dp=0;
for(int i=1;i<=n;i++)
{
dp=(dp+m)%i;
}
return dp;
}
};