线段树模板题 HDU 1754 POJ 3468

线段树及例题(含题解)汇总(持续更新) 线段树及例题(含题解)汇总(持续更新) 该来的总要来,寒假没好好学,现在就得为寒假的懒买单(呜呜呜)。看了一天的线段树,虽然看懂还是很容易,毕竟就是一个特殊二叉树,但是实际应用却还是很复杂的,于是开始找些模板题敲敲,争取好好掌握这一数据结构。 至于不了解线段树基础知识的话,这有一大牛博客的传送门:传送门 线段树使用于和区间统计有关的问题: 比如某些数据可以按区间进行划分,按区间动态进行修改,而且还... 阅读详情

下面两道题的模板:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define inf 1000000000
typedef long long ll;
using namespace std;
const int N=200010;
struct stree{
    int l,r;
    ll maxx,minn,sum,add;
}t[N*4];
int a[N],n,m;

//建树,调用入口为build(1,1,n)
void build(int p,int l,int r)
{
    t[p].l=l,t[p].r=r;
    if(l==r)
    {
        t[p].sum=a[l];
        t[p].maxx=a[l];
        t[p].minn=a[l];
        return ;
    }
    int mid=(l+r)/2;
    build(p*2,l,mid);
    build(p*2+1,mid+1,r);
    t[p].sum=t[p*2].sum+t[p*2+1].sum;
    t[p].maxx=max(t[p*2].maxx,t[p*2+1].maxx);
    t[p].minn=min(t[p*2].minn,t[p*2+1].minn);
}

//更新节点信息,调用入口:change(1,x,v) 更新a[x]为v
void change(int p,int x,int v)
{
    if(t[p].l==t[p].r)
        //{t[p].dat+=v;return ;}
        {t[p].sum=v;t[p].minn=v;t[p].maxx=v;return ;}
    int mid=(t[p].l+t[p].r)/2;
    if(x<=mid)  change(p*2,x,v);
    else    change(p*2+1,x,v);
    t[p].sum=t[p*2].sum+t[p*2+1].sum;
    t[p].maxx=max(t[p*2].maxx,t[p*2+1].maxx);
    t[p].minn=min(t[p*2].minn,t[p*2+1].minn);
}

//询问最值,调用入口:ask(1,l,r)
int ask(int p,int l,int r)
{
    if(l<=t[p].l&&t[p].r<=r)
        return t[p].maxx;   //t[p].minn
    int mid=(t[p].l+t[p].r)/2;
    int ret=-inf;   //inf
    if(l<=mid)
        ret=max(ret,ask(p*2,l,r));  //min
    if(r>mid)
        ret=max(ret,ask(p*2+1,l,r));  //min
    return ret;
}

void spread(int p)
{
    if(t[p].add)
    {
        t[p*2].sum+=t[p].add*(t[p*2].r-t[p*2].l+1);
        t[p*2+1].sum+=t[p].add*(t[p*2+1].r-t[p*2+1].l+1);
        t[p*2].add+=t[p].add;
        t[p*2+1].add+=t[p].add;
        t[p].add=0;
    }
}

//更新节点信息,调用入口:change(1,l,r,d),把第l到r个数都加d
void changee(int p,int l,int r,int d)
{
    if(l<=t[p].l&&r>=t[p].r)
    {
        t[p].sum+=(ll)d*(t[p].r-t[p].l+1);
        t[p].add+=d;
        return ;
    }
    spread(p);
    int mid=(t[p].l+t[p].r)/2;
    if(l<=mid) changee(p*2,l,r,d);
    if(r>mid)   changee(p*2+1,l,r,d);
    t[p].sum=t[p*2].sum+t[p*2+1].sum;
}

//第l到r个数的和,调用入口:ask(1,l,r)
ll askk(int p,int l,int r)
{
    if(l<=t[p].l&&r>=t[p].r)
        return t[p].sum;
    spread(p);
    int mid=(t[p].l+t[p].r)/2;
    ll val=0;
    if(l<=mid)
        val+=askk(p*2,l,r);
    if(r>mid)
        val+=askk(p*2+1,l,r);
    return val;
}

