日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

腾讯2019秋招笔试真题

發(fā)布時(shí)間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腾讯2019秋招笔试真题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、小Q爬塔

描述:小Q正在攀登一座寶塔,這座塔很特別,塔總共有n曾層,但是沒兩層之間的凈高卻不相同,所以造成了小Q爬過每層的時(shí)間也不同。如果某一層的高度為x,那么爬過這一層鎖需的還是件也是x。小Q孩會使用一種魔法,沒用一次可以讓他向上跳一層或兩層,但是每次跳躍之后小Q豆?jié){用完魔法力,必須爬過至少一層才能再次跳躍(你可以認(rèn)為小Q需要跳兩次一層才休息,最后也可以跳到塔外即超過塔高,跳是不消耗時(shí)間的)。
小Q想用最短的時(shí)間爬過塔頂,希望你能告訴他最短時(shí)間是多少。

輸入描述:
第一行一個(gè)數(shù)n n<=10000,表示塔的層數(shù)。
接下來的n行每行一個(gè)數(shù)h(1<=h<=100),表示從下往上每層的高度。

輸出描述:
一個(gè)數(shù),表示最短時(shí)間。

解題思路

用p[i]表示到達(dá)地i層的最短時(shí)間,并且到達(dá)第i層的方式是爬。
t[i]表示到達(dá)第i層的最短時(shí)間,并且到達(dá)第i層的方式是跳。

到達(dá)第i層的方式是采用爬還是采用跳。
情況1:到達(dá)第i層所用的方式是爬:
那么到達(dá)第I-1層的方式也可以使用跳也可以是爬,從兩者中選擇最小。
p[i] = min {p[i-1], t[i-1]} + a[i]
情況2:到達(dá)第i層的方式是跳:
也許從i-1層跳或者i-2層跳, 同時(shí)到達(dá)i-1層或i-2層的方式必須是爬,兩者時(shí)間選擇較小者,即:
t[i] = min {p[i-1], p[i-2]}
最后在p[n]和t[n]中選最小者作為結(jié)果

參考代碼:
#騰訊2019秋招筆試真題
#小Q爬塔
#include<bits/stc++.h>
using namespace std;
int p[10005], t[10005];
int main(){
int n, m, x;
cin >> n;
for(int i=1; i<=n; i++){
cin >> x;
p[i] = min (p[i-1], t[i-1])+x;
if (i==1) continue;
t[i]=min(p[i-1],p[i-2]);
}
cout << min(p[n],t[n]) << endl;
return 0;
}

2 妞妞的問題

題目描述:妞妞公主得到了一塊黑白期盼。這塊棋盤共有n行m列,任意相鄰的兩個(gè)格子都是不同的顏色(黑與白),坐標(biāo)(1,1)的格子是白色的。

編輯于 2019-06-18 10:49:17

【題目描述】妞妞公主新得到一塊白色棋盤。這塊棋盤共有n行m列,任意相鄰的兩個(gè)格子都是不同的顏色(黑或白),坐標(biāo)位(1,1)的格子是白色的。

這一天牛牛來看妞妞公主時(shí),牛牛公主正望著棋盤發(fā)呆。牛牛看妞妞公主悶悶不樂的樣子,便對妞妞公主說:“只要你告訴我n和m,我能馬上算出黑色方塊的白色方塊的數(shù)量。”

“這太簡單了。”妞妞公主想了一會,“我會在這n行m列中選擇一個(gè)左下角坐標(biāo)位(x0,y0)。右上角坐標(biāo)為(x1,y1)的矩形,把這個(gè)矩形里的共(x1-x0+1)*(y1-y0+1)個(gè)方塊全部涂白。你還能馬上算出黑色方塊和白色方塊的數(shù)量嗎?”

“這太簡單了。”牛牛自信一笑,“你還可以在執(zhí)行涂白操作后再選擇一個(gè)左下角坐標(biāo)為(x2,y2),右上角坐標(biāo)為(x3,y3)的矩形,把這個(gè)矩形里的方塊全部涂黑。我依然能馬上算出黑色方塊和白色方塊的數(shù)量。”

妞妞公主終于驚訝地睜大了眼睛,于是拋出了她的T次提問。

聰明的牛牛當(dāng)然會做了,但是他想把這個(gè)問題交給你,請幫牛牛算出每次提問棋盤的黑白方塊數(shù)目吧。


輸入描述:
第一行一個(gè)整數(shù)T,表示妞妞公主一共提問了T次。
接下來3T行,
第(1+3i)行兩個(gè)整數(shù)n,m。表示第i次提問時(shí)棋盤的大小;
第(2+3i)行四個(gè)整數(shù)x0,x1,y0,y1。表示第i次提問時(shí)涂白操作選取的兩個(gè)坐標(biāo)。
第(3+3i)行四個(gè)整數(shù)x2,y2,x3,y3。表示第i次提問時(shí)涂黑操作選取的兩個(gè)坐標(biāo)。
1<=T<=10000,1<=x<=n<=1000000000,1<=y<=m<=1000000000,x0<=x1,y0<=y1,x2<=x3,y2<=y。


輸出描述:
共T行,每行兩個(gè)整數(shù)分別表示白色方塊的數(shù)量和黑色方塊的數(shù)量。


輸入樣例:
3
1 3
1 1 1 3
1 1 1 3
3 3
1 1 2 3
2 1 3 3
3 4
2 1 2 4
1 2 3 3
輸出樣例:
0 3
3 6
4 8

參考代碼
#include <bits/stdc++.h>
using namespace std;
long long x[8], y[8];
int main() {
int T;
long long n, m, black, white, a, b, c, d, e;
scanf(“d%”, &T);
while(T–){
scanf("%lld%lld",&x[i],&y[i]);
black = nm /2;
white = nm - black;
for(int i=0; i<=3; i++)
scanf("%lld%lld", &x[i,&y[i]]);
if((x[0]+y[0]) & 1)
d = ((x[1]-x[0]+1)(y[1]-y[0]+1)+1)/2;
else d=(x[1]-x[0]+1)(y[1]-y[0]+1)/2;
white += d;
black -= d;
if((x[2]+y[2]) & 1)
d = (x[3]-x[2]+1)(y[3]-y[2]+1)/2;
else d= ((x[3]-x[2]+1)(y[3]-y[2]+1)+1)/2;
white -= d;
black += d;
a = max(x[0],x[2]);
b = max(y[0],y[2]);
c = min(x[1],x[3]);
d = min(y[1],y[3]);
if(c<a || d<b) e = 0ll;
else{
if((a+b) & 1)
e = ((c-a+1)(d-b+1)+1)/2;
else e=(c-a+1)(d-b+1)/2;
}
white -= e;
black += e;
printf("%lld %lld\n", white, black);
}
return 0;
}

3 小Q的最小值序列

總結(jié)

以上是生活随笔為你收集整理的腾讯2019秋招笔试真题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。