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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 3813. 【NOIP2014模拟9.7】我要的幸福

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 3813. 【NOIP2014模拟9.7】我要的幸福 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

幸福/我要的幸福/漸漸清楚/夢想/理想/幻想/狂想/妄想/我只想堅持每一步/該走的方向/就算一路上/偶爾會沮喪/生活是自己/選擇的衣裳/幸福/我要的幸福/沒有束縛/幸福/我要的幸福/在不遠處

Zyh相信自己想要的幸福在不遠處。然而,zyh想要得到這幸福,還需要很長的一段路。Zyh堅持認為整個人生可以抽象為一個n*m的棋盤。左上角的格子為(1,1),右下角的格子為(n,m)。整個棋盤上的格子都有不同的事件,因為生活的多姿多彩,事件的權值Aij都兩兩不同。不幸的是,在整個人生中有若干個極其黑暗的事件,它們的權值Aij=0。更進一步說,對于Aij>0的事件,權值兩兩不同。
Zyh站在人生的起點(1,1),他想要走向人生的巔峰(n,m)。Zyh認為人只能前進,即若Zyh站在(a,b),他只能走向(a,b+1)或者(a+1,b)。并且Zyh認為黑暗的事件是絕對不可以觸碰的,因為一旦經歷就會墜入萬丈深淵。Zyh會將自己所經歷的事件的權值依次寫出,形成一個n+m-1的序列。Zyh想知道其中字典序最小的序列是什么。若是人生過于艱難,沒有一個合法序列,就輸出”Oh,the life is too difficult!”,不包含引號。

Input

輸入的第一行是兩個正整數n和m。接著是n行m列的人生棋盤。

Output

輸入只有一列,如果存在合法序列,則為n+m-1個用一個空格隔開的權值。否則就輸出Oh,the life is too difficult!

Sample Input

輸入1:

3 3
1 3 4
7 9 0
5 6 8

輸入2:

2 3
1 0 3
0 4 5

Sample Output

輸出1:

1 3 9 6 8

輸出2:

Oh,the life is too difficult!

Data Constraint

對于 20% 的數據 n<10m<10
對于 60% 的數據 n300m300
對于 100% 的數據 n1000m1000Aij109

Solution

  • 這題相對簡單,一眼就是貪心了!

  • 但是走的時候可能進了一個死胡同,這怎么處理呢?

  • 于是我們想到從終點出發,把遍歷到的點標記一遍

  • 那么如果起點沒被標記就無解了

  • 之后就可以放心從起點開始暴力遍歷了,即選較小且被標記的那邊走,這樣答案保證最優

  • 時間復雜度顯然就是 O(N2)

Code

#include<cstdio> using namespace std; const int N=1002; int a[N][N]; bool f[N][N]; inline int read() {int data=0; char ch=0;while(ch<'0' || ch>'9') ch=getchar();while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar();return data; } int main() {int n=read(),m=read();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=read();f[n][m]=true;for(int i=n;i;i--)for(int j=m;j;j--){if(!a[i][j]){f[i][j]=false;continue;}if(i==n && j==m) continue;f[i][j]=f[i+1][j]|f[i][j+1];}if(!f[1][1]){printf("Oh,the life is too difficult!");return 0;}int x=1,y=1;while(x!=n || y!=m){printf("%d ",a[x][y]);if(!f[x][y+1] || y+1>m) x++; elseif(!f[x+1][y] || x+1>n) y++; else{if(a[x][y+1]<a[x+1][y]) y++; else x++;}}printf("%d",a[n][m]);return 0; }

總結

以上是生活随笔為你收集整理的JZOJ 3813. 【NOIP2014模拟9.7】我要的幸福的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。