int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        build(1,1,n);
        char c;
        int x,y,z;
        while(m--)
        {
            getchar();
            scanf("%c%d%d",&c,&x,&y);
            if(c=='C')
            {
                scanf("%d",&z);
                changee(1,x,y,z);
            }
            else
                printf("%lld\n",askk(1,x,y));
        }
    }
    return 0;
}

HDU 1754

单点更新,区间最值查询。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<sstream>
#include<cstdlib>
#include<time.h>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define repp(i,n,a) for(int i=n;i>=a;i--)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define Eps 1e-8
#define Mod 1e9+7
#define maxn 100010
const double pi=acos(-1.0);
using namespace std;
const int SIZE=200010;
struct stree{
    int l,r;
    int dat;
}t[SIZE*4];
int a[SIZE];

//建树,调用入口为build(1,1,n)
void build(int p,int l,int r)
{
    t[p].l=l,t[p].r=r;
    if(l==r)
    {
        t[p].dat=a[l];
        return ;
    }
    int mid=(l+r)/2;
    build(p*2,l,mid);
    build(p*2+1,mid+1,r);
    //t[p].dat=t[p*2].dat+t[p*2+1].dat;
    t[p].dat=max(t[p*2].dat,t[p*2+1].dat);
}

//更新节点信息,调用入口:change(1,x,v) 更新a[x]为v
void change(int p,int x,int v)
{
    if(t[p].l==t[p].r)
        //{t[p].dat+=v;return ;}
        {t[p].dat=v;return ;}
    int mid=(t[p].l+t[p].r)/2;
    if(x<=mid)  change(p*2,x,v);
    else    change(p*2+1,x,v);
    //t[p].dat=t[p*2].dat+t[p*2+1].dat;
    t[p].dat=max(t[p*2].dat,t[p*2+1].dat);
}

//x询问区间最值,调用入口:ask(1,l,r)
int ask(int p,int l,int r)  
{
    if(l<=t[p].l&&r>=t[p].r)
        return t[p].dat;
    int mid=(t[p].l+t[p].r)/2;
    int ret=-inf;
    if(l<=mid)
        ret=max(ret,ask(p*2,l,r));
    if(r>mid)
        ret=max(ret,ask(p*2+1,l,r));
    return ret;
}
int main()
{

    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        mem(a,0);
        int x,y;
        rep(i,1,n)
        {
            scanf("%d",&x);
            a[i]=x;
        }
        build(1,1,n);
        char s;
        while(m--)
        {
            getchar();
            scanf("%c",&s);
            scanf("%d%d",&x,&y);
            if(s=='U')
                change(1,x,y);
            else
                cout<<ask(1,x,y)<<endl;
        }
    }
    return 0;
}

POJ 3468

区间更新,区间和查询。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<sstream>
#include<cstdlib>
#include<time.h>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define repp(i,n,a) for(int i=n;i>=a;i--)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define Eps 1e-8
#define Mod 1e9+7
#define maxn 100010
const double pi=acos(-1.0);
using namespace std;
const int SIZE=100010;
#define l(x) tree[x].l
#define r(x) tree[x].r
#define sum(x) tree[x].sum
#define add(x) tree[x].add

struct stree{
    int l,r;
    ll sum,add;
}tree[SIZE*4];
int a[SIZE],n,m;

//建树,调用入口为build(1,1,n)
void build(int p,int l,int r)
{
    l(p) = l;
    r(p) = r;
    if(l==r)
    {
        sum(p)=a[l];
        return ;
    }
    int mid=(l+r)/2;
    build(p*2,l,mid);
    build(p*2+1,mid+1,r);
    sum(p)=sum(p*2)+sum(p*2+1);
}

void spread(int p)
{
    if(add(p))
    {
        sum(p*2)+=add(p)*(r(p*2)-l(p*2)+1);
        sum(p*2+1)+=add(p)*(r(p*2+1)-l(p*2+1)+1);
        add(p*2)+=add(p);
        add(p*2+1)+=add(p);
        add(p)=0;
    }
}

