hiho一下 第145周 智力競賽

2021-09-28 09:54:53 字數 1841 閱讀 4879

【題目鏈結】:

【題意】

【題解】

設f[i][j]表示做對i道題,做錯j道題能夠到達的最好狀態是什麼;

這裡的狀態不是單單是指到了第幾關;

因為可能同樣到達了第4關,但是你前面的到達第4關的狀態更好(也就是說它在第4關的分數更多);

所以f[i][j]用乙個pair< int,int>表示->(x,y)

x表示到達了第幾關,y表示在這一關獲得了多少分;

則f[i][j] = max(f[i-1][j]+s,f[i][j-1]+t);

(即列舉最末端的題最對還是做錯)

這裡的加s和加t,表示的是那個狀態加了s分、t分之後能夠到達的新的狀態是什麼;

(到了新的一關就x++,y=0,不足以到新的一關,就y+s,或+t);

這裡的比較直接用二元的比較就好;

即x優先,y次之;

同等狀態(i,j)顯然二元組更大的更優。

最後在i+j<=m的狀態裡面找first>=n的元組,i順序列舉,這樣找到第乙個輸出就可以了;

【number ofwa】

1t+5wa

【完整**】

#include 

using

namespace

std;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define ll long long

#define rep1(i,a,b) for (int i = a;i <= b;i++)

#define rep2(i,a,b) for (int i = a;i >= b;i--)

#define mp make_pair

#define ps push_back

#define fi first

#define se second

#define rei(x) scanf("%d",&x)

#define rel(x) scanf("%lld",&x)

#define ref(x) scanf("%lf",&x)

#define ms(x,y) memset(x,y,sizeof x)

typedef pair pii;

typedef pairpll;

const

int dx[9] = ;

const

int dy[9] = ;

const

double pi = acos(-1.0);

const

int n = 1000+100;

pii f[n][n];

int n,m,s,t,a[n];

pii xin(pii a,int t)

pii ma(pii x,pii y)//try x<=y

int main()

; rei(n),rei(m),rei(s),rei(t);

rep1(i,1,n) rei(a[i]);

rep1(i,0,m)

rep1(j,0,m)

//答錯

if (j)

}int ans = -1;

rep1(i,0,m)

}if (ans!=-1) break;

}if (ans==-1)

puts("no");

else

printf("%d\n",ans);

}//printf("\n%.2lf sec \n", (double)clock() / clocks_per_sec);

return

0;}

hiho一下第143周

題目1 hiho密碼 時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述 小ho根據最近在密碼學課上學習到的知識,開發出了一款hiho密碼,這款密碼的秘鑰是這樣生成的 對於一種有n個字母的語言,選擇乙個長度為m的單詞 將組成這個單詞的所有字母按照順序不重複的寫出 即遇到相...

hiho一下 第197周 逆序單詞

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 在英文中有很多逆序的單詞,比如dog和god,evil和live等等。現在給出乙份包含n個單詞的單詞表,其中每個單詞只出現一次,請你找出其中有多少對逆序單詞。第1行 1個整數,n,表示單詞數量。2 n 50,000。第2.n ...

hiho一下 第二週

題目名稱 trie樹 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一本詞典,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能對於每乙個我給出的字串,都在這個詞典裡面找到以這個字串開頭的所...