打开电脑,忽然发现今天又div3,打!
22点35分,比赛开始了
A
题面
CF题面
给定
n
n
n,构造一个长度为
n
n
n的排列
p
p
p,要求没有i(1
≤
\leq
≤
i
i
i
≤
\leq
≤ n)=
p
i
p_i
pi。
思路
将最后一个数先输出,后面按从1~n-1的顺序输出
代码
#include<bits/stdc++.h>
#include<algorithm>
#define int long long
using namespace std;
signed main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
//MessageBox(GetForegroundWindow(),"标题","内容",MB_YESNO);
int t;
cin>>t;
int n;
while(t--){
cin>>n;
cout<<n<<' ';
int sum=0;
for(int i=1;i<=n-1;i++){
sum++;
cout<<sum<<' ';
}
cout<<endl;
}
return 0;
}
B
题面
CF题面
给定
n
n
n和
a
a
a数组
要求找出最小且仅在数组中出现过一次的数,如果不存在,输出
−
1
-1
−1
思路
开一个 v e c t o r vector vector,将每一个数都存进去,找出 s i z e size size是1的即可。
代码
#include<bits/stdc++.h>
#include<algorithm>
#define int long long
using namespace std;
void slove(){
int n,x;
cin>>n;
vector<int>sum(n+5);
for(int i=1;i<=n;i++){
cin>>x;
sum[x].push_back(i);
}
for(int i=1;i<=n;i++){
if(sum[i].size()=1){
cout<<sum[i].back()+1<<endl;
return;
}
}
cout<<"-1"<<endl;
}
signed main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
//MessageBox(GetForegroundWindow(),"标题","内容",MB_YESNO);
int t;
cin>>t;
while(t--){
slove();
}
return 0;
}
C
题面
CF题面
给定
n
n
n和
a
a
a数组
选择至少出现过一次的整数
x
x
x,然后执行任意次数(可能是零)的以下操作:
选择序列的某个段[
l
l
l,
r
r
r]并将其删除。但有一个例外:您不能选择包含
x
x
x的片段。更正式地说,您可以选择一些连续的子序列
a
l
a_l
al,
a
l
+
1
a_{l+1}
al+1,
…
…
…,
a
r
a_r
ar,使得
a
i
≠
x
ai≠x
ai=x,并去掉它。
删除后,被删除段右侧的元素编号会发生变化:原来是第(r+1)个元素的元素现在是第l个元素,第(
r
+
2
r+2
r+2)个元素现在是第(
l
+
1
l+1
l+1)个元素,依此类推(即剩余的序列刚刚折叠)。
思路
暴力枚举,让每一个数都等于x,找出分的段数即可。注意头和尾必须减1。
代码
#include<bits/stdc++.h>
#include<algorithm>
#define int long long
using namespace std;
int a[200005],sum[200005];
signed main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
//MessageBox(GetForegroundWindow(),"标题","内容",MB_YESNO);
ios_base::sync_with_stdio(false);
int t;
cin>>t;
int n;
while(t--){
cin>>n;
memset(sum,0,sizeof(sum));
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]!=a[i-1]){
sum[a[i]]++;
}
}
sum[a[1]]--,sum[a[n]]--;
int minv=1e9;
for(int i=1;i<=n;i++){
minv=min(minv,sum[a[i]]);
}
cout<<++minv<<endl;
}
return 0;
}
总结
D E F DEF DEF题都没有做出来, B C BC BC两题都想复杂了,需要多做题,多刷题,见更多的题,希望下次 d i v 3 div3 div3不要再这么丢人了/kk