早知道這次題目這麼簡單就認真做了,最後一場沒心做,後面懶得想了,唉罪過罪過
1、煤氣灶
題目描述
小j開始打工,準備賺錢買煤氣灶。
第一天,小j的工資為n元,之後每天他的工資都比前一天多d元。
已知煤氣灶需要m元,求小j最少工作幾天才能買到煤氣灶。
輸入描述:
四個整數 n,m,d,x
分別表示小j第一天的工資,煤氣灶的**,工資每天的增長量,答案不超過x
輸出描述:
乙個數表示答案
示例1輸入
10 100 20 100輸出4
說明10+30+50+70>=100
備註:0≤n,d≤10^9,n+d>0
1≤m≤10^18
1≤x≤10^9
這個題居然可以暴力直接過,需要注意一下資料型別的問題,10^18需要用long long int ,另外x完全是乙個沒用的量,忽略不計就可
ac**
#includeusing namespace std;
int main()
int main()
cout<2、項鍊
小b想給她的新項鍊染色。
現在有m種顏色,對於第i種顏色,小b有a_i單位的顏料,每單位顏料可以染項鍊的乙個珠子;
同時,小b對於第i種顏色的喜愛度為b_i。
已知項鍊有n個珠子,求染色後每個珠子的顏色的喜愛度之和的最大值。
(每個珠子只能至多被染一次,不被染色則喜愛度為0)
輸入描述:
第一行兩個數n,m
第二行m個數a_i
第三行m個數b_i
輸出描述:
乙個數表示答案
示例1輸入
5 31 2 3
3 2 1輸出9
示例2輸入
5 31 2 1
3 2 1輸出8
備註:1≤n,m≤10^5
0≤ai,bi≤10^6
算是簽到題吧,先排一下序,之後直接運算就好,沒什麼太大難度。
ac**:
#includeusing namespace std;
struct node;
struct node colour[100005];
bool cmp(struct node x,struct node y)
int main()
cout<3、美食
題目描述
小b喜歡美食。
現在有n個美食排成一排擺在小b的面前,依次編號為1…n,編號為i的食物大小為 a[i] ,即足夠小b吃 a[i] 口。
小b每次會吃兩口,這兩口要麼是編號相同的美食,要麼是編號之差的絕對值為1的美食。
小b想知道,她最多能吃幾次?
輸入描述:
第1行乙個正整數n,表示美食個數
接下來n行,第i行乙個整數a[i],表示編號為i的美食的大小
輸出描述:
乙個數表示小b最多吃幾次。
示例1輸入41
578輸出
10說明
用二元組(a,b)表示某一次吃的兩個美食分別為第a個美食和第b個美食,則下面為乙個吃10次的方案:
(1,2)(2,2)(2,2)(3,4)(3,4)(3,4)(3,4)(3,4)(3,4)(3,4)
注意不一定要吃完。
備註:基本的列舉加貪心,從頭開始,如果當前美食是偶數就直接吃完,如果是奇數且下乙個美食也是奇數就兩個拼乙個,這樣下來吃到最後即可
ac**
#includeusing namespace std;
int a[100005];
int main()
}cout<4、區間或和
題目描述
求a|(a+1)|(a+2)|…|(b-1)|b。
其中|表示[按位或
輸入描述:
多組輸入,每行兩個數表示a和b
輸出描述:
對於每組輸入,輸出乙個數a|(a+1)|(a+2)|…|(b-1)|b。
示例1輸入
99 109
68 77
55 66
34 43
1111234 1114321
輸出111
79127
471179647
備註:輸入不超過10000行,
0≤a,b≤10^18,
a≤b這道題對了70%的測試用例,感覺思路是沒有錯的。大體講一下思路,從異或運算出發,對應二進位制位上兩個有乙個為1即為1,那麼在這道題中,從a異或到b,取a-b=temp,temp需要多少個二進位制位數來表示,那麼異或後這幾位都將變成1,利用二進位制移位的特性,先左移再右移再加上後面全是1的對應十進位制數,最後還需要異或一下a,因為後面的位數完成了處理,前面的還沒有處理,前面的還需要再異或處理一下,感覺思路大體沒什麼問題,可能是細節上還有幾個沒注意的地方。
70%**
#includeusing namespace std;
int main()
}
5、出題
題目描述
小b準備出模擬賽。
她把題目按難度分為四等,分值分別為6,7,8,9。
已知小b共出了m道題,共n分。
求小b最少出了多少道6分題。
輸入描述:
兩個正整數n,m
輸出描述:
乙個數,表示答案。
若無解,輸出"jgzjgzjgz"。
示例1輸入
34 5輸出1
示例2輸入
32 5輸出3
示例3輸入
5 1輸出
jgzjgzjgz
備註:n,m≤10^12
一開始沒思路,看資料規模肯定不能暴力,看了題解才知道原來很簡單。
有解的充要條件為 6m≤n≤9m 。
若有解:
設有 x(0≤x≤m) 道6分題,則剩下的m-x題共n-6x分,
則剩下的題有解的充要條件為 7(m−x)≤n−6x≤9(m−x) ,
解得 7m−n≤x≤(9m−n)/3 。
因此答案為max(0,7m-n)。
ac**
#includeusing namespace std;
int main()
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
s[i][j]+=s[i-1][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
s[i][j]+=s[i][j-1];
int q;
cin>>q;
while(q--)
}
牛客寒假演算法基礎訓練營1 G
這道題的題解講的非常好了已經,對於1 n數的排列子區間 l,r 使得區間中的數滿足連續的條件為 r l max a l r min a l r l,r為下標 既然要使 l,r 為萌區間,那麼就要找到這個區間內的最大值mx與最小值mn,判斷是否滿足條件 若不滿足條件,那麼需要將 mn,mx 缺少的數字...
牛客寒假演算法基礎訓練營3 G 糖果
傳送門 在乙個幼兒園裡面有n個小朋友,分別編號1,2,n1,2,n。在這些小朋友中有一些小朋友互為朋友關係,總共有 mathit mm對朋友。作為幼兒園老師,你想買一些糖果分給小朋友,你知道第i個小朋友想要至少想要ai個糖果。個糖果,否則他就會不開心。同時,如果乙個小朋友得到的糖果數小於他某個朋友得...
牛客寒假演算法基礎演算法訓練營2
1 座與重修費 題目描述 期末考試結束了,座發現很多人掛了大物,只能等著第二年重修,還要交400元的重修費。座突然想起有個學長和他講過,如果學校哪一年缺錢了,那一年的大物試卷就會特別難。現在 座有了所有人的成績,座想知道如果所有掛科的人都在第二年重修,學校能賺多少重修費?掛科是指一門課的分數小於60...