hihocode 1979假期旅行

2021-09-25 12:49:15 字數 1258 閱讀 9212

小hi有乙個連續m天的假期,他計畫在這m天內按順序遊玩n個城市,每個城市至少遊玩1天。

已知小hi從乙個城市到另乙個城市不需要太多時間,即如果第i天是小hi在第j個城市的最後一天,那麼第i+1天就是小hi在第j+1個城市的第一天。  

通過天氣預報小hi知道這m天內每個城市是晴天還是雨天,他希望自己遊玩的每一天都是晴天。  

請你判斷小hi最早能在(m天內的)第幾天完成n個城市的旅行,注意小hi可以選擇任意一天開始第乙個城市的旅行。

input

第一行包含兩個整數n和m。  

以下n行每行包含m個字元,代表n個城市每天的天氣。o代表晴天,x代表雨天。  

1 <= n, m <= 1000

output

乙個整數代表答案。如果小hi沒辦法在m天內完成旅行,輸出-1。

sample input

3 4

xooo

oooo

oooo

sample output

4
題意:輸入n為城市數量,m為假期天數,每n行輸出m個字元,代表ni城市第mi天的天氣,x就是不行0就是行,(xxoo),求最早能在第幾天旅行完所有城市,ps:一定是按順序旅遊的從第乙個城市旅遊到第n個城市,天數當然是必須從第一天開始不可逆,難道你還可以時光倒流?你可以選擇從任意一天開始旅遊第乙個城市;

此題為dp,n=1000,暴力 會超時,每乙個dp【i】[j】記錄i個城市第j天能不能到;能到,當然我就可以在同乙個城市多呆一天,也可以去往下乙個城市,所以不管你去哪個城市,你的j必須+1;時間不可逆也不可能暫停嘛;

所以 (i,j)一定由 (i-1,j-1)或者(i,j-1)來的;故為線性dp一切好說;

接下來上ac**

#include #include#include#includeusing namespace std;

const int n=1005;

int n,m,flag;

int dp[n][n];

char maze[n][n];

int main()

}for(int i=1;i<=n;i++)

}for(int j=1;j<=m;j++)

dfs(x+1,y+1);

dfs(x,y+1);

}int main()

}for(int i=1;i<=m;i++)

if(flag)cout

cout<<"-1"

}

hihocode 1506 投擲硬幣

描述 小hi有一枚神奇的硬幣。已知第i次投擲這枚硬幣時,正面向上的概率是pi。現在小hi想知道如果總共投擲n次,其中恰好m次正面向上的概率是多少。輸入第一行包含兩個整數n和m。第二行包含n個實數p1,p2,pn。對於30 的資料,1 n 20 對於100 的資料,1 n 1000,0 m n,0 p...

197 階乘分解(質數)

階乘分解 給定整數 n 試把階乘 n 分解質因數,按照算術基本定理的形式輸出分解結果中的 pi 和 ci 即可。輸入格式 乙個整數n。輸出格式 n 分解質因數後的結果,共若干行,每行一對pi,ci,表示含有pcii項。按照pi從小到大的順序輸出。資料範圍 1 n 106 輸入樣例 5輸出樣例 2 3...

197 排列序號

是 這道題採取暴力解法會超時,應當對於原陣列的每乙個位置找到其後有多少個數比它小,然後再相加這些數與對應的權的成績。class solution long long ans 1,fac 1,cc 1 for int i len 2 i 0 i ans fac cc c i return ans 注意...