daimayuan 代码源大富翁游戏

简介: daimayuan 代码源大富翁游戏

线段树基础题,动态在线维护区间最大值和最小值,一发过

具体看注释:

/*********************************************************************
    程序名:
    版权: Joecai
    作者: Joecai
    日期: 2022-04-06 14:55
    说明:
*********************************************************************/
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
# define rep(i,be,en) for(int i=be;i<=en;i++)
# define pre(i,be,en) for(int i=be;i>=en;i--)
typedef pair<int, int> PII;
#define ll long long
#define endl "\n"
#define LOCAL
#define pb push_back
#define eb emplace_back
#define sp(i) setprecision(i)
const int N = 1e6 + 10, INF = 0x3f3f3f3f;
struct node
{
  int l;//区间左端点
  int r;//区间右端点
  int mi;//区间最小值
  int mx;//区间最大值
} tr[N << 2];
int a[N];
void init(int n)
{
  for (int i = 1; i <= n; i++)
  {
    a[i] = 100;
  }
}
void pushup(int u)//传递子树对父亲的影响
{
  tr[u].mi = min(tr[u << 1].mi, tr[u * 2 + 1].mi);//维护区间最小值
  tr[u].mx = max(tr[u << 1].mx, tr[u << 1 | 1].mx);//维护区间最小值
}
void build(int u, int l, int r)//构建线段树
{
  tr[u] = {l, r};
  if (l == r)
  {
    tr[u].mx = a[r];
    tr[u].mi = a[r];
    return;
  }
  int mid = l + r >> 1;
  build(u << 1, l, mid);
  build(u << 1 | 1, mid + 1, r);
  pushup(u);
}
void add(int u, int p, int x)//直接单点修改
{
  if (tr[u].l == tr[u].r)
  {
    if (tr[u].l == p)
    {
      tr[u].mi += x;
      tr[u].mx += x;
    }
    return;
  }
  int mid = tr[u].l + tr[u].r >> 1;
  if (p <= mid) add(u << 1, p, x);
  else add(u << 1 | 1, p, x);
  pushup(u);
}
int querymi(int u, int l, int r)//直接传递1-n的最小值
{
  return tr[u].mi;
}
int querymx(int u, int l, int r)//直接传递1-n,的最大值
{
  return tr[u].mx;
}
void solve()
{
  int n, m;
  cin >> n >> m;
  init(n);
  build(1, 1, n);
  for (int i = 1; i <= m; i++)
  {
    int t;
    cin >> t;
    if (t == 1)
    {
      int p, x;
      cin >> p >> x;
      a[p] += x;
      add(1, p, x);
    } else
    {
      cout << querymx(1, 1, n) << ' ' << querymi(1, 1, n) << endl;
    }
  }
}
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  //#ifdef LOCAL
  //freopen("data.in.txt","r",stdin);
  //freopen("data.out.txt","w",stdout);
  //#endif
  int __ = 1;
  //cin>>__;
  while (__--)
  {
    solve();
  }
  return 0;
}

点个赞再走叭~

目录
相关文章
|
编解码 安全 网络协议
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
|
3月前
|
人工智能 算法
你试过一秒钟出现在世界各地的感觉吗?使用一键人像抠图换背景,让你拥有任意门
准备人像与背景图,访问ModelScope一键抠图换背景工具。上传人像至位置1,背景至位置2。点击按钮稍候,AI快速生成新图,将人像无缝融合至新背景中。体验高效便捷,算法智能精准,边缘处理细腻无痕,支持多样背景选择,输出质量高,适合多种应用场景。
|
6月前
|
人工智能 算法 计算机视觉
我的自描外挂制作日志——FPS类游戏的自瞄【构思准备】
我的自描外挂制作日志——FPS类游戏的自瞄【构思准备】
250 0
|
5月前
|
图形学 索引
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)
102 2
|
5月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱8(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱8(附带项目源码)
44 1
|
5月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱7(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱7(附带项目源码)
31 0
|
5月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱2(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱2(附带项目源码)
40 0
|
5月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱11(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱11(附带项目源码)
31 0
|
6月前
|
计算机视觉
我的自描外挂制作日志——FPS类游戏的自瞄【验证猜想】
我的自描外挂制作日志——FPS类游戏的自瞄【验证猜想】
80 1
|
API C语言 开发者
【精选】太阳系八大行星运转轨迹程序,C语言,源代码分享
太阳系行星运行轨道图,C语言,源代码分享
299 0
【精选】太阳系八大行星运转轨迹程序,C语言,源代码分享
下一篇
无影云桌面