牛客周赛Round 134

牛客周赛Round 134

Lionlnuc
Lionlnuc Lv4

Nowcoder Weekly Contest

思路:
直接判断
代码:

1
2
3
4
5
6
7
void solve()
{
int x;
cin>>x;
if(x>1599)cout<<"Unrated";
else cout<<"Rated";
}

ICPC Medal

思路:
不看银牌都处理成铜牌。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
void solve()
{
int a,b,c,x,y;
cin>>a>>b>>c>>x>>y;
c+=b*x;
while(c>=x*y){
int m=c/(x*y);
a+=m;
c=c-m*x*y+m;
}
cout<<a;
}

Unique Number

思路:
最优的情况就是
但是由于有 d 的限制,所以要保证 所以 。找到最小的 k 和 n 做对比得出答案。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const int N=2e5+5;
int a;
void solve()
{
int n;
cin>>n;
int ans=1e9;
for(int i=1;i<=n;i++)
{
cin>>a;
ans=min(ans,a+i-1);
}
cout<<min(ans+1,n)<<endl;
}

Balanced Array

思路:
滑动窗口。两个滑动窗口存储当前窗口的最大值和最小值,然后进行判断,进行左端点的更新。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const int N=2e5+5;
int a[N];
int qma[N],qmi[N];
void solve()
{
int n;
cin>>n;
int ans=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int h1=0,t1=-1;
int h2=0,t2=-1;
int l=0;
for(int r=0;r<n;r++)
{
while(h1<=t1&&a[qma[t1]]<a[r])t1--;
qma[++t1]=r;
while(h2<=t2&&a[qmi[t2]]>a[r])t2--;
qmi[++t2]=r;
while(h1<=t1&&h2<=t2&&(a[qma[h1]]-a[qmi[h2]]>1))//两个队列不为空,如果不满足条件,对应队头出队。
{
if(qma[h1]==l)h1++;
if(qmi[h2]==l)h2++;
l++;//左端点右移
}
ans+=r-l+1;
/*
计算以r为右端点方案的个数
[l,r],[l+1,r],...,[r-1,r],[r,r]
*/
}
cout<<ans<<endl;
}

Maximize The Sum

思路:
如果数组中全为 0,数组不会发生变化。
一次修改后的三个数字的异或和变为 ,从这里可以看出修改后三个值是不可能得到全 1 的,除非数组本来都是 1。这样最多就只有 n-1。
一个 1 可以变成两个 1,不断重复下去必然能得到 n-1 个 1。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void solve()
{
int n;
cin>>n;
string s;
cin>>s;
bool f0=1,f1=1;
for(int i=0;i<n;i++)
{
if(s[i]=='1'){
f0=0;
}else{
f1=0;
}
}
if(f0)cout<<"0"<<endl;
else if(f1)cout<<n<<endl;
else cout<<n-1<<endl;
}

F 明天补

  • 标题: 牛客周赛Round 134
  • 作者: Lionlnuc
  • 创建于 : 2026-03-09 00:00:00
  • 更新于 : 2026-03-09 00:00:00
  • 链接: https://lionlnuc.github.io/2026/03/09/牛客周赛Round 134/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论