首页 > 其他分享 >LonLife-ACM 1129 - 喵哈哈村的战斗魔法师丶坏坏い月

LonLife-ACM 1129 - 喵哈哈村的战斗魔法师丶坏坏い月

时间:2023-06-12 18:05:47浏览次数:45  
标签:opt 1129 int 1000000000 LonLife 魔法师 ai add 100000


原题链接


1129 - 喵哈哈村的战斗魔法师丶坏坏い月



Time Limit:3s Memory Limit:256MByte

Solved:85


DESCRIPTION



坏坏い月是月大叔的ID,他是一个掌握者772002种魔法的物理系战士,最擅长的技能就是搞事。今天他又要开始搞事了。

nn个数,你需要实现一下操作:

  1. l r v ,在[l,r]区间内找到第一个大于等于v的数,输出这个数的下标,如果找不到的话,请输出-1噢
  2. l r v,让[l,r]区间所有数增加v


INPUT



t(1≤t≤100)t(1≤t≤100) ,表示有t组数据对于每组数据:第一行包含两个整数 n(1≤n≤100000)n(1≤n≤100000), q(1≤q≤100000)q(1≤q≤100000),表示数的个数,以及询问的个数。第二行包含 nn个整数 ai(1≤ai≤1000000000)ai(1≤ai≤1000000000)接下来q行,每行四个整数 opt(1≤opt≤2),l,r(1≤l≤r≤n),v(1≤v≤1000000000)opt(1≤opt≤2),l,r(1≤l≤r≤n),v(1≤v≤1000000000)


OUTPUT



对于每个询问,输出一行表示答案.


SAMPLE INPUT



15 31 2 3 4 51 1 2 32 1 2 31 1 2 3


SAMPLE OUTPUT



-11



常见的数据结构中,我们选择使用分块来处理这道题。
我们将n个数,分成sqrt(n)块,每块里面的元素最多有sqrt(n)个元素。对于每一个块,我们维护Upd[i]表示这个块整个增加了多少,Max[i]表示这个块内的最大值是多少。
对于查询和更新,如果完全囊括了块的话,我们就只对Upd[i]和Max[i]进行更新,否则的话,我们就暴力更新这个块的元素即可。



#include <bits/stdc++.h>
#define maxn 100005
using namespace std;
typedef long long ll;

ll d[maxn], add[1005], maxs[1005];
int m;
int get(int k) {
	if(k <= m * m)
		return k % m ? k / m + 1 : k / m;
	return m;
}
void update(int l, int r, ll p, int h) {
	for(int i = l; i <= r; i++) {
		d[i] += p;
		maxs[h] = max(maxs[h], d[i]+add[h]);
	}
}
int find(int l, int r, ll v, int h) {
	for(int i = l; i <= r; i++) {
		if(d[i] + add[h] >= v)
		 return i;
	}
	return -1;
}
int main() {
//	freopen("in.txt", "r", stdin);
	int t;
	scanf("%d", &t);
	while(t--) {
		memset(add, 0, sizeof(add));
		memset(maxs, 0, sizeof(maxs));
		int q, n;
		scanf("%d%d", &n, &q); 
		for(int i = 1; i <= n; i++)
		 scanf("%lld", d+i);
		m = sqrt(n);
		for(int i = 1; i <= m; i++) {
			for(int j = (i-1)*m+1; j <= i*m; j++) {
				maxs[i] = max(maxs[i], d[j]);
			}
		}
		if(m * m < n) {
			for(int i = m * m + 1; i <= n; i++) {
				maxs[m] = max(maxs[m], d[i]);
			}
		}
		while(q--) {
			int t, l, r;
			ll v;
			scanf("%d%d%d%lld", &t, &l, &r, &v);
			int f1 = get(l);
			int f2 = get(r);
			if(t == 2) {
				if(f1 == f2) {
					update(l, r, v, f1);
				}
				else {
					update(l, f1*m, v, f1);
					update((f2-1)*m+1, r, v, f2);
					for(int i = f1+1; i < f2; i++) {
						add[i] += v;
						maxs[i] += v;
					}
				}
			}
			else {
				if(f1 == f2) {
					int k = find(l, r, v, f1);
					printf("%d\n", k);
				}
				else {
					int k = find(l, f1*m, v, f1);
					if(k != -1){
					 printf("%d\n", k);
					 continue;
					}
					int sign = 0;
					for(int i = f1+1; i < f2; i++) {
						if(maxs[i] >= v) {
							sign = 1;
							printf("%d\n", find((i-1)*m+1, i*m, v, i));
							break;
						}
					}
					if(sign == 0) {
						printf("%d\n", find((f2-1)*m+1, r, v, f2));
					}
				}
			}
		}
	}
	return 0;
}




