秋实大哥与线段树

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit Status

“学习本无底,前进莫徬徨。” 秋实大哥对一旁玩手机的学弟说道。

秋实大哥是一个爱学习的人,今天他刚刚学习了线段树这个数据结构。

为了检验自己的掌握程度,秋实大哥给自己出了一个题,同时邀请大家一起来作。

秋实大哥的题目要求你维护一个序列,支持两种操作:一种是修改某一个元素的值;一种是询问一段区间的和。

Input

第一行包含一个整数n,表示序列的长度。

接下来一行包含n个整数ai,表示序列初始的元素。

接下来一行包含一个整数m,表示操作数。

接下来m行,每行是以下两种操作之一:

1 x v : 表示将第x个元素的值改为v
2 l r : 表示询问[l,r]这个区间的元素和

1≤n,m,v,ai≤1000001≤n,m,v,ai≤100000,1≤l≤r≤n1≤l≤r≤n。

Output

对于每一个22 ll rr操作,输出一个整数占一行,表示对应的答案。

Sample input and output

Sample Input Sample Output
3
1 2 3
3
2 1 2
1 1 5
2 1 2
3
7

Source

2015 UESTC Training for Data Structures

 
 答案要用longlong存
//线段树
 
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int m,n;
int a[]; struct data
{
long long sum;
}node[]; void build(int pos,int l,int r)
{
if(l==r)
{
node[pos].sum=a[l];
return ;
}
int mid=l+r>>;
int lson=pos*,rson=lson+;
build(lson,l,mid);
build(rson,mid+,r);
node[pos].sum=node[lson].sum+node[rson].sum;
}
long long int query(int pos,int l,int r,int ql,int qr)
{
if(l==ql&&r==qr)return node[pos].sum;
int mid=l+r>>;
int lson=pos*,rson=lson+;
if(qr<=mid)return query(lson,l,mid,ql,qr);
else if(ql>mid)return query(rson,mid+,r,ql,qr);
else return query(lson,l,mid,ql,mid)+query(rson,mid+,r,mid+,qr);
}
void modify(int pos,int l,int r,int m,int v)
{
if(l==r)
{
node[pos].sum=v;
return ;
}
int mid=l+r>>;
int lson=pos*,rson=lson+;
if(m<=mid)modify(lson,l,mid,m,v);
else modify(rson,mid+,r,m,v);
node[pos].sum=node[lson].sum+node[rson].sum;
}
int main()
{
int caozuo,x,v;
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&a[i]);
build(,,n);
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&caozuo,&x,&v);
if(caozuo==)
{
modify(,,n,x,v);
}
else
{
printf("%lld",query(,,n,x,v));
puts("");
}
}
return ;
}

QAQ

 http://acm.uestc.edu.cn/#/status/list?problemId=1073
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

P1812多项式输出

 
 

描述

一元 n 次多项式可用如下的表达式表示:

其中,aixi 称为i次项,ai称为i次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:

1. 多项式中自变量为x,从左到右按照次数递减顺序给出多项式。 
2. 多项式中只包含系数不为0 的项。

3. 如果多项式n 次项系数为正,则多项式开头不出现“+”号,如果多项式n 次项系数为负,则多项式以“-”号开头。

4. 对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于0 次的项,其系数的绝对值为1,则无需输出1)。如果x 的指数大于1,则接下来紧跟的指数部分的形式为“x^b”,其中b 为x 的指数;如果x 的指数为1,则接下来紧跟的指数部分形式为“x”; 如果x 的指数为0,则仅需输出系数即可。

5. 多项式中,多项式的开头、结尾不含多余的空格。

格式

输入格式

共有2 行。 
第一行 1 个整数,n,表示一元多项式的次数(1 ≤ n ≤ 100)。

第二行有 n+1 个整数,其中第i 个整数表示第n-i+1 次项的系数,每两个整数之间用空格隔开。
多项式各次项系数的绝对值均不超过100。

输出格式

共1 行,按题目所述格式输出多项式。

样例1

样例输入1

 
5
100 -1 1 -3 0 10

样例输出1

 
100x^5-x^4+x^3-3x^2+10

 
 https://vijos.org/p/1812
 
 

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std; int n,a[];
int main()
{
scanf("%d",&n);
for(int i=n;i>=;--i)scanf("%d",&a[i]);
for(int i=n;i>=;--i)
{
if(a[i]==)
{
if(i==n)printf("x^%d",i);
else printf("+x^%d",i);
}
if(a[i]==-)printf("-x^%d",i);
if(a[i]<-)printf("%dx^%d",a[i],i);
if(a[i]>)
{
if(i==n)printf("%dx^%d",a[i],i);
else printf("+%dx^%d",a[i],i);
}
}
if(a[]==)printf("+x");
if(a[]<)printf("%dx",a[]);
if(a[]>)printf("+%dx",a[]); if(a[]>)printf("+%d",a[]);
if(a[]<)printf("%d",a[]);
puts("");
return ;
}