//更新节点信息,调用入口:change(1,l,r,d),把第l到r个数都加d
void change(int p,int l,int r,int d)
{
    if(l<=l(p)&&r>=r(p))
    {
        sum(p)+=(ll)d*(r(p)-l(p)+1);
        add(p)+=d;;
        return ;
    }
    spread(p);
    int mid=(l(p)+r(p))/2;
    if(l<=mid) change(p*2,l,r,d);
    if(r>mid)   change(p*2+1,l,r,d);
    sum(p)=sum(p*2)+sum(p*2+1);
}

//第l到r个数的和,调用入口:ask(1,l,r)
ll ask(int p,int l,int r)
{
    if(l<=l(p)&&r>=r(p))
        return sum(p);
    spread(p);
    int mid=(l(p)+r(p))/2;
    ll val=0;
    if(l<=mid)
        val+=ask(p*2,l,r);
    if(r>mid)
        val+=ask(p*2+1,l,r);
    return val;
}
int main()
{

    cin>>n>>m;
    rep(i,1,n)
        scanf("%d",&a[i]);
    build(1,1,n);
    char s[10];
    int l,r,d;
    while(m--)
    {
        getchar();
        scanf("%s",s);
        scanf("%d%d",&l,&r);
        if(s[0]=='C')
        {
            scanf("%d",&d);
            change(1,l,r,d);
        }
        else
            cout<<ask(1,l,r)<<endl;
    }
    return 0;
}

 

从零构建XVC协议栈:FPGA+W5300的跨界调试架构实战 本文详细介绍了如何从零构建XVC协议栈,通过FPGA与W5300以太网控制器的创新组合实现跨界调试架构。重点解析了JTAG时序逆向、TCP/IP协议栈集成与XVC协议实现,提供了硬件设计优化和性能加速技术,为嵌入式开发者和FPGA工程师提供实用的远程调试解决方案。 阅读详情

相关推荐

Win10/Win11共享打印机0x00000709终极修复指南:从注册表到LPD协议的全面解决方案

本文提供了Win10/Win11共享打印机0x00000709错误的终极修复指南,涵盖从注册表修改到LPD协议的全面解决方案。通过详细分析错误根源、基础修复四步法、高阶LPD协议方案及企业级深度修复策略,帮助用户彻底解决打印机共享问题,提升局域网打印效率。

weixin_33724046的博客 310

坑死在main部分的线段树

Kuangbin带我飞专题七——线段树 下面虽然都是线段树裸的模板题,但是都没有一次AC掉,在main部分出现各种各样的问题   HDU 1166  敌兵布阵 https://vjudge.net/problem/HDU-1166  这道题写过好多遍了,今天重新刷还是一直WA ; 查了半小时错发现原因在于开始我用的  ios::sync_with_stdio(false);  配合 ci...

NoobPlayer_llke的博客 188

从选卡到验证:CST仿真GPU加速全流程实战指南

本文详细介绍了CST仿真中GPU加速的全流程实战指南,从硬件选型到软件配置,再到性能验证和常见问题排查。通过对比专业卡与游戏卡的性能差异,提供硬件选型建议,并分享驱动安装、关键设置及CST软件配置的黄金法则,帮助用户显著提升仿真效率。

weixin_30650039的博客 394

线段树模板专题从入门到放弃

先附上学习线段树时做的笔记 https://blog.youkuaiyun.com/weixin_42172261/article/details/88367758 HDU 1166 敌兵布阵 线段树单点增减 注意update函数中当更新了单点信息后还要pushup #include <iostream> #include <cstdio> #include <cstring&...

H4ppyD0g的博客 229

车辆TBOX科普 第7次 TBOX技术深度解析:硬件架构与核心组件详解

