站外题求助
  • 板块学术版
  • 楼主mukari
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/2/15 20:31
  • 上次更新2023/10/24 00:41:53
查看原帖
站外题求助
446327
mukari楼主2023/2/15 20:31
题目背景
  龙泉寺法师和龙泉寺敌法是好朋友,他们经常一起组队做ACM比赛。然而ACM比赛需要三个人,所以他们找了个队(dou)友(bi)一起做。
题意描述
  队(dou)友(bi)翻译了一道题,题面是这样的:
  ·给定一个长度为n的整数序列a[i],其中|a[i]|<=1。
  ·操作:选择一个1<=i<n,令a[i+1]增加a[i],这个过程中允许|a[i]|>1。
  ·目标:用最少的操作使得a不降,输出操作数。如果不可行,输出-1。
  龙泉寺法师:这么简单?你是看错题了吧?
  队(dou)友(bi):啊……说不定是吧……
  龙泉寺法师:这题一定是这样的~(balabala)
  ·给定一个长度为n的整数序列a[i],其中|a[i]|<=1
  ·有m个要求
  ·第一种要求是将某一个a[i]修改成x(|x|<=1)
  ·第二种要求是询问[l,r]这一段用最少的操作数使它变得不降。如果不可行,输出-1。
  于是,龙泉寺法师迅速把龙泉寺敌法从电脑前踹开,自己开始编写这题的AC算法……
  队(dou)友(bi):这题我不会啊。。
  现在请你帮助队(dou)友(bi)解决这道题。
输入格式
  第一行两个数n,m,空格分隔,表示序列长度和操作数。
  第二行n个数,表示序列a,满足|a[i]|<=1
  接下来m行,每行3个数
  如果是第一种要求,四个数0 wi xi,空格分隔,表示把a[wi]修改成xi。
  如果是第二种要求,三个数1 li ri,空格分隔,表示询问[li,ri]这一段至少要多少次操作才能不降。如果不可行,输出-1。
输出格式
  对于每个第二种要求,输出一行,包含一个数,表示询问的答案。
  为了避免可能的空输出问题,最后输出一行,表示额外的一个询问1 1 n的答案。

输入样例

6 6
1 1 0 -1 0 1
1 1 4
0 1 -1
0 2 -1
1 1 4
1 3 5
0 2 1

输出样例

3
1
-1
3

线段树简单题(

2023/2/15 20:31
加载中...