支持两种操作:
发现线段树容易实现区间求和,考虑区间开方操作
其实并没有什么思路
我们发现了一个很显而易见神奇的事情,如果对一个正整数进行无限多的开方且下取整操作,最后这个数一定会变成$1$
然后用计算器计算一下,发现$1$~$10^{12}$里的一个数,最多开方$6$次,就能变成$1$
所以一共最多只用修改$ 6 \times n$次,发现这是可以承受的
所以就很简单啦!维护区间最大值,如果区间内所有数都小于等于$1$,就跳过这段区间
如果大于1,就把区间细分为左儿子与右儿子,重新进行上一步,一直到叶子节点,直接修改即可
时间复杂度:$O(n log n)$(常数很小)
最后放个代码啦QwQ
//From:201929
#include<bits/stdc++.h>
#define L long long
using namespace std;
L a[500005],summ[2000005],maxx[2000005];
void build(int o,int l,int r)
{
if(l==r)
{
summ[o]=maxx[o]=a[l];
return;
}
int mid=(l+r)>>1;
build(o+o,l,mid);
build(o+o+1,mid+1,r);
summ[o]=summ[o+o]+summ[o+o+1];
maxx[o]=max(maxx[o+o],maxx[o+o+1]);
}
L x,y;
void quxiu(int o,int l,int r)
{
if(l==r)
{
summ[o]=sqrt(summ[o]);
maxx[o]=sqrt(maxx[o]);
return;
}
int mid=(l+r)>>1;
if(x<=mid && maxx[o+o]>1) quxiu(o+o,l,mid);
if(y>mid && maxx[o+o+1]>1) quxiu(o+o+1,mid+1,r);
summ[o]=summ[o+o]+summ[o+o+1];
maxx[o]=max(maxx[o+o],maxx[o+o+1]);
}
L ans;
void qucha(int o,int l,int r)
{
if(x<=l && r<=y)
{
ans+=summ[o];
return;
}
int mid=(l+r)>>1;
if(x<=mid) qucha(o+o,l,mid);
if(y>mid) qucha(o+o+1,mid+1,r);
}
int main()
{
int n,m;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
build(1,1,n);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
int k;
scanf("%d%lld%lld",&k,&x,&y);
if(x>y) swap(x,y);
if(k==0) quxiu(1,1,n);
else
{
qucha(1,1,n);
printf("%lld\n",ans);
ans=0;
}
}
return 0;
} 我在生产网站上使用Resque。当我部署时,我希望GOD停止所有worker然后重新启动它们,因为有时我们更改类的代码并重新排队失败的作业。问题是,当我执行godstopresque时,rake实际上并没有停止,工作人员仍然活着并使用旧代码,这给我带来了各种各样的问题。即使我“上帝终止”它也不会杀死worker。现在,我正在使用shell脚本来杀死工作人员,但由于我有不止一台服务器,所以在所有生产服务器上进行操作非常痛苦。这是我的上帝配置文件:rails_env=ENV['RAILS_ENV']||"production"rails_root=ENV['RAILS_ROOT']||"/
我有这个文件rails_env=ENV['RAILS_ENV']||'development'rails_root=ENV['RAILS_ROOT']||"/home/luiz/rails_dev/api"God.watchdo|w|w.name="unicorn"w.interval=30.seconds#default#unicornneedstoberunfromtherailsrootw.start="cd#{rails_root}&&unicorn_rails-cconfig/unicorn.rb-E#{rails_env}"#QUITgracefullyshutsdownw
我有一个Rails网站和一个在linodevps上运行的小型Minecraft服务器。我正在运行minecraft作为基于init.d文件的ram服务器的自定义服务。因为我使用God来监控我的Rails网站,所以我想我也会将它用于我的世界,但它似乎无法以任何方式识别该服务。条件检测不到它的存在。:process_running始终返回false,无论它是否正在运行,并且在未运行时无法启动它。更让人困惑的是:memory_usage和:cpu_usage始终为零。我的/etc/init.d/minecraft文件在这里:http://pastie.org/2760483它工作得非常好,“
这是一道简单题题目来自:https://leetcode.cn/problems/two-sum/题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。提示:22nums.length104−109−109nums[i]109−109−109target109只会存在一个有效答案进阶:你可以想出一个时间复杂度小于O(n2)O(n^2)O(n2)的算法吗?示例1:输入:nums=[2,7,11,15],targe
我使用passenger服务我的软件。它产生许多ruby进程。有时其中一颗ruby会变得肿胀,我希望它死掉。我希望用上帝来达到这个目的。我的想法是监控所有这些ruby,如果它在3个周期内消耗超过500MB的内存,上帝应该尝试优雅地杀死它。如果它还活着超过5分钟,那么上帝应该不会优雅地杀死它。在我看来,上帝总是试图再次运行该服务,因此它迫使我们提供启动命令。是否可以只使用god来杀死不良行为的进程,并让passengerspawner在必要时将它们带回来? 最佳答案 您问题的答案在于问题本身。您可以使用godgem终止ruby进程这是
我正在尝试了解如何监控travis-ci的resqueworker|与god以这样一种方式停止resquewatchviagod不会留下陈旧的工作进程。在下文中,我谈论的是工作进程,而不是fork作业子进程(即队列一直是空的)。当我像这样手动启动resqueworker时:$QUEUE=buildsrakeresque:work我会得到一个进程:$psx|grepresque7041s001S+0:05.04resque-1.13.0:Waitingforbuilds一旦我停止工作任务,这个过程就会消失。但是当我开始与上帝(exactconfigurationishere,基本上与re
我有一个god脚本,它应该监视两个stalker进程。问题是24小时后它启动了太多进程。这是神脚本。rails_root=File.expand_path("../..",__FILE__)2.timesdo|n|God.watchdo|w|w.group="app-scripts"w.name="run-#{n}"w.interval=30.secondsw.dir=File.dirname(__FILE__)w.env={"BUNDLE_GEMFILE"=>"#{rails_root}/Gemfile","RAILS_ENV"=>"production","BEANSTALK_UR
没有测评,不知道对不对,仅仅过样例而已试题A:日期统计本题总分:5分【问题描述】小蓝现在有一个长度为100的数组,数组中的每个元素的值都在0到9的范围之内。数组中的元素从左至右如下所示:5686916124919823647759503875815861830379270588570991944686338516346707827689565614010094809128502533现在他想要从这个数组中寻找一些满足以下条件的子序列: 1.子序列的长度为8; 2.这个子序列可以按照下标顺序组成一个yyyymmdd格式的日期,并且要求这个日期是2023年中的某一天的日期,例如202309
2023蓝桥C/C++B组省赛文章目录2023蓝桥C/C++B组省赛试题A:日期统计题目描述枚举参考代码试题B:01串的熵题目描述枚举|模拟参考代码试题C:冶炼金属题意描述取交集参考代码试题D:飞机降落题意描述DFS+剪枝,懒得写试题E:接龙数列题意描述DP参考代码试题F:岛屿个数题意描述dfs|连通块参考代码试题G:子串简写题意描述前缀和参考代码试题H:整数删除题意描述双向链表|最小堆参考代码试题I:景区导游题意描述带权LCA参考代码试题J:砍树题意描述树上差分参考代码试题A:日期统计题目描述【问题描述】小蓝现在有一个长度为100的数组,数组中的每个元素的值都在0到9的范围之内。数组中的元素
83.删除排序链表中的重复元素题目描述给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。输入:head=[1,1,2]输出:[1,2]解题思路:用一个指向节点类型的指针保存头结点,用另一个指向节点类型的指针对该链表进行遍历,由于是有序的,当出现不同的值就说明不会再出现跟前面的值相同的节点了,最后循环结束的条件是遍历到最后一个节点的时候,也就是该节点的next指向空的时候,停止循环,返回该保存的头结点,另外,如果传过来的头结点是空,则直接返回空。参考代码:/***Definitionforsingly-linkedlist.*structListNod