摘要: TBOX(车载远程信息处理单元)是智能网联汽车的核心组件,承担数据采集、通信连接与安全交互等关键功能。其硬件架构以主控单元为核心,采用ARM架构处理器(如NXP i.MX系列)实现高效能低功耗处理,搭配DDR4/LPDDR5内存保障性能,eMMC/UFS存储确保数据可靠性。设计中需平衡车规级可靠性(AEC-Q100)、EMC兼容性及成本控制,同时集成通信、定位与安全模块。未来趋势聚焦异构计算、先进制程及功能安全(ASIL-D)与信息安全融合,推动TBOX向边缘计算节点演进。该技术是汽车智能化转型的重

IT深耕十余载,大道之简 861

LabVIEW电压信号采集系统:从零搭建到科研实战

本文详细介绍了如何从零开始搭建一个基于LabVIEW的电压信号采集系统。内容涵盖硬件选型(如NI USB-6002数据采集卡)、软件环境配置、核心程序开发(包括多通道同步采集、数据自动保存)以及高级功能优化。系统支持自定义采样率与时长,并提供了完整的LabVIEW程序框图和配套的Python数据分析脚本,旨在帮助科研人员和工程师快速构建稳定、高效的专属数据采集方案,提升实验自动化水平。

gold8的专栏 461

线段树 —— 模板习题

HDU 1166 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;敌兵布阵 PS:线段树维护区间和 #include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; using namesp

Scar_Halo 329

模电(十四)差分放大电路

