2017 10 11 Problem c 失敗總結

2021-08-09 05:39:49 字數 928 閱讀 4884

一開始就想偏了。。

首先計數題 30s + n<=300顯然是讓你n^3 dp的

先從手玩開始考慮

注意到從大到小出現的數字個數是可以判斷有無解的

,,然後可以畫出一些區間的條件  如(>=8的數最多有幾個、、 >=4的最多有幾個)  

按序列從前往後dp  前面每乙個人的安排是可以離散的,但就算離散了狀態也炸了,  按照條件存資訊至少也是n^4的dp,  所以就不可做了

這是因為這樣做把所有狀態合到了一起   忽略了乙個優化點:後面的資訊的影響

由於前後資訊一起影響,所以可以考慮把影響分類,,之後會發現順序是沒用的,所以可以提取離散

同時~n>=的約束可以化為~1<=的約束

所以就可以在離散之後的每乙個數上做選擇

所以選擇的方案也都是離散的,適當列舉

注: yes 0 和no 不一樣!

碼:

#include#includeusing namespace std;

int t,n,m,m,f[305][305],c[305][305],i,j,k,he[305],yq[305],x;

int main()

bool bx=0;

int sum=0;

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

for(i=n;i>=1;i--)

if(bx==1)

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

f[0][0]=1;

for(i=1;i<=n;i++)//對於i的限制條件 }

printf("yes %d\n",f[n][n]);

}}

%題解%到一句話:

oi題有三種  從一般到特殊,從暴力到優化,換角度思考 −w

erke

ytom

_ftd

這神題三種都是。。

Problem 蛇行矩陣

problem 蛇形矩陣是由1開始的自然數依次排列成的乙個矩陣上三角形。input 本題有多組資料,每組資料由乙個正整數n組成。n不大於100 output 對於每一組資料,輸出乙個n行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角中同一行的數字用乙個空格分開。行尾不要多餘的空格。sample i...

Problem 暴力摩托

原文 time limit 1 sec memory limit 128 mb n個站,之間連了m條雙向的通路!但每條路都規定了乙個速度的限制值,在這條路上必須以這個速度前進!所以在 前進的時候要調整速度,現決定盡量使調整的幅度小一些,也就是使走過的路的速度最大值與最小值之差最小!第一行有2個正整數...

Problem 算式等式

description 給你n個數字,每個數字均不相同,你可以取其中任意個數字相加,如果所得到的結果在給出的數列 中也能找到,則輸出這個等式 input 第一行乙個數字n 接下來n個數字 output 輸出你找到的等式,注意看樣例的輸出格式 sample input 61 3 5 7 8 9 sam...