2020新生赛题解
作者:互联网
A
题面:
结构体+快排
#include<bits/stdc++.h>
using namespace std;
struct node{
char name[105];
int time;
}a[1000005];
int cmp(node a,node b){
if(a.time<b.time){
return 1;
}
return 0;
}
int main(){
int n;
cin>>n;
for(int i = 1;i <= n;i++){
cin>>a[i].name>>a[i].time;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<" ";
}
return 0;
}
L
题面:
法一:计数,若是奇数就输出
法二:所有数异或,输出结果
#include<bits/stdc++.h>
using namespace std;
int n;
int d=0;
int a[1000005];
int main(){
cin>>n;
for(int i = 0;i < n;i++){
cin>>a[i];
}
for(int i = 0;i <n;i++){
d^=a[i];
}
cout<<d;
return 0;
}
F
题面:
博弈论,一直会赢
故输出:
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
printf("Win");
return 0;
}
M
题面:
如果k==n,则a和b重合或者b在a右边即可,移动步数为0;
如果k>n,a则需要移动到k点才可;
如果k<n,则b点可能在a点左边找到,如果a点(n)为奇数,则可能的k为奇数,反之为偶数,则只需判断输入的k和n的奇偶性是否相同,相同不需要移动,不同a点向右移动一步即可。
#include<bits/stdc++.h>
using namespace std;
int t;
int k[1000005];
int n[1000005];
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>n[i]>>k[i];
}
for(int i=1;i<=t;i++){
if(k[i]==n[i]){
cout<<0<<endl;
}
if(k[i]>n[i]){
cout<<k[i]-n[i]<<endl;
}
else{
if(((n[i]&1==1)&&(k[i]&1==1))||((n[i]&1==0)&&(k[i]&1==0))){
cout<<0<<endl;
}else{
cout<<1<<endl;
}
}
}
return 0;
}
I
题面:
因为只有平方数的因子是奇数个,即平方数编号的学妹会进行奇数次操作,因此一定会保持站着。
#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
cin>>n;
for(long long i=1;i*i<=n;i++){
cout<<i*i<<" ";
}
return 0;
}
J
题面:
先按所有的结束时间排序,
然后选择不会重复的时间计数
#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
int start;
int last;
}a[50005];
int cmp(node a,node b){
if(a.last<b.last){
return 1;
}
return 0;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].start>>a[i].last;
}
sort(a+1,a+n+1,cmp);
/*for(int i=1;i<=n;i++){
cout<<a[i].start<<" "<<a[i].last<<endl;
}*/
int ans=0,l=0;
for(int i=1;i<=n;i++){
if(a[i].start>=l){
l=a[i].last;
ans++;
}
}
cout<<ans;
return 0;
}
K
题面:
只需要判断输入的数字是否为递减顺序即可
#include <stdio.h>
int main(){
int a[50005];
int n,flag=1,t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=0;i<n-1;i++){
if(a[i]<=a[i+1]){
flag=0;
break;
}
}
if(flag==1){
printf("NO\n");
}else{
printf("YES\n");
}
flag=1;
}
}
标签:include,cout,int,题解,新生,cin,题面,2020,main 来源: https://blog.csdn.net/zhaoawen/article/details/111461288