CodeForces 1141F2 贪心 离散化
CodeForces 1141F2 贪心 离散化
题意
给定一个序列,要求我们找出最多数量的不相交区间,每个区间和都相等。
思路
一开始没有头绪,不过看到 \(n \le 1500\) 后想到可以把所有的区间和都保存下来。那么就可以遍历n2个区间和,用一个vector保存和相同的区间,(因为区间和可能很大,所以可以离散化)之后对于每个vector,都进行以右端点为主的排序,然后顺着取合法不相交区间,即可得到关于当前和的最多的不相交区间,最终得到答案。
- 时间复杂度:小于 \(O(n^2logn)\)
AC代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
#include <vector>
using namespace std;
int n;
struct ab
{
int l;
int r;
bool operator < (const struct ab& c) const
{
return r < c.r;
}
};
map<long long, int>mm;
long long su[1505];
long long cc[2500005], co = 0;
vector<struct ab> D[2500005];
int main()
{
scanf("%d", &n);
su[0] = 0;
for (int i = 1; i <= n; ++i)
{
long long xx;
scanf("%lld", &xx);
su[i] = su[i - 1] + xx;
}
for (int i = 1; i <= n; ++i)
{
for (int j = i; j <= n; ++j)
{
if (!mm.count(su[j] - su[i - 1]))
{
mm[su[j] - su[i - 1]] = ++co;
cc[co] = su[j] - su[i - 1];
}
D[mm[su[j] - su[i - 1]]].push_back((struct ab){i, j});
}
}
int ansl = 0, ans = 0;
for (int i = 1; i <= co; ++i)
{
int ind = mm[cc[i]];
sort(D[ind].begin(), D[ind].end());
int rr = 0, anss = 0;
for (unsigned int j = 0; j < D[ind].size(); ++j)
{
if (D[ind][j].l > rr)
{
++anss;
rr = D[ind][j].r;
}
}
if (anss > ans)
{
ansl = i;
ans = anss;
}
}
printf("%d\n", ans);
int rr = 0;
for (unsigned int i = 0; i < D[ansl].size(); ++i)
{
if (D[ansl][i].l > rr)
{
rr = D[ansl][i].r;
printf("%d %d\n", D[ansl][i].l, D[ansl][i].r);
}
}
return 0;
}
CodeForces 1141F2 贪心 离散化的更多相关文章
- 洛谷P1966 火柴排队 贪心+离散化+逆序对(待补充QAQ
正解: 贪心+离散化+逆序对 解题报告: 链接在这儿呢quq 这题其实主要难在想方法吧我觉得?学长提点了下说用贪心之后就大概明白了,感觉没有很难 但是离散化这里还是挺有趣的,因为并不是能很熟练地掌握离 ...
- [Codeforces 1199C]MP3(离散化+二分答案)
[Codeforces 1199C]MP3(离散化+二分答案) 题面 给出一个长度为n的序列\(a_i\)和常数I,定义一次操作[l,r]可以把序列中<l的数全部变成l,>r的数全部变成r ...
- Codeforces Round #547 (Div. 3) F 贪心 + 离散化
https://codeforces.com/contest/1141/problem/F2 题意 一个大小为n的数组a[],问最多有多少个不相交的区间和相等 题解 离散化用值来做,贪心选择较前的区间 ...
- Codeforces 1141F2(贪心、预处理)
要点 一开始dp然后码力太辣鸡并且算法带假于是调了很久一交还WA在28-- 吐槽完毕.后来想拿栈优化dp时发现其实完全不需要dp,贪心选取即可,当前的不兼容就干脆不要它了,结果不会变差.然后想要什么就 ...
- CodeForces - 893D 贪心
http://codeforces.com/problemset/problem/893/D 题意 Recenlty Luba有一张信用卡可用,一开始金额为0,每天早上可以去充任意数量的钱.到了晚上, ...
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
There are n people and k keys on a straight line. Every person wants to get to the office which is l ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 828D) - 贪心
Arkady needs your help again! This time he decided to build his own high-speed Internet exchange poi ...
- Liebig's Barrels CodeForces - 985C (贪心)
链接 大意:给定$nk$块木板, 要制作$n$个$k$块板的桶, 要求任意两桶容积差不超过$l$, 每个桶的容积为最短木板长, 输出$n$个桶的最大容积和 假设最短板长$m$, 显然最后桶的体积都在$ ...
- 贪心+离散化+线段树上二分。。。 Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest G. Of Zorcs and Axes
题目链接:http://codeforces.com/gym/101149/problem/G 题目大意:给你n对数字,为(a[i], b[i]),给你m对数字,为(w[i], c[i]).给n对数字 ...
- CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作
题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...
随机推荐
- Python 提取PDF文本和图片
从PDF中提取内容能帮助我们获取文件中的信息,以便进行进一步的分析和处理.此外,在遇到类似项目时,提取出来的文本或图片也能再次利用.要在Python中通过代码提取PDF文件中的文本和图片,可以使用 S ...
- 01-spfile和pfile的区别,生成,加载和修复
oracle数据库的配置文件指的是系统在启动到"nomount"阶段需要加载的文件,也叫做pfile或者spfile,但是其实pfile和spfile是不同的文件. 不同的数据库配 ...
- Kafka的零拷贝技术Zero-Copy
传统的拷贝过程 流程步骤: (1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存: (2)应用程序将数据从内核空间读入用户空间缓冲区: (3)应用程序将读到数据写回内核空间并放入socket缓冲区 ...
- 错误记录-FileStream访问被拒绝
简介: 问题:因项目需要,软件需要读取授权文件中的密文与本机验证码做一定的逻辑比对,使用FileStream实现文件的读取,在本机调试没问题,但在其他同事电脑上有一些出现授权一直不通过的情况. --M ...
- "科来杯"第十届山东省大学生网络安全技能大赛决赛复现WP
从朋友那里得来的附件,感觉题目有意思,简单复现一下 MISC 简单编码 1.题目信息 0122 061 1101011 0172 0122 0105 061 1011010 0127 0154 014 ...
- 机器学习实战5-KMeans聚类算法
概述 聚类 VS 分类 有监督学习 VS 无监督学习 sklearn中的聚类算法 KMeans KMeans参数&接口 n_clusters n_clusters就是KMeans中的K就是告诉 ...
- 推理(Inference)与预测(Prediction)
在机器学习的背景下,很多人似乎混淆了这两个术语.这篇文章将试图澄清我们所说的这两个词是什么意思,每一个词在哪里有用,以及它们是如何应用的.在这里,我将举几个例子来直观地理解两者之间的区别. 推理和预测 ...
- 【译】NoClassDefFoundError和ClassNotFoundException的不同(转)
https://www.jianshu.com/p/93d0db07d2e3 本文翻译自:Difference between NoClassDefFoundError vs ClassNotFoun ...
- 2023浙江省大学生信息安全竞赛决赛 Cry+Misc wp
搞到了一些附件,做做看难度如何. CRYPTO R_r 1.题目信息 查看代码 from Crypto.Util.number import * import random from gmpy2 im ...
- typeid关键词
typeid是c++的关键字,typeid操作符的返回结果是名为type_info的标准库类型的对象的引用(在头文件typeinfo中定义) ISO C++标准并没有确切定义type_info,它的确 ...