QAQ心疼蠢哭的自己

纯模拟QAQ

注意最后一项和倒二项还有第一项的判断 其他都很简单

最后一项直接输出 不带x的

倒二项没有^1

第一项如果是正的不能直接输出‘+’

又重做了一遍
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000005
using namespace std;
int n;
int a[];
int main()
{
cin>>n;
int time=n+;
for(int i=n;i>=;--i)
{
scanf("%d",&a[i]);
}
for(int i=n;i>=;--i)
{
if(i==n)
{
if(a[i]==)printf("x^%d",i);
if(a[i]==-)printf("-x^%d",i);
if(a[i]!=&&a[i]!=&&a[i]!=-) printf("%dx^%d",a[i],i);
}
else if(i>&&i<n)
{
if(a[i]==)printf("+x^%d",i);
else if(a[i]==-)printf("-x^%d",i);
else if(a[i]>) printf("+%dx^%d",a[i],i);
else if(a[i]<)printf("%dx^%d",a[i],i);
else continue;
}
else
{
if(a[i]==)printf("+x",i);
else if(a[i]==-)printf("-x",i);
else if(a[i]>) printf("+%dx",a[i]);
else if(a[i]<)printf("%dx",a[i]);
else continue;
}
}
if(a[]>)printf("+%d",a[]);
if(a[]<)printf("%d",a[]);
return ;
}
 
 
 
 
 
 
 
 
 
 
 

P1282佳佳的魔法照片
 

背景

佳佳的魔法照片(Magic Photo):如果你看过《哈利·波特》,你就会知道魔法世界里的照片是很神奇的。也许是因为小魔法师佳佳长的太帅,很多人都找他要那种神奇的魔法照片,而且还都要佳佳和他的MM的合照。那些照片可是非常珍贵的,他到底应该把照片给谁呢?

描述

一共有n个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人。佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i]。然后将初始权值从大到小进行排序,每人就有了一个序号D[i](取值同样是1--n)。按照这个序号对10取模的值将这些人分为10类。也就是说定义每个人的类别序号C[i]的值为(D[i]-1) mod 10 +1,显然类别序号的取值为1--10。第i类的人将会额外得到E[i]的权值。你需要做的就是求出加上额外权值以后,最终的权值最大的k个人,并输出他们的编号。在排序中,如果两人的W[i]相同,编号小的优先。

格式

输入格式

第一行输出用空格隔开的两个整数,分别是n和k。

第二行给出了10个正整数,分别是E[1]到E[10]。

第三行给出了n个正整数,第i个数表示编号为i的人的权值W[i]。

输出格式

只需输出一行用空格隔开的k个整数,分别表示最终的W[i]从高到低的人的编号。

样例1

样例输入1

 
10 10
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20

样例输出1

 
10 9 8 7 6 5 4 3 2 1

限制

1秒

提示

对于50%的数据,n<=200;


 
 https://vijos.org/p/1282
 
 先模拟 然后用结构体排序即可
//不知道能不能用的stable_sort不知道资不资磁
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define maxn 50005
using namespace std; struct data
{
int w,id;
}node[maxn];
bool cmp(data a,data b)
{
if(a.w==b.w)return a.id<b.id;
else return a.w>b.w;
}
int n,k;
int e[];
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=;++i)scanf("%d",&e[i]);
for(int i=;i<=n;++i)
{
scanf("%d",&node[i].w);
node[i].id=i;
}
sort(node+,node++n,cmp);
for(int i=;i<=n;++i)
{
node[i].w+=e[(i-)%+];
}
sort(node+,node++n,cmp);
for(int i=;i<=k;i++)printf("%d ",node[i].id);
puts("");
return ;
}

++rp

 
 
 

1020 孪生蜘蛛

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
题目描述 Description

在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道。

根据防护中心的消息,敌方已经有一只特种飞蛾避过第二层防卫,直逼内城南端通道入口。但优秀的蜘蛛已经在每个通道内埋下了坚固的大网,无论飞蛾进入哪个通道,他只有死路一条!(因为他是无法挣脱超级蛛网的)

现在,001和002分别驻扎在某两个通道内。各通道通过内线相通,通过每条内线需要一定的时间。当特种飞蛾被困某处,001或002会迅速赶来把它结果掉(当然是耗时最少的那个)。

001跟002都想尽早的完成任务,他们希望选择在最坏情况下能尽早完成任务的方案。

 

输入描述 Input Description

第一行为一个整数N (N<=100) 表示通道数目。

接下来若干行每行三个正整数a,b,t 表示通道a,b有内线相连,通过的时间为t。(t<=100)

(输入保证每个通道都直接/间接连通)

输出描述 Output Description

两个不同的整数x1,x2,分别为001,002驻扎的地点。(如果有多解,请输出x1最小的方案,x1相同则输出x2最小的方案)

