Codeforces #321(div2)
2015-09-23 20:57
459 查看
A. Kefa and First Steps
题意: 求连续最长不降子序列
分析: 水题
代码:
B. Kefa and Company
题意: 给很多对身价和满意度的对 要求选择的对中任意2个对 身价差距不超过d 求最大满意度
分析: 按照身价排序 然后维护最大身价-最小身价不超过d的滑动窗口 更新最大满意度就是答案
代码:
题意: 求树上到叶子节点的路径中 连续猫个数不超过m 的不同叶子节点
分析: 搜一下树就好了
代码:
题意: n个饭菜 吃m个 如果按照k种前后排列的话有额外奖励 求最大满意度
分析: 状压dp 需要知道当前谁吃了 当前谁吃了 所以dp[i][j]:= 当前状态为i 且吃了j的最大满意度
然后dp就好了
代码:
题意: 求连续最长不降子序列
分析: 水题
代码:
// // Created by TaoSama on 2015-09-23 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(linker, "/STACK:1024000000,1024000000") #include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <string> #include <set> #include <vector> using namespace std; #define pr(x) cout << #x << " = " << x << " " #define prln(x) cout << #x << " = " << x << endl const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7; int n, a ; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); // freopen("out.txt","w",stdout); #endif ios_base::sync_with_stdio(0); while(scanf("%d", &n) == 1){ for(int i = 1; i <= n; ++i) scanf("%d", a + i); a[n + 1] = -INF; int ans = 1, cnt = 1; for(int i = 2; i <= n + 1; ++i){ if(a[i] >= a[i - 1]) ++cnt; else{ ans = max(ans, cnt); cnt = 1; } } printf("%d\n", ans); } return 0; }
B. Kefa and Company
题意: 给很多对身价和满意度的对 要求选择的对中任意2个对 身价差距不超过d 求最大满意度
分析: 按照身价排序 然后维护最大身价-最小身价不超过d的滑动窗口 更新最大满意度就是答案
代码:
// // Created by TaoSama on 2015-09-23 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(linker, "/STACK:1024000000,1024000000") #include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <string> #include <set> #include <vector> using namespace std; #define pr(x) cout << #x << " = " << x << " " #define prln(x) cout << #x << " = " << x << endl const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7; int n, m; typedef pair<int, int> P; P a ; int deq ; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); // freopen("out.txt","w",stdout); #endif ios_base::sync_with_stdio(0); while(scanf("%d%d", &n, &m) == 2) { for(int i = 1; i <= n; ++i) scanf("%d%d", &a[i].first, &a[i].second); sort(a + 1, a + 1 + n); int l = 1; long long sum = 0, ans = 0; for(int i = 1; i <= n; ++i) { sum += a[i].second; deq[i] = i; while(i > l && a[deq[i]].first - a[deq[l]].first >= m) sum -= a[deq[l++]].second; // printf("%d\n", sum); ans = max(ans, sum); } printf("%I64d\n", ans); } return 0; }C. Kefa and Park
题意: 求树上到叶子节点的路径中 连续猫个数不超过m 的不同叶子节点
分析: 搜一下树就好了
代码:
// // Created by TaoSama on 2015-09-23 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(linker, "/STACK:1024000000,1024000000") #include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <string> #include <set> #include <vector> using namespace std; #define pr(x) cout << #x << " = " << x << " " #define prln(x) cout << #x << " = " << x << endl const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7; int n, k, ans; bool cat ; vector<int> G ; void dfs(int u, int f, int c){ if(c > k) return; int cnt = 0; for(auto v : G[u]){ if(v == f) continue; ++cnt; dfs(v, u, cat[v] ? c + 1 : 0); } if(cnt == 0) ++ans; } int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); // freopen("out.txt","w",stdout); #endif ios_base::sync_with_stdio(0); while(scanf("%d%d", &n, &k) == 2){ for(int i = 1; i <= n; ++i) scanf("%d", cat + i); for(int i = 1; i <= n; ++i) G[i].clear(); for(int i = 1; i < n; ++i){ int u, v; scanf("%d%d", &u, &v); G[u].push_back(v); G[v].push_back(u); } ans = 0; dfs(1, -1, cat[1]); printf("%d\n", ans); } return 0; }D. Kefa and Dishes
题意: n个饭菜 吃m个 如果按照k种前后排列的话有额外奖励 求最大满意度
分析: 状压dp 需要知道当前谁吃了 当前谁吃了 所以dp[i][j]:= 当前状态为i 且吃了j的最大满意度
然后dp就好了
代码:
// // Created by TaoSama on 2015-09-23 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(linker, "/STACK:1024000000,1024000000") #include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <string> #include <set> #include <vector> using namespace std; #define pr(x) cout << #x << " = " << x << " " #define prln(x) cout << #x << " = " << x << endl const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7; int n, m, k; long long dp[1 << 18][20]; int a[20], c[20][20]; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); // freopen("out.txt","w",stdout); #endif ios_base::sync_with_stdio(0); while(scanf("%d%d%d", &n, &m, &k) == 3) { for(int i = 0; i < n; ++i) scanf("%d", a + i); memset(c, 0, sizeof c); for(int i = 1; i <= k; ++i) { int u, v, w; scanf("%d%d%d", &u, &v, &w); --u; --v; c[u][v] = w; } memset(dp, -1, sizeof dp); for(int i = 0; i < n; ++i) dp[1 << i][i] = a[i]; long long ans = 0; for(int i = 1; i < 1 << n; ++i) { for(int j = 0; j < n; ++j) { if(dp[i][j] == -1) continue; for(int k = 0; k < n; ++k) { if(i >> k & 1) continue; dp[i | (1 << k)][k] = max(dp[i | (1 << k)][k], dp[i][j] + c[j][k] + a[k]); } if(__builtin_popcount(i) == m) ans = max(ans, dp[i][j]); } } printf("%I64d\n", ans); } return 0; }
相关文章推荐
- Codeforces Round #197 (Div. 2)
- Codeforces Round #198 (Div. 1)
- Codeforces 405E Codeforces Round #238 (Div. 2)E
- Codeforces 407C Codeforces Round #239 (Div. 1)C
- CodeForces 449A - Jzzhu and Chocolate
- CodeForces 449 B. Jzzhu and Cities
- Codeforces Round #265 (Div. 2)
- Codeforces #310 div2 C. Case of Matryoshkas
- 状态压缩DP codeforces 244 Problem C. The Brand New Function 和 codeforces 165 E. Compatible Numbers
- codeforces 16 Problem E fish
- Codeforces round #247 for Div. 2
- Codeforces Round #246 (Div. 2)
- Codeforces #264(div 2)D.Gargari and Permutations
- Codeforces Round #236 (Div. 2)------A,B
- codeforces 257 div2 B
- Codeforces Gym100571A Cursed Query
- Codeforces Gym100342E Minima
- Codeforces Gym100342J Triatrip
- Codeforces Gym100286B Blind Walk (dfs)
- Codeforces Gym100342J Triatrip