一碼學程題目鏈結(天梯四d):onecode_tianti_4_d
此題是一道動歸題,本人在寫此題的時候根本沒看出動歸,居然在那shaziyiyangde列舉
結果證明,列舉是肯定不行的(想列舉到一分?這輩子都不可能)
我們可以分情況來看,當然,本題題目已經給出了所有情況:
no.1 所有數字都相同(1難度值)
no.2 數字以差值為1單調遞增或遞減(2難度值)
no.3 數字交替出現(4難度值)
no.4 數字成等差數列(5難度值)
no.5 數字不符合上列規律(10難度值)
細心讀題,我們還可以在題目中發現 「按3至5位數字分割」 的條件
這再次向我們說明了認真審題的重要性
(我就沒看到這個條件)
已經知道所有情況的可能性,我們就可以做出多個函式來處理這些情況,**實現如下:
int find_same(int b,int e)
//第一種情況
return 1;
}int find_wall(int b,int e)
//第三種情況
else
}return 1;
}int find_stair(int b,int e)
//第二和第四種情況
以上,真正是處理情況的函式其實只有 find_same 、find_wall 和 find_stair
而 bamderbox 是對它們返回的值進行判斷,再傳給主程式
看到這裡,可能有人會問:「五種情況。這裡加上 bamderbox 也才只有四個函式,不夠啊!」
那你肯定就是沒有認真讀我給出的**了,旁邊都打了注釋了的
(因為第二和四種情況太像了,所以本人將它們使用同乙個函式解決,再加上簡單if就行了)
【重點】本人設立這幾個函式的目的,就是想用它們來檢視a至b中的數為(拼音第二聲)第幾個規律,並在函式bamderbox中返回其難度值
所以我們可以寫出動歸主程式:
int main()
memset(f,9999999,sizeof(f));f[0]=0;
for(int i=3;i<=l;i++)
}cout<
(看這裡的時候要回想下「按3至5位數字分割」 的條件,不然紅色**段會很難看懂的哦~)
所以我們就可以寫出乙個完整的d題ac**啦
#include#include#include
#include
using namespace std;
int mapn[10000001];
int f[1000001];
char ch[10000001];
int l,ans=0;
int find_same(int b,int e)
return 1;
}int find_wall(int b,int e)
else
}return 1;
}int find_stair(int b,int e)
memset(f,9999999,sizeof(f));f[0]=0;
for(int i=3;i<=l;i++)
{for(int j=3;j<=5;j++)
{if(i
onecode天梯 B 第K大的數
b 第k大的數 時間限制 1000 ms 記憶體限制 131072 kb 提交總數 13 ac總數 11 問題描述 給出乙個包含n個數的數列,現在從這個數列中取出所有子區間中的第k大的數 所有長度大於等於k的子區間 構成乙個新的數列,求這個新的數列的第m大的數是多少?輸入格式 首先,輸入3個數n,k...
D3D學習筆記(四)
光照 光照可分為環境光,漫射光,鏡面光三種 三種顏色的光均可用d3decolorvalue或d3dxcolor來表示,描述光線的顏色時,d3dxcolor中的alpha值將被忽略 材質 材質可用結構d3dmaterial9來表示 typedef struct d3dmaterial9d3dmater...
codevs天梯四色問題
題目 給定n 小於等於8 個點的地圖,以及地圖上各點的相鄰關係,請輸出用4種顏色將地圖塗色的所有方案數 要求相鄰兩點不能塗成相同的顏色 資料中0代表不相鄰,1代表相鄰 分析 好老的題目,基礎dfs即可 const maxn 10 vara array 1.maxn of longint flag a...