前言:
幸好今天这场没打,不然掉大分,好久没打了,什么感觉都没了
A. Mean Inequality(构造)
题意
给你一个数组a || 让你变换a成b
b满足如下
思路:
既然是 bi-1 + bi+1 / 2 不等于bi
所以就可以想一下也就是
bi-1+bi+1 两个数的平均值比bi大 ,然后不妨我们假设 是否是两大夹一小 这种情况
然后通过看样例 还真是
所以我们就可以把数组分为两组 然后交叉的输出就行了
(没想到在补题的时候 输出卡我了emmm)
Code:
#include <bits/stdc++.h>
using namespace std;
const int N = 60;
int a[N];
int main()
{
int t;
cin>>t;
while(t -- )
{
int n;
cin>>n;
for(int i = 1; i<=2*n ;i++)
cin>>a[i];
sort(a+1,a+1+2*n);
int ans = 0 ;
int i= 1 ,j =2*n ;
while( i < j )
cout<<a[i++]<<" "<<a[j -- ]<<" ";
cout<<endl;
}
return 0;
}
B. I Hate 1111(思维)
题意:
给你一个数 问是否可以弄成 11,111,1111…数的和
思路:
一开始以为要预处理,思路的确跑偏了
观察一下 其实 我们用到的只有11 和 111 这两个数据
因为后面的数据 1111 (可以直接用11 表示) 11111(可以表示成111*100 + 11) 以此类推
所以只用到这两个情况的前提下
我们不难发现其实 111也可以用11 表示即 11*10 + 1
也就是表示每10组 并且多1 的情况下 我们可以用111来表示
因此问题就变得简单了
code:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t -- )
{
int x;
cin>>x;
int mod = x/11;
int p1 = x - 11*mod;
///69 / 11 = 66 3
/// 3
if(p1<=mod/10)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}