标签:opt,1129,int,1000000000,LonLife,魔法师,ai,add,100000
From: https://blog.51cto.com/u_16158872/6464560

相关文章

  • 【已解决】MySQL连接错误 ERROR 1129 (00000): Host ” is blocked because of many c
     问题连接MySQL 报错 ERROR1129(00000):Host”isblockedbecauseofmanyconnectionerrors原因同一个IP在短时间内产生太多终端的数据库连接(超过mysql数据库max_connection_errors设置),导致被阻塞。在系统变量:max_connect_errors设置了允许中断的次数,超过了这个次数(或者......
  • 《花雕学AI》语言+想象+人工智能=图像魔法:微软 Bing 图像魔法师的功能、价值和评测
    你有没有想过,如果你能够用语言来创造图像,那该有多么神奇和有趣?你有没有想过,如果你能够看到你想象中的图像,那该有多么震撼和美妙?现在,这一切都可以实现了,因为微软Bing图像魔法师来了!微软Bing图像魔法师是一款能够根据用户的描述生成图像的人工智能产品,它可以让你的语言变成视觉,......
  • 自动操作魔法师
    产品下载(won-soft.   ......
  • 应用连MySQL 报错ERROR 1129 Host is blocked because of many connection errors
    开发反馈应用连MySQL报错 createconnectionSQLException,url:连接串,errorCode1129。搜索1129报错,报错内容为:Hostisblockedbecauseofmanyconnectionerrors一、报错原因同一个ip在短时间内产生太多中断的数据库连接(超过mysql数据库max_connection_errors设置),导......
  • 「解题报告」CF1129D Isolation
    水题,但是调了好久qwq显然是DP,出现次数显然分块,那就数据结构优化DP呗。我们可以维护出当前点到每个点这段区间内有多少个出现次数为\(1\)的数,这个右端点每拓展一位修改的左端点一定是连续的区间。分块维护这个东西,如果是散块暴力重构暴力加,如果是整块那给整块打个加标记。......
  • UVa 11129 An antiarithmetic permutation (构造题&想法题&分治)
    11129-AnantiarithmeticpermutationTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=2070Apermutationof n+1 isabijectivefunctionoftheinitial n+1......
  • 1129.shortest-path-with-alternating-colors 颜色交替的最短路径
    问题描述1129.颜色交替的最短路径解题思路首先,将本题的图结构以边表的形式表现出来,然后采取广度优先搜索的方式寻找最短路径,一般来说广度优先搜索能够保证找到的是最短......
  • redis部署手册_20221129
    1.软件版本及下载Keepalived:https://www.keepalived.org/download.htmlRedis下载地址:https://redis.io/download/本次安装版本:Redis:7.0.5Keepalived:2.2.72.主......
  • 连接mysql报错 errorCode 1129, state HY000, Host ‘xxx‘ is blocked because of ma
    https://copyfuture.com/blogs-details/202206101947537199错误原因:mysql设定了单个客户端最大连接失败次数,超过后便无法再连接成功.可命令行查看:最大失败数为100.......
  • 云计算CloudSim20221129
    贪心调度策略原本的想法是先计算time矩阵即每个任务在每个虚拟机下运行所需的时间首先维护每个虚拟机执行已经绑定的任务所需要的总时间然后我们按任务编号的顺序循环......