做oa好 還是做網(wǎng)站好網(wǎng)絡(luò)推廣的平臺(tái)有哪些
目錄
1.經(jīng)此一役小紅所向無敵
2.連續(xù)子數(shù)組最大和
3.非對稱之美
1.經(jīng)此一役小紅所向無敵
鏈接
簡單模擬即可。
需要注意的是:
除完之后有無余數(shù),若有,則還可以再挨一次打。
#include <iostream>
using namespace std;
#define int long long
int a, h, b, k;
signed main() {cin >> a >> h >> b >> k;int sum = 0;int cnt1 = h / b;int cnt2 = k / a;if (h % b != 0)cnt1++;if (k % a != 0)cnt2++;int cnt = min(cnt1, cnt2);sum += cnt * (a + b);if (cnt1 == cnt2)cout << sum << endl;else if (cnt1 > cnt2){sum += a * 10;cout << sum << endl;}else if (cnt1 < cnt2){sum += b * 10;cout << sum << endl;}return 0;
}
2.連續(xù)子數(shù)組最大和
鏈接
一道線性dp問題,最主要的是找出dp所表示的含義:
dp[i], 以i為結(jié)尾,可以表示的最大數(shù)值。
#include <iostream>
using namespace std;const int N = 2e5 + 10;
int dp[N];
int v[N];
int main() {int n;cin >> n;for(int i = 1; i <= n; ++i)cin >> v[i]; for(int i = 1; i <= n; ++i)dp[i] = max(dp[i - 1] + v[i], v[i]);int ret = -101;for(int i = 1; i <= n; ++i)ret = max(dp[i], ret);cout << ret << endl;return 0;
}
填完表后,遍歷一遍表中的數(shù),取出最大值即可。
由于,因此可以讓 ret 初始化為 -101。?
3.非對稱之美
鏈接
我認(rèn)為這就是一道數(shù)學(xué)分析找規(guī)律題,暴力強(qiáng)解復(fù)雜度太高,易超時(shí),解不出來。
但是這個(gè)規(guī)律也不好找:
#include <iostream>
#include <string>
using namespace std;
int n;
string s;
int fun()
{// 1. 判斷是否全都是相同字符bool flag = false;for (int i = 1; i < n; i++){if (s[i] != s[0]){flag = true;break;}}if (flag == false) return 0;// 2. 判斷本?是否是回?flag = true;int left = 0, right = n - 1;while (left < right){if (s[left] == s[right]){left++;right--;}else{flag = false;break;}}if (flag) return n - 1;else return n;
}
int main()
{cin >> s;n = s.size();cout << fun() << endl;return 0;
}
若字符全相同,則返回0。
若從0和n - 1往中間遍歷,存在不相同,即可直接break返回 n (個(gè)數(shù))。
若全相同,則返回 n - 1。
即這時(shí)個(gè)對稱數(shù),但是如果你取除第一個(gè)或最后一個(gè)外的所有字符,即可組成非對稱。
題目有要求要最大,所以為 n - 1。