标签:put over define als pushd size ace ble clu
1.
Sample Input 6 -2 11 -4 13 -5 -2 10 -10 1 2 3 4 -5 -23 3 7 -21 6 5 -8 3 2 5 0 1 10 3 -1 -5 -2 3 -1 0 -2 0 Sample Output 20 11 13 10 1 4 10 3 5 10 10 10 0 -1 -2 0 0 0
//最基础的DP 数据结构作业 #include <bits/stdc++.h> using namespace std; const int MAXN = 100010; int dp[MAXN]; //代表从第一个元素到i的子序列的最大 int a[MAXN]; int main () { int K; while(~scanf("%d", &K) && K) { dp[0] = 0; int s1 = -1, e1 = -1, s2 = - 1, e2 = -1; int t = 0; int tttt = -1; memset(dp, 0, sizeof dp); memset(a, 0, sizeof a); for(int i = 1; i <= K; ++i) { scanf("%d", &a[i]); dp[i] = max(a[i], dp[i - 1] + a[i]); if(a[i] < 0) t++; if(a[i] == dp[i]) { s1 = i; e1 = i; } else { e1 = i; } if(dp[i] > tttt) { e2 = e1; s2 = s1; tttt = dp[i]; } } if(t == K) printf("0 %d %d\n", a[1], a[K]); else printf("%d %d %d\n", tttt, a[s2], a[e2]); } }
2.
#include <bits/stdc++.h> using namespace std; typedef pair<string, string> P; map<string, string> MAP; int main () { MAP.insert(P("zero", "0")); MAP.insert(P("one", "1")); MAP.insert(P("two", "2")); MAP.insert(P("three", "3")); MAP.insert(P("four" ,"4")); MAP.insert(P("five" ,"5")); MAP.insert(P("six", "6")); MAP.insert(P("seven", "7")); MAP.insert(P("eight", "8")); MAP.insert(P("nine", "9")); string sb; string t = ""; int a, b; while(cin >> sb) { if(sb == "=") { //cout << t << endl; b = std::stoi(t); t = ""; if(a == 0 && b == 0) { return 0; } cout << a + b << endl; continue; } if(sb == "+") { //cout << t << endl; a = std::stoi(t); t = ""; } t += MAP[sb]; // t += (MAP.find(sb)->second); // cout << (MAP.find(sb)->second) << endl; } }
3.
Sample Input 2 2 10 10 20 20 3 1 1 2 2 1000 1000 Sample Output 1414.2 oh!
//最小生成树 prim算法 #include <bits/stdc++.h> using namespace std; // const double MAXN = 0x3f3f3f3f; #define MAXN 0xFFFFFFF const int N = 101; typedef pair<double, double> P; std::vector<P> v; double MAP[N][N]; bool vis[N]; int C; //小岛个数 double getD(P a, P b) { return sqrt((a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second)); } void buildMap() { double l; for(int i = 0; i < C; ++i) { for(int j = i; j < C; ++j) { l = getD(v[i], v[j]); if(l >= 10 && l <= 1000) { //cout << l << endl; MAP[i][j] = MAP[j][i] = ((i == j) ? 0 : l); } else { MAP[i][j] = MAP[j][i] = MAXN; } } } // for(int i = 0 ; i < C; ++i) { // for(int j = 0; j < C; ++j) { // cout << MAP[i][j] << " "; // } // cout << endl; // } } void prim() { int temp = C; memset(vis, 0, sizeof vis); vis[0] = 1; double m; double sum = 0; int sb; while(--temp) { m = MAXN; for(int i = 1; i < C; ++i) { if(!vis[i] && MAP[0][i] < m){ // m = MAP[0][i]; sb = i; //cout << m << "???"<<endl; } } if(m == MAXN) break; vis[sb] = 1; // cout << m << endl; sum += m; for(int i = 1; i < C; ++i) { if(!vis[i] && MAP[sb][i] < MAP[0][i]) MAP[0][i] = MAP[sb][i]; } } //cout << temp << endl; if(temp == 0) { printf("%.1f\n", sum * 100.0); } else { cout << "oh!" << endl; } } int main () { int T; cin >> T; while(T--) { v.clear(); cin >> C; for(int i = 0; i < C; ++i) { double x, y; cin >> x >> y; v.push_back(P(x, y)); } buildMap(); prim(); } }
4.
Sample Input 3 1 2 1 0 1 3 2 0 2 3 4 0 3 1 2 1 0 1 3 2 0 2 3 4 1 3 1 2 1 0 1 3 2 1 2 3 4 1 0 Sample Output 3 1 0
//也是最小生成树 注意已经修好的路不用花钱 #include <bits/stdc++.h> using namespace std; const int MAXN = 0x3fffffff; const int N = 110; bool vis[N]; int MAP[N][N]; int n; int low[110]; void prim() { memset(vis, 0, sizeof vis); int ans = 0; int k = 0; vis[k] = 1; // for(int i = 0; i < n; ++i) { // if(!vis[i]) { // low[i] = MAP[k][i]; // } // } int m; for(int i = 1; i < n; ++i){ m = MAXN; for(int i = 0; i < n; ++i){ if(!vis[i] && MAP[0][i] < m) { k = i; m = MAP[0][i]; } } ans += m; vis[k] = 1; for(int i = 0; i <= n + 1; ++i) { if(!vis[i] && MAP[i][k] < MAP[0][i]) { MAP[0][i] = MAP[i][k]; } } } cout << ans << endl; } int main () { ios::sync_with_stdio(false); while(cin >> n) { if(!n) break; int x, y, s, b; int t = (n - 1) * n / 2; while(t--){ cin >> x >> y >> s >> b; if(b) { MAP[x-1][y-1] = MAP[y-1][x-1] = 0; } else { MAP[x-1][y-1] = MAP[y-1][x-1] = s; } } prim(); } }
5.leetcode上的一道憨批题
//用O(n方)时间复杂度写出来的我着实憨批 class Solution { public: string pushDominoes(string dominoes) { for(int i = 0; i < dominoes.size(); ++i) { if(dominoes[i] != ‘.‘ && dominoes[i] != ‘M‘ && dominoes[i] != ‘S‘) { continue; } int R, L; R = 0x3f3f3f3f; L = 0x3f3f3f3f; int s1, s2; s1 = i; s2 = i; char t1, t2; for(int j = i + 1; j < dominoes.size(); ++j) { if(dominoes[j] != ‘.‘ && dominoes[j] != ‘M‘ && dominoes[j] != ‘S‘) { if(dominoes[j] == ‘L‘){ t1 = dominoes[j]; R = j - s1; } break; } } if(i == 5) cout << 66 << endl; for(int j = i - 1; j >= 0; --j) { if(j == 3 && i == 5) cout << dominoes[i] << endl; if(dominoes[j] != ‘.‘ && dominoes[j] != ‘M‘ && dominoes[j] != ‘S‘) { if(dominoes[j] == ‘R‘){ if(j == 3 && i == 5) cout << "sb" << endl; t2 = dominoes[j]; L = s2 - j; } break; } } if(i == 5) { cout << R << " " << L << endl; cout << dominoes[i] << endl; } if(R < L) { dominoes[i] = t1 + 1; } else if(R > L) { dominoes[i] = t2 + 1; } else { dominoes[i] = ‘.‘; } } for(int i = 0; i < dominoes.size(); ++i) { if(dominoes[i] != ‘L‘ && dominoes[i] != ‘R‘ && dominoes[i] != ‘.‘) { dominoes[i]--; } } return dominoes; } };
//这是真的憨批题了 class Solution { public: bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) { if(rec1[2] > rec2[0] && rec1[0] < rec2[2] && rec1[3] > rec2[1] && rec1[1] < rec2[3]) return 1; return 0; } };
//挺好的一道dp题
class Solution { public: int min(int a, int b) { return a > b ? b : a; } int numSquares(int n) { int dp[100000] = {0}; for(int i = 1; i <= n; ++i) { dp[i] = i; for(int j = 1; i - j * j >= 0; j++) { dp[i] = min(dp[i], dp[i - j * j] + 1); } } return dp[n]; } };
明天上午学习课程!!!!!!学习课程!!!!!!学习课程!!!!!!学习课程!!!!!!
标签:put over define als pushd size ace ble clu
原文地址:https://www.cnblogs.com/lightac/p/12521036.html