2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)
创始人
2025-05-29 07:31:46
0

完型填空

思路:背包

  1. 用dp[i][j[k][h]表示在选了i道题的情况下,其中选了j道a,k道b,h道c,i-(j+k+h)道d时的最大期望
  2. 注意是每层循环,每道题选的数目不超过n/4,在选第i道题目时,之前选的所有题目和应该小于i
#include 
using namespace std;
#define ll     long long
const int N = 110;
int dp[N][30][30][30];
int a[N][5];
int main()
{int n;cin >> n;for (int i = 1; i <= n; ++i)cin >> a[i][1] >> a[i][2] >> a[i][3] >> a[i][4];for (int i = 1; i <= n; ++i)for (int j = 0; j <= n / 4 && j < i; ++j)for (int k = 0; k <= n / 4 && k + j < i; ++k)for (int h = 0; h <= n / 4 && j + k + h < i; ++h){int tmp = dp[i - 1][j][k][h];dp[i][j][k][h] = max(dp[i][j][k][h], tmp + a[i][4]);dp[i][j + 1][k][h] = max(dp[i][j + 1][k][h], tmp + a[i][1]);dp[i][j][k + 1][h] = max(dp[i][j][k + 1][h], tmp + a[i][2]);dp[i][j][k][h + 1] = max(dp[i][j][k][h + 1], tmp + a[i][3]);}cout << dp[n][n / 4][n / 4][n / 4] << endl;return 0;
}

摘苹果

思路:线段树裸题线段树

  1. 注意优化是显然我们每次需要具体到每个点去除3,但是我们如果[l,r]的区间没有一个数大于10,我们还需要进去这个区间吗?
  2. 所以每个区间维护一个区间最大值maxn,如果区间最大值都小于10,这个区间不用更新
#include 
using namespace std;
#define ll     long long
const int N = 1e5 + 10;
int a[N];
struct tree
{int l, r;ll sum, cnt, maxn;
} t[N << 2];void build(int l, int r, int p)
{t[p].l = l, t[p].r = r, t[p].cnt = 0;if (l == r){t[p].sum = t[p].maxn = a[l];if (t[p].sum < 100)t[p].cnt = 1;return;}int mid = l + ((r - l) >> 1);build(l, mid, p << 1);build(mid + 1, r, p << 1 | 1);t[p].sum = t[p << 1].sum + t[p << 1 | 1].sum;t[p].cnt = t[p << 1].cnt + t[p << 1 | 1].cnt;t[p].maxn = max(t[p << 1].maxn, t[p << 1 | 1].maxn);
}void update(int l, int r, int p)
{if (t[p].maxn < 10)return;if (t[p].l == t[p].r){t[p].sum = t[p].maxn = t[p].sum * 2 / 3;if (t[p].sum < 100)t[p].cnt = 1;return;}int mid = t[p].l + ((t[p].r - t[p].l) >> 1);if (l <= mid)update(l, r, p << 1);if (r > mid)update(l, r, p << 1 | 1);t[p].sum = t[p << 1].sum + t[p << 1 | 1].sum;t[p].cnt = t[p << 1].cnt + t[p << 1 | 1].cnt;t[p].maxn = max(t[p << 1].maxn, t[p << 1 | 1].maxn);
}ll asksum(int l, int r, int p)
{if (t[p].r <= r && l <= t[p].l)return t[p].sum;int mid = t[p].l + ((t[p].r - t[p].l) >> 1);ll ans = 0;if (l <= mid)ans += asksum(l, r, p << 1);if (r > mid)ans += asksum(l, r, p << 1 | 1);return ans;
}
ll askcnt(int l, int r, int p)
{if (t[p].r <= r && l <= t[p].l)return t[p].cnt;int mid = t[p].l + ((t[p].r - t[p].l) >> 1);ll ans = 0;if (l <= mid)ans += askcnt(l, r, p << 1);if (r > mid)ans += askcnt(l, r, p << 1 | 1);return ans;
}
int main()
{std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n, m;cin >> n >> m;for (int i = 1; i <= n; ++i)cin >> a[i];int op, x, y;build(1, n, 1);while (m--){cin >> op >> x >> y;if (op == 1)update(x, y, 1);else if (op == 2)cout << askcnt(x, y, 1) << endl;else if (op == 3)cout << asksum(x, y, 1) << endl;}return 0;
}

前缀复制机

思路:

名字暗示的很明显了,就是前缀函数裸题前缀函数与KMP算法

  1. 我们处理好字符串的前缀和后,从后往前遍历。这样贪心即是最优解
  2. 不从前是因为,后面过去,能匹配多大的前缀已经求出来了,而如果是从前往后,假设你这里可以先匹配3个,后面假设没得匹配。但是,假设如果你这里先匹配2个,后面就可以全部匹配完。那是不是后面这种方案更好。
  3. 所以从后往前推是知道了前面的所有情况做出的最优解(每次尽可能减少后面的长度)
#include 
using namespace std;
#define ll     long long
typedef unsigned long long ull;
typedef pair pll;
typedef pair pii;//double 型memset最大127,最小128
//std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
const int INF = 0x3f3f3f3f;         //int型的INF
const ll llINF = 0x3f3f3f3f3f3f3f3f;//ll型的llINF
const int N = 1e5 + 10;
int p[N];
int main()
{int t;cin >> t;while (t--){int n;string s;cin >> n >> s;p[0] = 0;for (int i = 1; i < (int)s.size(); ++i){int j = p[i - 1];while (s[j] != s[i] && j > 0)j = p[j - 1];if (s[j] == s[i])j++;p[i] = j;}//从0开始,所有num最后下标是n-1int num = n - 1;int ans = 0;while (num >= 0){ans++;if (!p[num])num--;else{int tmp = p[num];while (tmp * 2 > num + 1 && tmp > 0)tmp = p[tmp - 1];num -= tmp;}}cout << ans << endl;}mapmp;return 0;
}

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...