题目大意:
第一个乘客随便坐,从第二个乘客开始只能选择一个两边至少有一个座位不是空位的
AC:
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int st[N],p[N];
void solve()
{
int n;
cin>>n;
for(int i=0;i<=n+1;i++) st[i]=0;
for(int i=1;i<=n;i++)
cin>>p[i];
for(int i=1;i<=n;i++)
{
if(i==1)
{
st[p[i]]=1;
continue;
}
if(st[p[i]+1]==1||st[p[i]-1]==1) st[p[i]]=1;
else
{
cout<<"No\n";
return;
}
}
cout<<"Yes\n";
}
int main()
{
int t;
cin>>t;
while(t--) solve();
return 0;
}
B-你好,这里是牛客竞赛_牛客周赛 Round 59 (nowcoder.com)
题目大意:
其实就是字符串匹配,根据不同情况进行对应的
AC(方法一):
#define _CRT_SECURE_NO_WARNINGS 1
//------ 棘手大学 世界第一 ------//
//------ 吉大出品 必出精品 ------//
#include<bits/stdc++.h>
#include<stdio.h>
#include<unordered_map>
#include<unordered_set>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
using namespace std;
typedef long long ll;
#define IOS ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr);
const int N = 2e6 + 10;
string s1 = "https://www.nowcoder.com";
string s2 = "https://ac.nowcoder.com";
string s3 = "www.nowcoder.com";
string s4 = "ac.nowcoder.com";
void solve()
{
string s;
cin >> s;
string t1, t2, t3, t4;
for (int i = 0; i < s.size() && i < s1.size(); i++)
{
t1.append(1, s[i]);
}
for (int i = 0; i < s.size() && i < s2.size(); i++)
{
t2.append(1, s[i]);
}
for (int i = 0; i < s.size() && i < s3.size(); i++)
{
t3.append(1, s[i]);
}
for (int i = 0; i < s.size() && i < s4.size(); i++)
{
t4.append(1, s[i]);
}
if (t1 == s1 || t3 == s3)
{
cout << "Nowcoder\n";
}
else if (t2 == s2 || t4 == s4)
{
cout << "Ac\n";
}
else
{
cout << "No\n";
}
return;
}
int main()
{
IOS;
ll t;
cin >> t;
while(t--)
solve();
return 0;
}
str.apend(x,y),将x个y拼接到str后面
AC(方法二):
#define _CRT_SECURE_NO_WARNINGS 1
//------ 棘手大学 世界第一 ------//
//------ 吉大出品 必出精品 ------//
#include<bits/stdc++.h>
#include<stdio.h>
#include<unordered_map>
#include<unordered_set>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
using namespace std;
typedef long long ll;
#define IOS ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr);
const int N = 2e6 + 10;
string s1 = "https://www.nowcoder.com";
string s2 = "https://ac.nowcoder.com";
string s3 = "www.nowcoder.com";
string s4 = "ac.nowcoder.com";
void solve()
{
string s;
cin >> s;
if (s.find(s1) == 0 || s.find(s3) == 0)
{
cout << "Nowcoder\n";
return;
}
else if (s.find(s2) == 0 || s.find(s4) == 0)
{
cout << "Ac\n";
return;
}
else
{
cout << "No\n";
return;
}
}
int main()
{
IOS;
ll t;
cin >> t;
while(t--)
solve();
return 0;
}
str.find(x),如果能在str中找到x字符串,则返回匹配的第一个字符的下标
C-逆序数_牛客周赛 Round 59 (nowcoder.com)
题目大意:
给定n,数组中只能包含任意位置的(1~n)且每个数字只能出现一次,k是该数组中含有的逆序数个数,要求选择一组符合n,k要求排序的数,将其倒序后求出其逆序数个数
思路:
该题其实存在规律,原来序列和倒序后的序列的逆序数个数之和为n*(n-1)/2个
AC:
void solve()
{
ll n, k;
cin >> n >> k;
cout << n * (n - 1) / 2 - k << "\n";
return;
}