開乙個二維dp陣列dp[10005][3],第二維儲存的是這個數列的兩種狀態所對應的最大值,和lis思路比較像。
開始的時候忽視了全部降序的情況,後來把兩個維度全部算一遍就出來了。
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define eps (1e-6)
#define ll long long
#define pi acos(-1.0)
#define all(a) (a.begin(),(a.end())
#define zero(a) memset(a,0,sizeof(a))
#define minus(a) memset(a,0xff,sizeof(a))
#define ios cin.tie(0),cout.sync_with_stdio(0)
#define print(a,b) cout << "#" << (a) << " " << (b) << endl
//#define debug(a,b) cout << "$" << (a) << " " << (b) << endl
#define lin cout << "\n--------------------\n"
const ll llinf = 1e18+100;
const int inf = 0x3f3f3f3f;
const int maxn = 1e4 + 5;
const int mod = 1000000000+7;
#define esp 1e-6
int dp[maxn][3];
int a[maxn];
int main()
dp[1][1] = 1;
for(int i=2; i<=n; ++i)
}//cout << dp[i][1] << endl;
}dp[1][2] = 1;
for(int i=2; i<=n; ++i)
}//cout << dp[i][2] << endl;
}int ans = 0;
for(int i=1; i<=n; ++i)
cout << n - ans;
return 0;
}
計蒜客 刪除最少的元素
問題描述 給定有 n 個數的 a 序列 a1,a2,a3 an 對於這個序列,我們想得到乙個子串行 ap1,ap2 api apm 1 p1 p2 pi pm n 滿足 ap1 ap2 api apm 從 a 序列最少刪除多少元素,可以得到我們想要的子串行。輸入格式 第一行輸入乙個整數 n,代表 a...
計蒜客習題 朋友
在社交的過程中,通過朋友,也能認識新的朋友。在某個朋友關係圖中,假定 a 和 b 是朋友,b 和 c 是朋友,那麼 a 和 c 也會成為朋友。即,我們規定朋友的朋友也是朋友。現在,已知若干對朋友關係,詢問某兩個人是不是朋友。請編寫乙個程式來解決這個問題吧。輸入格式 第一行 三個整數 n,m,p n ...
計蒜客習題 逃跑
一位博主寫了ac 但是無論是廣度bfs還是深度dfs,都會報錯,dfs是執行超時,bfs是答案錯誤。傳送門 另一位博主使用了dfs 有興趣可以看下,沒有檢驗是否正確,傳送門 根據前位博主的bfs 做了幾項修改,然後用自己的 找錯前位博主,發現找不出來,有興趣的小夥伴可以試下,找一下前位博主的錯誤。當...