版权
A.Query (查询)
描述
给你一个数列{A1,A2,...An},并要求支持一系列如下的操作和查询:
1.ADD x y D:把D加到每个子序列{Ax... Ay}中。比如,执行“ADD 2 4 1”,使{1,2,3,4,5}变成{1,3,4,5,5}
2.REVERS x y:反转子序列{Ax... Ay}。例如,执行“REVERSE 2 4 ”,使{1,2,3,4,5}变成{1,4,3,2,5}
3.INSERT x P:插入P在Ax之后。例如,执行“INSERT 2 4”,使{1,2,3,4,5}变成{1,2,4,3,4,5}
4.SUM:响应序列的总和。
输入
输入包含几种情况。
对于每一种情况下,第一行包含n个(n≤100000)。
用正整数,第二行描述的序列。
然后如下M(M≤100000),操作和查询的数量。
下面M行描述的操作和查询。
上面提到的所有选项都假定有效的,并且在序列中的每个元素的取值范围是[0,1000000000]。
输出
对于每个“SUM”的查询,输出正确的答案。
样例输入
5
1 2 3 4 5
4
ADD 2 4 1
SUM
INSERT 2 4
SUM
样例输出
18
22
B.Look Here(看这里)
描述
有一个简单的几何问题。
你被赋予n行和米界从1到n和编号为1〜米。每行中的两个点(X1,Y1),(X2,Y2)和加权值w说明。和一个圆的中心(X,Y)和半径r的说明。
我们定义G(I)=合计(A * WJ),A = 1,如果第j线将相交或相切的第i个圈,否则A =0。(J从1到n)
然后,我们把K作为G(I)MOD的总和2^32,(1<= I<= M)。所以k将会在二进制系统中的32位数字,你需要交换的第一个1位, K和输出它的最后16位。
例如4252237837=(11111101011101000000000000001101),2然后我们交换的前16位和后16位,所以它成为(00000000000011011111110101110100)2 =916852。
输入
有多个测试案例。
对于每一种案例,第一行包含两个整数n和m(1<=n,m<=500),表示有n行和m个圆。
然后n行跟随描述第n行,每行包含五个整数x1,y1,x2,y2 和w, (0<=x1,y1,x2,y2<=1000, 0<=w<2^32)。接下来的m行描述的m圆,每行包含三个整数x,y,r,(0<=x,y,r<=1000),指示圆的圆心为(x,y)和半径为r。
输出
对于每一种情况下,输出如上所述的答案。
样例输入
1 1
0 0 0 1 4252237837
0 5 1
样例输出
916852
C.Code(代码)
描述
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[110000],b[110000],c[110000],d[110000];
int main() {
while(cin>>n)
{
for(int i=0;i<n;++i) cin>>a[i];
for(int i=0;i<n;++i) cin>>b[i];
for(int i=0;i<n;++i) cin>>c[i];
for(int i=0;i<n;++i) cin>>d[i];
for(int i=0;i<n;++i)
if(a[i]>b[i]) swap(a[i],b[i]);
for(int i=0;i<n;++i)
if(a[i]>b[i]) swap(c[i],d[i]);
for(int i=0;i<n;++i)
{
int ans=0;
for(int j=0;j<n;++j)
if(a[i]<=c[j]&&d[j]<=d[i]) ans++;
cout<<ans<<endl;
}
}
return 0;
}
即使你足够勇敢,我真的不建议你复制的代码,并马上提交。
输入
输入包含几种情况。
每个情况由一个整数n开始(0<n<=100000)。
然后跟随的4行代表a[],b[],c[]和d[]中,所有值都在于[1,100000]。
输出
对于每一种情况下,只是写出来如代码执行的答案。
样例输入
2
3 2
1 4
2 5
2 3
样例输出
1
2
D.String Comes From String(s)(来自String(s)的Sring)
描述
让Str是一个很长的字符串和s1,s2,...,sm收集short string(s)的。让我们说,在收集过滤STER当且仅当Str可覆盖从集合中的字符串。当然,对应于字符串的不同位置的子串可以相交甚至相互覆盖。更正式地说:|Str|通过表示str的长度,让str的符号被编号为1〜|Str|。然后为每个位置i Str中存在对指数l,r(1<= l<= i<= r<=|Str|),使得子Str[1 ... r]等于的元素s1 ,s2,...的集合平方米。现在,你被要求计算出不同的字符串长度的个数n通过过滤收集{si}。
作为回答,可能会出现非常大的,所以其输出模10007。
例如,{“cat”,“tact”}的集合可以创建2个字符串,长度6,如“catcat”或“catact”,并且没有更多。
输入
第一行包含两个整数n和m(1<= n<=1000,1<= m<=10)——定义字符串的长度和字符串与之相应的集合中string(s)的数量。
接下来的m行包含的集合字符串si,每行一个。每个si是长度不超过10集可能包含相同的字符串的非空字符串。所有的字符串只包含小写字母。
输出
输出应该包含通过过滤收集模10007字符串的一个整数,数。
样例输入
2 1
a
6 2
cat
tact
样例输出
1
2
本译文有版权,不以盈利,仅供学习研究所用。