hihocoder-1565-大富翁
hihocoder-1565-大富翁
#1565 : 大富翁
時間限制:10000ms 單點時限:1000ms 內(nèi)存限制:256MB描述
小Hi在玩大富翁游戲。游戲棋盤由一排?N?個格子組成,其中第?i?個格子上有一個正整數(shù)?Ai,表示如果玩家當前回合在第?i?個格子,那么下一回合他將移動到第?i+Ai?個格子上(如果?i+Ai>N,則該玩家本局游戲結(jié)束)。每局游戲開始前,某些格子上的數(shù)字可能發(fā)生改變。
當一局游戲開始時,小Hi通過擲骰子決定自己的初始位置。每當小Hi處于一個格子時(包含初始位置的格子),他都有一次機會可以購買房產(chǎn)。小Hi想知道如果這一局他起始位置是?Y,那么本局中他能夠有幾次購買房產(chǎn)的機會。 ?
輸入
第一行一個正整數(shù)?N。 ?
第二行?N?個正整數(shù),A1,?A2, ...?AN。
第三行一個正整數(shù)?Q,表示有?Q?次詢問。 ?
接下來?Q?行,每行首先有一個正整數(shù)?X。
若?X=1,則會再輸入一個正整數(shù)?Y,你需要輸出起始位置在第?Y?個格子時本局有幾次購買房產(chǎn)的機會。
若?X=2,則會再輸入兩個正整數(shù)?u,v,表示將第?u?個格子上的值?Au?修改為?v。
對于30%的數(shù)據(jù),6 ≤?N?≤ 10000, 1 ≤?Ai,?v?≤ 10000, 1 ≤?Q?≤ 10000
對于100%的數(shù)據(jù),6 ≤?N?≤ 100000, 1 ≤?Ai,?v?≤ 100000, 1 ≤?Q?≤ 100000, 1 ≤?u?≤?N, 1 ≤?Y?≤ 6
輸出
對于每個?X=1 的詢問輸出一行,包含一個正整數(shù),表示小Hi在這一輪中能夠有幾次購買房產(chǎn)的機會。
樣例輸入?
使用暴力直接解決。
?
#include <cstdio> #include <iostream> using namespace std; const int MAXN = 100000 + 10; int n, q, A[MAXN], ans[MAXN]; int main(){freopen("in.txt", "r", stdin); int op, x, y; scanf("%d", &n); for(int i=1; i<=n; ++i){scanf("%d", &A[i]); }for(int i=1; i<=6; ++i){ans[i] = -1;}scanf("%d", &q); for(int i=0; i<q; ++i){scanf("%d", &op); if(op == 1){scanf("%d", &x); if(ans[x] == -1){int st = x;ans[x] = 0; while(st <= n){ans[x]++; st += A[st]; } }printf("%d\n", ans[x] ); }else{scanf("%d %d", &x, &y); A[x] = y; for(int i=1; i<=6; ++i){ans[i] = -1; }}}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/zhang-yd/p/7440993.html
總結(jié)
以上是生活随笔為你收集整理的hihocoder-1565-大富翁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML5文件夹隐藏了怎么打开,如何打开
- 下一篇: 硬盘插上后计算机无法识别,移动硬盘插入M