样例输入 Sample Input

3

1 2 5

2 3 10

3 1 3

样例输出 Sample Output

1 2

数据范围及提示 Data Size & Hint
 

分类标签 Tags Floyd 枚举 图论


 
 http://codevs.cn/problem/1020/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

套题T3的更多相关文章

  1. 【套题】qbxt国庆刷题班D1

    Day1 事实上D1的题目还是比较简单的= =然而D1T2爆炸了就十分尴尬--错失一波键盘 看题 T1 传送门 Description 现在你手里有一个计算器,上面显示了一个数\(S\),这个计算器十 ...

  2. 第46套题【STL】【贪心】【递推】【BFS 图】

    已经有四套题没有写博客了.今天改的比较快,就有时间写.今天这套题是用的图片的形式,传上来不好看,就自己描述吧. 第一题:单词分类 题目大意:有n个单词(n<=10000),如果两个单词中每个字母 ...

  3. Educational Codeforces Round 15 套题

    这套题最后一题不会,然后先放一下,最后一题应该是大数据结构题 A:求连续最长严格递增的的串,O(n)简单dp #include <cstdio> #include <cstdlib& ...

  4. Moscow Pre-Finals Workshop 2016. Japanese School OI Team Selection. 套题详细解题报告

    写在前面 谨以此篇题解致敬出题人! 真的期盼国内也能多出现一些这样质量的比赛啊.9道题中,没有一道凑数的题目,更没有码农题,任何一题拿出来都是为数不多的好题.可以说是这一年打过的题目质量最棒的五场比赛 ...

  5. 【套题】qbxt国庆刷题班D2

    D2 今天的题感觉还是好妙的 T1 传送门 Description 现在有一张\(n\)个节点\(m\)条边的无向连通图\(G=(V,E)\),满足这张图中不存在长度大于等于3的环且图中没有重边和自环 ...

  6. Tarjan & LCA 套题题目题解

    刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...

  7. 套题 codeforces 361

    A题((Mike and Cellphone) 看起来好像需要模拟数字键位的运动,可是,只要判断出那些必然YES的数字组合不就好了么 #include <cstdio> #include ...

  8. 套题 codeforces 360

    A题:Opponents 直接模拟 #include <bits/stdc++.h> using namespace std; ]; int main() { int n,k; while ...

  9. 套题 codeforces 359

    A题:Free Ice Cream 注意要使用LL,避免爆int #include <bits/stdc++.h> #define scan(x,y) scanf("%d%d&q ...

随机推荐

  1. 使用awstats分析iis站点的日志

    环境:win7 + iis7 + perl(ActivePerl-5.20.1.2000) + awstats 7.3 一.找到iis日志所在目录 建议全部都打勾 二.安装perl AWStats是p ...

  2. Noesis.Javascript.dll 引用时报错“找不到指定的模块”

    Could not load file or assembly 'Noesis.Javascript.dll' or one of its dependencies. 找不到指定的模块. 通过反编译发 ...

  3. linux服务器报No space left on device错误的解决过程记录

    起因 今天在本地提交了点代码,但到服务器上git pull的时候提示No space left on device,第一反应是猜想可能硬盘满了(很有可能是log导致的),不过想想又觉得不太可能,这台服 ...

  4. Linux下iptables拦截Nginx的问题

    环境:CentOS 6.4 X64,Nginx 1.5.3 问题:配置好Nginx后,加入了“iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT” ...

  5. 强大的网络通信框架(不实现缓存)--第三方开源--AsyncHttpClient

    AsyncHttpClient是一款比较流行的Android异步网路加载库,在github上的网址是:https://github.com/loopj/android-async-http但是Asyn ...

  6. div+css遮罩层

    曾被问到这个问题,不知所措,后来在网上找到了.大神文章:http://www.cnblogs.com/aspx-net/archive/2011/03/11/1981071.html 我想实现的效果没 ...

  7. jquery 在ie10中post数据,最终数据丢失的BUG修复

    最近在做项目的时候,发现ie10或者360之类套壳的浏览器(ie10) 在jquery调用post数据的时候,真实的请求并没有上传数据,原因不表,请见 http://stackoverflow.com ...

  8. LAMP开发之环境搭建(2014.12.7在ubuntu下)

    Ubuntu下搭建LAMP环境 前言:学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我搭建的是LAMP环境,即Linux.Apache ...

  9. 使用本地光盘安装Microsoft .NET Framework 3.5 for Win8.1/WinServer2012R2

    .NET Framework 3.5 作为的SQL Server 2012的先决条件,假如使用图形化方式需要使用internet,对于服务器部署时缓慢的一点(需要下载后安装) 以下提供一个使用使用安装 ...

  10. 实现iOS长时间后台的两种方法:Audiosession和VOIP(转)

    分类: Iphone2013-01-24 14:03 986人阅读 评论(0) 收藏 举报 我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App ...