Codeforces 1452E Two Editorials (预处理优化)

题意:在长度为n的范围内有m个区间,现要求另选两个长度为k的区间染色,现求每个区间被最大染色和的最大值。

分析:对于每个位置i往后染k个颜色预处理对最终答案的贡献ans[i],以及染完这k个之后如果下一个区间从j开始染,由于j处染色部分大,i处的染色无法计算而丢失的贡献sub[i][j]。

维护好ans[N],sub[N][N]这两个数组后就只需要O(n^2)找出哪选哪两个最大就好了。

大体思路就是这样,具体细节还需要注意很多,比如预处理sub[N][N]数组时需要用到差分,区间内染色大小相同时都要减去贡献,所以sub维护的实际上是丢失的贡献的二倍

代码:

#include<bits/stdc++.h>
#define fi first
#define se second
#define mid (l+r>>1)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef pair<int, int>pii;
typedef vector<int>vi;
struct tri {int a, b, c;};
const int N = 2e3 + 10;
const int inf = 0x3f3f3f3f;
const ll linf = 0x3f3f3f3f3f3f3f3f;
const ll mod = 1e9 + 7;
int n, m, k, ans[N], sub[N][N << 1];
pii arr[N];
 
void solve(int l)
{
    int r = l + k - 1;
    for(int i = 1; i <= m; i++)
    {
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用时请将ClientAndServerDatabase文件夹放至到E盘的根目录下。 Client的账号为:guest 密码为:111 Server的账号为:admin 密码为: admin 使用时将Client目录下的Server.ini文件中的IP 后改写为服务器端的IP地址。 Server中的客户端监控设置改为客户端的IP地址,之后重启软件就可以看到客户端屏幕了。 发送信息需开启信使服务,开启方法为点击服务项中的Messager项为开启。 注意双方的机子都得开启此服务,才能够使用其功能。 Client的接受文件功能需要输入服务器端的IP地址点连接,端口号为5001,我已设为默认。 服务器端需要点击文件传输按钮才能被客户端连接到。 关于流量监控,此模块有异常,光查询时没有问题,关闭该功能时会报错。 远程桌面连接为系统自带功能项,具体使用方法请查询百度。 Client有禁止qq登录的功能。此功能耗费系统内存。 此系统的初步设想是将数据库放置到一个服务器上,通过client端和server端共同访问到数据库,并且修改,查询,最后因为种种原因没有实现该功能,仅将数据库.mdb文件放置到了一个公共的文件夹下,我想如果是一个搭建好的局域网,并且有着一个共享的目录,所有在局域网内的计算机就可以一并放到到此目录,这时在将数据库文件放置到那里,问题就可以得到解决,在此仅提供思路,本人并没有实现。 最后我想说本系统不完善的东西其实有太多太多,并不是一个成功的作品,其中也COPY了大量的代码,但是我想说的是,因为我做的这个东西资料挺难找的,仅此的想将这个不完善的东西上传至网上,能够给有所需的人一点点启发,这就足够了!!! 本系统的作者为:大连东软信息学院 嵌入式09002班 徐明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值