前言:先為20級萌新們慘遭學長學姐毒手感到不幸,其次希望這次沒發揮好的萌新也不要氣餒,後面好好學演演算法,肯定有機會的(毒瘤會長說的 )。
A題: zw吃外賣 (此處先毆打出題人)
題解: 簽到題,奇數就輸出YES,偶數就輸出NO
程式碼:
#include<cstdio>
int main()
{
int n;
scanf("%d",&n);
if(n%2==1)
{
printf("YES");
}
else
{
printf("NO");
}
}
B題: lcj的煩惱
題解: 簽到題,原價x元,微信打完折就是x*0.98元
#include<cstdio>
int main()
{
int x;
scanf("%d",&x);
double ans=x*0.98;
printf("%.2lf\n",ans);
}
C題: a+b
題解: 簽到題, 題目雖然有點長,但都是廢話(毒瘤的會長也好心把題目的關鍵語句加粗了),其實只要判斷兩個顏色的R值,B值,G值分別相加是否都等於255即可。
#include<stdio.h>
int main()
{
int n1,k1,x1;
int n2,k2,x2;
scanf("%d%d%d",&n1,&k1,&x1);
scanf("%d%d%d",&n2,&k2,&x2);
if(n1+n2==255&&k1+k2==255&&x2+x1==255)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
D題: zw搶蘋果(此處再次毆打出題人)
毒瘤出題人中文四級沒過,題面各種鍋,提供滴滴代打。
題解: 第一次拿的是第一組,第二次是在剩下的組中拿第二組,即取的是一開始的第三組,以此類推,易知取的是1 3 5 7 …組,那麼剩下的全是偶陣列,2,4,6,8 …,那麼剩下的第k組的編號便是 2k,因此答案便是第2k組的蘋果數量,若2*k>n,則無答案。
程式碼:
#include<cstdio>
int main()
{
int n,k,x;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
if(i==2*k)
{
printf("%d\n",x);
}
}
if(n<2*k)
{
printf("-1\n");
}
}
E題: 一直單身一直爽
題解: 先算出有多少個1,再判斷是否存在連續k個1,怎麼判斷呢?
用 cnt去記錄當前有多少個連續的1,依次遍歷陣列的每個元素,若值為1,則cnt++,若為0,則cnt=0, 若在某個位置上cnt>=k,則表示存在連續k個1,則輸出無窮大,反之輸出 1的個數 * x
程式碼:
#include<cstdio>
int main()
{
int n,x,k,y;
scanf("%d%d%d",&n,&x,&k);
int cnt=0,flag=0,res=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&y);
cnt+=y;
if(y==1) res++;
else res=0;
if(res==k) flag=1;
}
if(flag) printf("inf\n");
else printf("%d\n",cnt*x);
}
F題: 神奇的青青草原
題解: 假如只有一隻狼,那麼灰太狼必定會去吃懶羊羊,因為他肯定不會被其他狼吃掉,假如有兩隻狼,不管哪隻狼去吃羊,他必會被另一隻狼吃掉,所以狼都不會去吃羊,假如有三隻狼,如果灰太狼吃懶羊羊的話,情況就會回到兩狼一羊的情況,剩下兩隻狼都不敢去吃,所以灰太狼能吃羊,以此類推,可以發現,狼為偶數的時候,不能吃羊,狼為奇數的時候可以吃羊。
程式碼:
#include<cstdio>
int main()
{
int n;
scanf("%d",&n);
if(n%2==1)
{
printf("nice");
}
else
{
printf("555");
}
}
G題: dl的會長(會長確實是個毒瘤)
題解: 此題其實就是找四個數的第二大和第三大的數之間任意的數。原因:當只有兩個數時,如果選擇兩個數之外的數,那麼花費必定大於b-a,如果選兩個數之間的任意數,那麼花費就是b-a,同理四個數也是一樣。要麼直接用sort函數排個序,要麼列舉4個數其中一個數為第二大或第三大,維護答案的最小值。因為不是第二大和第三大的數之間的數,算出來的答案肯定比最優解要大,所以是取最小值,第二種方法的時候記得要用long long,否則會爆int。
程式碼:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[10],ans = 2e9,sum;
int main(){
for(int i = 1; i <= 4; i ++){
scanf("%d",&a[i]);
}
for(int i = 1; i <= 4; i ++){
sum = 0;
for(int j = 1; j <= 4; j ++){
sum = (sum + abs(a[j] - a[i]));
}
ans = min(ans , sum);
}
printf("%lld",ans);
}