A题
思路
按题意模拟即可
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std
;
typedef unsigned long long ull
;
typedef pair
<int,int> PII
;
typedef pair
<char,char> PCC
;
typedef long long ll
;
typedef pair
<ll
,ll
> PLL
;
const int N
=3*1e5+10;
const int M
=1e6+10;
const int INF
=0x3f3f3f3f;
const int MOD
=1e9+7;
void solve(){
int x
;cin
>>x
;
string s
=to_string(x
);
int u
=s
[0]-'0',v
=sz(s
),ans
=0;
rep(i
,0,u
-1) ans
+=10;
if(v
==4) ans
+=10;
else if(v
==3) ans
+=6;
else if(v
==2) ans
+=3;
else ans
++;
cout
<<ans
<<endl
;
}
int main(){
IOS
;
int t
;cin
>>t
;
while(t
--)
solve();
return 0;
}
B题
思路
找到起始
1
1
1的位置和结尾
1
1
1的位置,统计
[
s
t
,
e
d
]
[st,ed]
[st,ed]间0的位置即可
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std
;
typedef unsigned long long ull
;
typedef pair
<int,int> PII
;
typedef pair
<char,char> PCC
;
typedef long long ll
;
typedef pair
<ll
,ll
> PLL
;
const int N
=55;
const int M
=1e6+10;
const int INF
=0x3f3f3f3f;
const int MOD
=1e9+7;
int a
[N
];
void solve(){
int n
;cin
>>n
;
rep(i
,1,n
+1) cin
>>a
[i
];
int st
=0,ed
=0;
rep(i
,1,n
+1){
if(!st
&& a
[i
]) st
=i
;
if(a
[i
]) ed
=i
;
}
int ans
=0;
rep(i
,st
,ed
+1) if(!a
[i
]) ans
++;
cout
<<ans
<<endl
;
}
int main(){
IOS
;
int t
;cin
>>t
;
while(t
--)
solve();
return 0;
}
C题
思路
显然,如果最大值和最小值相同,则肯定不满足题意。否则,一定存在一个值
m
x
mx
mx它的左右两边存在一个小于它的数。此时,该位置的鱼满足题意。
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std
;
typedef unsigned long long ull
;
typedef pair
<int,int> PII
;
typedef pair
<char,char> PCC
;
typedef long long ll
;
typedef pair
<ll
,ll
> PLL
;
const int N
=3*1e5+10;
const int M
=1e6+10;
const int INF
=0x3f3f3f3f;
const int MOD
=1e9+7;
int a
[N
];
void solve(){
int n
;cin
>>n
;
int mx
=-1,mn
=INF
;
rep(i
,1,n
+1){
cin
>>a
[i
];
mx
=max(mx
,a
[i
]);
mn
=min(mn
,a
[i
]);
}
if(mx
==mn
) cout
<<-1<<endl
;
else{
a
[0]=INF
;
a
[n
+1]=INF
;
rep(i
,1,n
+1){
if(a
[i
]==mx
){
if(a
[i
]>a
[i
-1] ||a
[i
]>a
[i
+1]){
cout
<<i
<<endl
;
return;
}
}
}
}
}
int main(){
IOS
;
int t
;cin
>>t
;
while(t
--)
solve();
return 0;
}
D
思路
显然,如果海盗的类别只有一种,则一定会发生冲突。否则,我们只需要在一个与该海盗类别不同的结点下连边即可。
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std
;
typedef unsigned long long ull
;
typedef pair
<int,int> PII
;
typedef pair
<char,char> PCC
;
typedef long long ll
;
typedef pair
<ll
,ll
> PLL
;
const int N
=5005;
const int M
=1e6+10;
const int INF
=0x3f3f3f3f;
const int MOD
=1e9+7;
int a
[N
];
bool st
[N
];
void solve(){
int n
;cin
>>n
;
mst(st
,false);
set
<int> s
;
rep(i
,1,n
+1) cin
>>a
[i
],s
.insert(a
[i
]);
bool flag
=true;
if(sz(s
)==1) flag
=false;
if(!flag
) cout
<<"NO"<<endl
;
else{
cout
<<"YES"<<endl
;
rep(i
,1,n
+1){
rep(j
,1,n
+1){
if(a
[i
]!=a
[j
] && !st
[j
]){
cout
<<i
<<' '<<j
<<endl
;
st
[j
]=true;
st
[i
]=true;
}
}
}
}
}
int main(){
IOS
;
int t
;cin
>>t
;
while(t
--)
solve();
return 0;
}
E题
思路
简单的组合问题。第一个坑位有
n
n
n种选法,第二个坑位有
n
−
1
n-1
n−1种选法…最后一个坑位有
1
1
1种选法。最后再去掉重复的选法,得到公式
n
!
/
n
/
n
/
2
n!/n/n/2
n!/n/n/2。
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std
;
typedef unsigned long long ull
;
typedef pair
<int,int> PII
;
typedef pair
<char,char> PCC
;
typedef long long ll
;
typedef pair
<ll
,ll
> PLL
;
const int N
=3*1e5+10;
const int M
=1e6+10;
const int INF
=0x3f3f3f3f;
const int MOD
=1e9+7;
void solve(){
ll n
;cin
>>n
;
ll ans
=1;
rep(i
,1,n
+1) ans
*=i
;
cout
<<ans
/(n
*n
/2)<<endl
;
}
int main(){
IOS
;
solve();
return 0;
}