昨天晚上寝室停电了就挺离谱的
所以十二点半就睡了 ab题在机房就出了
回寝室一直在摸鱼 到十二点半c题还没出
刚刚样例过了 但是cf好像炸了交不了 头疼
先写ab题把
c等下再补
A. Filling Diamonds
题目思路
观察图片 可以发现每个图只能有一个竖着覆盖的菱形
所以菱形的位置影响了最后的值
直接输出n就好
ac代码
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#define pi 3.1415926535898
#define ll long long
#define lson rt<<1
#define rson rt<<1|1
#define eps 1e-6
#define ms(a,b) memset(a,b,sizeof(a))
#define legal(a,b) a&b
#define print1 printf("111\n")
using namespace std;
const int maxn = 1e3+10;
const int inf = 0x1f1f1f1f;
const ll llinf =0x3f3f3f3f3f3f3f3f;
const int mod = 2333;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
printf("%d\n",n);
}
}
B. Sorted Adjacent Differences
题目思路
根据题目要求我们将原序列排序 在一大一小放入数组中输出就好
ac代码
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#define pi 3.1415926535898
#define ll long long
#define lson rt<<1
#define rson rt<<1|1
#define eps 1e-6
#define ms(a,b) memset(a,b,sizeof(a))
#define legal(a,b) a&b
#define print1 printf("111\n")
using namespace std;
const int maxn = 1e5+10;
const int inf = 0x1f1f1f1f;
const ll llinf =0x3f3f3f3f3f3f3f3f;
const int mod = 2333;
ll a[maxn],b[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+1+n);
int l=1,r=n,cnt=0;
while(l<r)
{
b[++cnt]=a[r];
b[++cnt]=a[l];
l++,r--;
}
if(n%2==1)
b[++cnt]=a[n/2+1];
for(int i=cnt;i>=1;i--)
printf("%lld ",b[i]);
printf("\n");
}
}
cd等cf好了 再补上
cf终于好了 c题先补上
C. Powered Addition
题目思路
因为题目每次可以对所有位置做加法
并且每次加的值乘2
众所周知二进制可以表示任何数
所以我们只需要找到最大的差值 在计算他需要的时间就好了
我们可以遍历一遍数组
记录当前最大值 与a[i]比较
a[i]<当前最大值 就做差 在计算差值的二进制位数
他的二进制位数就是他需要的天数
遍历一边数组后记录最大天数即可
ac代码
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#define pi 3.1415926535898
#define ll long long
#define lson rt<<1
#define rson rt<<1|1
#define eps 1e-6
#define ms(a,b) memset(a,b,sizeof(a))
#define legal(a,b) a&b
#define print1 printf("111\n")
using namespace std;
const int maxn = 1e5+10;
const int inf = 0x1f1f1f1f;
const ll llinf =0x3f3f3f3f3f3f3f3f;
const int mod = 2333;
int a[maxn],b[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
int maxx=a[1],ans=0;
for(int i=2;i<=n;i++)
{
if(a[i]>=maxx)
maxx=a[i];
else
{
int tem=maxx-a[i];
int cnt=0;
while(tem)
{
tem=tem>>1;
cnt++;
}
ans=max(ans,cnt);
}
}
printf("%d\n",ans);
}
}