题目链接:http://codeforces.com/contest/1270 good bye 2019
A:最大的谁大谁赢
B:小小思维题,,,相邻两个绝对值大于等于2就输出那俩
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+9;
const int inf=0x3f3f3f3f;
int a[maxn];
typedef long long ll;
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
int minm=inf;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int flag=0;
for(int i=1;i<n;i++){
if(abs(a[i]-a[i-1])>1){
flag=1;
puts("YES");
printf("%d %d\n",i,i+1);break;
}
}
if(flag)continue;
puts("NO");
}
}
C:数学类型题,考察对抑或和性质的了解,题解中那个思考题应该是一个数就可以做到,好像是枚举每一位吧。。然后就是相对简单的,加上抑或和和抑或和和总和/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+9;
ll sum,X;
ll a[maxn];
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;int flag=0;X=0,sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
X^=a[i];
sum+=a[i];
}
puts("2");
cout<<X<<" "<<sum+X<<endl;
}
return 0;
}
D:交互式的题目呢,第一次做,得要会猜会写前几个样例试试,,
#include<bits/stdc++.h>
using namespace std;
const int maxn=510;
pair<int,int>a[maxn];
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=k+1;i++){
cout<<"? ";
for(int j=1;j<=k+1;j++){
if(i==j)continue;
printf("%d ",j);
}
cout<<endl;
cin>>a[i].second>>a[i].first;
}
sort(a+1,a+k+2);
int i;
for(i=1;i<=k;i++){
if(a[i+1].first>a[i].first){
break;
}
}
cout<<"! "<<k+1-i<<endl;
}