目录 差分放大电路 双端输入双端输出 Q点分析 抑制共模信号 放大差模信号 双端输入单端输出 Q点分析 差模信号分析 共模信号分析 单端输入双端输出 单端输入单端输出 四种接法比较 具有恒流源的差分放大电路 差分放大电路的改进 差分放大电路 采用引入支流负反馈,温度补偿来克服零点漂移(温度变化,直流电源波动,元器件老化产生的输入电压为零,输出电压不为零的...

weixin_43674847的博客 2万+

图论练习题

poj1062 dijkstra poj1847 dijkstra poj1502 单源最短路模板题 poj1511 堆优化dijk poj1797 通路中最大边 poj1860 Bellman_Ford判断负环 poj2240 Bellman_Ford/Spfa判断正环 poj2253 所有通路中的最长边中的最短的 poj2387 dijsktra 有重边 poj2502...

圣托里尼的日落啊~的博客 337

【YOLO部署Android安卓手机APP】YOLOv8部署到安卓实时目标检测识别——官方/自训练模型YOLOv8人脸/车辆等目标检测(可自定义更换其他目标)

本文首先讲解如何直接使用官方训练好的模型部署到手机APP进行人脸检测,然后讲解如何修改其他目标进行检测,以车辆检测为例进行讲解如何训练自己的模型部署到手机APP。本文为详细设计/配置文档,包含完整所需的环境配置搭建,项目工程配置步骤等,手把手记录使用pycharm和Android studio的工程开发过程,实现YOLO部署到安卓。实战开发,亲测无误。本项目实现了人脸检测和车辆检测,当然,以此你可以按照本项目开发步骤扩展更换为其他目标进行检测,例如更换为车牌、手势、人脸面部活动、人脸表情、火焰烟雾、行人等

嵌入式阿齐Archie 1万+

数字人接大模型第二步:语音克隆

推荐XTTS-v2项目,由Coqui公司开发的语音生成模型,专为多语言语音克隆和生成设计。它支持17种语言,包括英语、西班牙语、法语、德语、意大利语、葡萄牙语、波兰语、土耳其语、俄罗斯语、荷兰语、捷克语、阿拉伯语、中文、日语、匈牙利语、韩语和印地语。XTTS-v2的核心优势在于其仅需6秒的音频片段即可实现语音克隆,无需大量的训练数据。此外,它还支持情感和风格转移、跨语言语音克隆以及多语言语音生成,采样率高达24kHz。地址:https://github.com/archwesome/XTTS-v2。

403

线段树模板题

1.HDU 1754 (点修改)#include &lt;map&gt; #include &lt;set&gt; #include &lt;cmath&gt; #include &lt;queue&gt; #include &lt;stack&gt; #include &lt;cstdio&gt; #include &lt;vector&gt; #include &lt;iomanip&

Insist_77的博客 282

用 ABAP 驾驭 OAuth 2.0:从 Authorization Code 到 SAML Bearer 的全栈落地指南

ABAP平台OAuth 2.0客户端开发实践 本文为SAP开发者详细解析ABAP平台内置OAuth 2.0客户端的使用方法,涵盖四种授权流的最佳实践: 授权流选择: Authorization Code:适用于用户交互场景 SAML 2.0 Bearer:适合已有SAML体系的企业 Client Credentials:系统间通信 Password Credentials:过渡方案(不推荐) 配置流程: 通过SE80定义Client Profile 使用SOAUTH2_CLIENT/OA2C_CONFIG配

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 309

微软研究院跨学科实验室实践:计算机科学与社会科学融合创新

跨学科研究是推动科技创新的重要范式,其核心在于打破传统学科壁垒,通过方法论融合解决复杂现实问题。从原理上看,这种研究模式强调不同学科视角的互补性,例如计算机科学提供算法与数据处理能力,而社会科学则贡献对人类行为、社会结构和伦理影响的理解框架。这种融合的技术价值在于能够从源头预见并规避技术的社会风险,提升技术解决方案的包容性与可持续性。在应用场景上,跨学科方法在算法公平性评估、隐私设计、人机交互系统优化等领域展现出独特优势。微软研究院新英格兰实验室的五年实践,正是通过构建计算机科学家与社会科学家深度协作的**

weixin_30615767的博客 401

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

来波最近刷题的总结=w=

寒假刷题记录2018.2.10更新  刷的题的题解慢慢补充菜鸡趁着假期,搞了10天图论和数据结构目前学习方法:从简单到困难一步步深入,看各路大神博客,看白书,理解思路,跟着敲多几遍模板题,A多几题就背一下模板  刷题去vjudge搜kuangbin  WA点:数组开错,模板错误,数组初始化,scanf,行内空格,卡STL,long long目前:图论新手,请多指教图的表示方法:邻接表vector,...

animalcoder 514

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

codeforces 915 E 896 C 珂朵莉树

珂朵莉树(Chtholly Tree),一种基于std::set的暴力数据结构,是由某毒瘤在2017年的一场CF比赛中提出的数据结构,原名老司机树(Old Driver Tree,ODT)。由于第一个以珂朵莉树为正解的题目的背景以《末日时在做什么?有没有空?可以来拯救吗?》中的角色——珂朵莉为主角,所以这个数据结构又被称为珂朵莉树(Chtholly Tree)她主要处理区间修改、查询问题,在数据随...

flyzer的博客 668

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

网络流 最小费用最大流

网络流裸题 HDU 3549 Sample  input: 2 3 2 1 2 1 2 3 1 3 3 1 2 1 2 3 1 1 3 1 Sample output: Case 1: 1 Case 2: 2 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;alg...

flyzer的博客 647

Gym - 101652 部分题解

题目链接1题目链接2 又是一场和库里布莱恩特的菜鸡互啄,这次还是三星gym,还是两个人一起做,比上次还惨,才6个题。 这场的题感觉很简单,就是有点坑,第二题是多组输入但题里并没有说,骰子那题也是大水题,就是题意难懂,机器人那题也是题目简单,但题意难懂。分块除法,新知识点。BR那题,转化,然后求最大子段和,没想到。还有就是二分,二分真的太好用了。 Gym - 101652ZForbid...

flyzer的博客 627

Codeforces Round #598 (Div. 3) codeforces 1256

题目链接 昨天晚上的cf,和程磊开黑打的,听说div3好上分,本来还指望这场上130分直接把颜色改了,没想到翻车了......就过了俩题,A和D过了,B题是个贪心,没写好。 A水题。 B: 题意:给你一个n的全排列,你可以操作n-1次(或者少于n-1次),问操作完后使字典序最小,输出这个字典序最小的排列。对于每种操作,你可以选一个数i(1<i<=n-1),然后交换a[i]和a[...

flyzer的博客 448

codeforces 912 D. Fishes

题目链接 题意:有一个n×m的鱼塘,有一张r×r的渔网,现在往池塘里面放k条鱼(每个格子只能放一条鱼), 现在撒网的地方是随机的(必须在池塘内),问能捕的鱼的期望值最大是多少? 思路:BFS+优先队列 感觉很多题都是这么搞得,bfs加优先队列,然后队列里面存的都是结构体,需要重载运算符。 这题也是,只要挑选出前k个贡献最大的点就行了,判断每个点是否计算过,需要用map和pair,不能用vi...

flyzer的博客 404

Codeforces 877 Round #442 (Div. 2) E. Danil and a Part-time Job

题目链接 拖了这么多天,终于把这个题过了。 题意:一棵有根树, 每个节点可以是1或者0, 两种操作: 1. pow v: 将v节点的子树中所有节点的值反置(1变0, 0变1, 相当于异或1) 2. get v: 输出v节点的字数中1的个数 DFS序+线段树 #include<iostream> #include<iomanip&...

flyzer的博客 398

POJ 2341 优先队列

题意:汽车要行驶L单位的距离。最开始,汽车上有P单位的汽油,汽车走一单位路程要消耗一单位1汽油,如果汽车在形式途中汽油耗尽,那么将无法继续前行。途中有n个加油站,第i个加油站距离起点有a[i]单位的距离,且能加b[i]单位的油。问到达终点所需的最少加油次数。 Solution:这题可以理解为,在到达加油站时,就获得了一次在之后的任何时候都可以加b[i]单位汽油的权利,而在之后需要加油的时候,就认...

flyzer的博客 384

SPFA算法 最短路

spfa求最短路 有一篇讲解spfa的博客,讲的不错:最快最好用的——spfa算法 POJ 2387  Til the Cows Come Home 最短路裸题 input: 5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100 output: 90 直接模拟spfa算法过程: #include &lt;iostream&gt; #include &...

flyzer的博客 379

codeforces 911 F. Tree Destruction

题目链接 题意: 给定一棵树,每次可以选定树上的两个叶子,并删去其中的一个。答案每次加上两个选定的叶子之间的距离。求最后答案的最大值。 思路 首先,距离树上的任意一个节点最远的节点一定是某条直径的某个端点。 首先求出树的某一条直径,令其端点分别为L, R。把L看成树的根,那么R一定是叶子结点。对于那些非直径上的点,离他们最远的点肯定是L或R中的一个(可能也有其他的,但是L或R肯定已经最大...

flyzer的博客 369

CodeForces - 1038C Gambling 模拟 贪心

题意弄懂了就非常简单。 题意:A和B做游戏,开始的时候,每个人都有n个数,A先手,两人轮流执行,轮到某个人的时候,他有两种操作,一种是把对方的数拿走扔掉,另一种是拿走自己的数加到自己的分数上,直到两个人的数全都没有了,游戏结束。假设两个人都足够聪明,问最终A的得分与B的得分的差是多少。 Solution:模拟,贪心。因为两个人的数全部拿走游戏才算结束,并且每个人每次操作都会拿走一个数,所以两个...

flyzer的博客 368

CodeForces - 1038D Slime 思维

推荐一边个人认为比较好的博客:https://blog.youkuaiyun.com/qq_37594941/article/details/82589288 题意:给出一个长度为n的数列,每个数都可以和左边的数或者右边的数结合(紧挨着的),结合后的结果为结合的数减去被结合的数得到的值,结合n-1次后,只剩下一个数,问这个数最大是多少。 Solution:只要弄明白了下面这个事实,这个题就好做了:至少有一...

flyzer的博客 349
上一篇: Codeforces Round #440 Div. 2 E - Points, Lines and Ready-made Titles
下一篇: ST算法模板题 POJ 3264
flyzer
博客等级 码龄9年 27粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值