题目链接

  • 题意:

    一个长度为L的木棍,有n个支点支撑,每一个点是一个int数。表示距离木棍左端点的距离。求在那些位置将木棍劈开能够使得至少有一个木棍掉下去,输出这些位置的长度

    3 ≤ l ≤
    109;
    2 ≤ n ≤ 105
  • 分析:

    对于左端的木棍。假设会掉下去一定是重心在木棍之外。两种情况:1,在最左端木棍之外。2,在最右木棍之外

    每次能够得到一个答案区间,最后再从右向左处理一下,将区间合并即答案
const int maxn = 1100000;

struct Seg
{
int l, r;
bool operator< (const Seg& rhs) const
{
if (l != rhs.l)
return l < rhs.l;
return r < rhs.r;
}
} x[maxn];
int tot, L, n;
int ipt[maxn]; void fun(bool flag)
{
if (flag)
x[tot++] = (Seg){ L - 2 * ipt[0], L };
else
x[tot++] = (Seg){ 0, 2 * ipt[0] };
REP(i, n - 1)
{
int l = ipt[i] * 2, r = ipt[i + 1];
if (l <= r)
{
if (flag)
x[tot++] = (Seg){ L - r, L - l };
else
x[tot++] = (Seg){ l, r };
}
}
} int main()
{
while (~RII(L, n))
{
tot = 0;
REP(i, n)
RI(ipt[i]);
sort(ipt, ipt + n);
fun(false); REP(i, n)
ipt[i] = L - ipt[i];
sort(ipt, ipt + n);
fun(true); sort(x, x + tot);
int cnt = 1;
FF(i, 1, tot)
{
int &l1 = x[cnt - 1].l, &r1 = x[cnt - 1].r;
int &l2 = x[i].l, &r2 = x[i].r;
if (r1 >= l2)
{
r1 = max(r1, r2);
}
else
{
x[cnt].l = l2;
x[cnt].r = r2;
cnt++;
}
}
tot = cnt;
int ans = 0;
REP(i, tot)
{
ans += x[i].r - x[i].l;
}
WI(ans);
}
return 0;
}

最新文章

  1. [知识点]字符串Hash
  2. 分享一些不错的sql语句
  3. cannot load flash device description
  4. java web 学习 --第三天(Java三级考试)
  5. MFC-CString 字符串分割
  6. tomcat加入系统服务
  7. error recoder,error debug for openStack kilo
  8. tornado模板的自动编码问题(autoescape )
  9. QT调用百度语音REST API实现语音合成
  10. OpenMP并行化实例----Mandelbrot集合并行化计算
  11. 蓝牙Legacy Pairing流程概述
  12. flannel
  13. sk_buff的数据预留和对齐
  14. 关于JS call apply 对象、对象实例、prototype、Constructor、__proto__
  15. 存储树形的数据表转为Json
  16. MySql EF6 DBFirst 向导无法生成 edmx 解决方法(同:您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库提供程序)
  17. hiveSql常见错误记录
  18. 江西理工大学南昌校区排名赛 F: 单身狗的骑马游戏
  19. Yarn 命令详解
  20. arcgis的炸开多边形功能

热门文章

  1. vue 过滤器使用的传参说明
  2. android开发面试题
  3. HDU 4324 Contest 3
  4. Android源代码解析之(七)--&amp;gt;LruCache缓存类
  5. debian mysql 定时自己主动备份的脚本
  6. python部分
  7. jQuery ajax在IE浏览器的跨域问题--jquery.xdomainrequest.min.js
  8. 爬虫框架webmagic与spring boot的结合使用--转
  9. HD-ACM算法专攻系列(9)——大菲波数
  10. gb2312和gbk互转