做标签这个网站刷单安全吗,做淘宝网站规范 百度知道,网络游戏动漫设计专业,游戏网站域名1、小Q爬塔
描述#xff1a;小Q正在攀登一座宝塔#xff0c;这座塔很特别#xff0c;塔总共有n曾层#xff0c;但是没两层之间的净高却不相同#xff0c;所以造成了小Q爬过每层的时间也不同。如果某一层的高度为x#xff0c;那么爬过这一层锁需的还是件也是x。小Q孩会使…1、小Q爬塔
描述小Q正在攀登一座宝塔这座塔很特别塔总共有n曾层但是没两层之间的净高却不相同所以造成了小Q爬过每层的时间也不同。如果某一层的高度为x那么爬过这一层锁需的还是件也是x。小Q孩会使用一种魔法没用一次可以让他向上跳一层或两层但是每次跳跃之后小Q豆浆用完魔法力必须爬过至少一层才能再次跳跃你可以认为小Q需要跳两次一层才休息最后也可以跳到塔外即超过塔高跳是不消耗时间的。 小Q想用最短的时间爬过塔顶希望你能告诉他最短时间是多少。
输入描述 第一行一个数n n10000表示塔的层数。 接下来的n行每行一个数h(1h100)表示从下往上每层的高度。
输出描述 一个数表示最短时间。
解题思路
用p[i]表示到达地i层的最短时间并且到达第i层的方式是爬。 t[i]表示到达第i层的最短时间并且到达第i层的方式是跳。
到达第i层的方式是采用爬还是采用跳。 情况1到达第i层所用的方式是爬 那么到达第I-1层的方式也可以使用跳也可以是爬从两者中选择最小。 p[i] min {p[i-1], t[i-1]} a[i] 情况2到达第i层的方式是跳 也许从i-1层跳或者i-2层跳 同时到达i-1层或i-2层的方式必须是爬两者时间选择较小者即 t[i] min {p[i-1], p[i-2]} 最后在p[n]和t[n]中选最小者作为结果
参考代码 #腾讯2019秋招笔试真题 #小Q爬塔 #includebits/stc.h using namespace std; int p[10005], t[10005]; int main(){ int n, m, x; cin n; for(int i1; in; i){ cin x; p[i] min (p[i-1], t[i-1])x; if (i1) continue; t[i]min(p[i-1],p[i-2]); } cout min(p[n],t[n]) endl; return 0; }
2 妞妞的问题
题目描述妞妞公主得到了一块黑白期盼。这块棋盘共有n行m列任意相邻的两个格子都是不同的颜色黑与白坐标1,1的格子是白色的。
编辑于 2019-06-18 10:49:17
【题目描述】妞妞公主新得到一块白色棋盘。这块棋盘共有n行m列任意相邻的两个格子都是不同的颜色黑或白坐标位1,1的格子是白色的。
这一天牛牛来看妞妞公主时牛牛公主正望着棋盘发呆。牛牛看妞妞公主闷闷不乐的样子便对妞妞公主说“只要你告诉我n和m我能马上算出黑色方块的白色方块的数量。”
“这太简单了。”妞妞公主想了一会“我会在这n行m列中选择一个左下角坐标位x0y0。右上角坐标为x1y1的矩形把这个矩形里的共x1-x01*y1-y01个方块全部涂白。你还能马上算出黑色方块和白色方块的数量吗”
“这太简单了。”牛牛自信一笑“你还可以在执行涂白操作后再选择一个左下角坐标为x2y2右上角坐标为x3y3的矩形把这个矩形里的方块全部涂黑。我依然能马上算出黑色方块和白色方块的数量。”
妞妞公主终于惊讶地睁大了眼睛于是抛出了她的T次提问。
聪明的牛牛当然会做了但是他想把这个问题交给你请帮牛牛算出每次提问棋盘的黑白方块数目吧。 输入描述第一行一个整数T,表示妞妞公主一共提问了T次。接下来3T行第13i行两个整数nm。表示第i次提问时棋盘的大小第23i行四个整数x0,x1,y0,y1。表示第i次提问时涂白操作选取的两个坐标。第33i行四个整数x2,y2,x3,y3。表示第i次提问时涂黑操作选取的两个坐标。1T100001xn10000000001ym1000000000x0x1y0y1x2x3y2y。 输出描述共T行每行两个整数分别表示白色方块的数量和黑色方块的数量。 输入样例31 31 1 1 31 1 1 33 31 1 2 32 1 3 33 42 1 2 41 2 3 3输出样例0 33 64 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 i0; i3; 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(ca || db) e 0ll; else{ if((ab) 1) e ((c-a1)(d-b1)1)/2; else e(c-a1)(d-b1)/2; } white - e; black e; printf(%lld %lld\n, white, black); } return 0; }
3 小Q的最小值序列