套题T3
秋实大哥与线段树
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
“学习本无底,前进莫徬徨。” 秋实大哥对一旁玩手机的学弟说道。
秋实大哥是一个爱学习的人,今天他刚刚学习了线段树这个数据结构。
为了检验自己的掌握程度,秋实大哥给自己出了一个题,同时邀请大家一起来作。
秋实大哥的题目要求你维护一个序列,支持两种操作:一种是修改某一个元素的值;一种是询问一段区间的和。
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 |
3 |
Source
#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
描述
一元 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
#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 ;
}
背景
佳佳的魔法照片(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;
#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 孪生蜘蛛
在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道。
根据防护中心的消息,敌方已经有一只特种飞蛾避过第二层防卫,直逼内城南端通道入口。但优秀的蜘蛛已经在每个通道内埋下了坚固的大网,无论飞蛾进入哪个通道,他只有死路一条!(因为他是无法挣脱超级蛛网的)
现在,001和002分别驻扎在某两个通道内。各通道通过内线相通,通过每条内线需要一定的时间。当特种飞蛾被困某处,001或002会迅速赶来把它结果掉(当然是耗时最少的那个)。
001跟002都想尽早的完成任务,他们希望选择在最坏情况下能尽早完成任务的方案。
第一行为一个整数N (N<=100) 表示通道数目。
接下来若干行每行三个正整数a,b,t 表示通道a,b有内线相连,通过的时间为t。(t<=100)
(输入保证每个通道都直接/间接连通)
两个不同的整数x1,x2,分别为001,002驻扎的地点。(如果有多解,请输出x1最小的方案,x1相同则输出x2最小的方案)
3
1 2 5
2 3 10
3 1 3
1 2
套题T3的更多相关文章
- 【套题】qbxt国庆刷题班D1
Day1 事实上D1的题目还是比较简单的= =然而D1T2爆炸了就十分尴尬--错失一波键盘 看题 T1 传送门 Description 现在你手里有一个计算器,上面显示了一个数\(S\),这个计算器十 ...
- 第46套题【STL】【贪心】【递推】【BFS 图】
已经有四套题没有写博客了.今天改的比较快,就有时间写.今天这套题是用的图片的形式,传上来不好看,就自己描述吧. 第一题:单词分类 题目大意:有n个单词(n<=10000),如果两个单词中每个字母 ...
- Educational Codeforces Round 15 套题
这套题最后一题不会,然后先放一下,最后一题应该是大数据结构题 A:求连续最长严格递增的的串,O(n)简单dp #include <cstdio> #include <cstdlib& ...
- Moscow Pre-Finals Workshop 2016. Japanese School OI Team Selection. 套题详细解题报告
写在前面 谨以此篇题解致敬出题人! 真的期盼国内也能多出现一些这样质量的比赛啊.9道题中,没有一道凑数的题目,更没有码农题,任何一题拿出来都是为数不多的好题.可以说是这一年打过的题目质量最棒的五场比赛 ...
- 【套题】qbxt国庆刷题班D2
D2 今天的题感觉还是好妙的 T1 传送门 Description 现在有一张\(n\)个节点\(m\)条边的无向连通图\(G=(V,E)\),满足这张图中不存在长度大于等于3的环且图中没有重边和自环 ...
- Tarjan & LCA 套题题目题解
刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...
- 套题 codeforces 361
A题((Mike and Cellphone) 看起来好像需要模拟数字键位的运动,可是,只要判断出那些必然YES的数字组合不就好了么 #include <cstdio> #include ...
- 套题 codeforces 360
A题:Opponents 直接模拟 #include <bits/stdc++.h> using namespace std; ]; int main() { int n,k; while ...
- 套题 codeforces 359
A题:Free Ice Cream 注意要使用LL,避免爆int #include <bits/stdc++.h> #define scan(x,y) scanf("%d%d&q ...
随机推荐
- 使用awstats分析iis站点的日志
环境:win7 + iis7 + perl(ActivePerl-5.20.1.2000) + awstats 7.3 一.找到iis日志所在目录 建议全部都打勾 二.安装perl AWStats是p ...
- Noesis.Javascript.dll 引用时报错“找不到指定的模块”
Could not load file or assembly 'Noesis.Javascript.dll' or one of its dependencies. 找不到指定的模块. 通过反编译发 ...
- linux服务器报No space left on device错误的解决过程记录
起因 今天在本地提交了点代码,但到服务器上git pull的时候提示No space left on device,第一反应是猜想可能硬盘满了(很有可能是log导致的),不过想想又觉得不太可能,这台服 ...
- Linux下iptables拦截Nginx的问题
环境:CentOS 6.4 X64,Nginx 1.5.3 问题:配置好Nginx后,加入了“iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT” ...
- 强大的网络通信框架(不实现缓存)--第三方开源--AsyncHttpClient
AsyncHttpClient是一款比较流行的Android异步网路加载库,在github上的网址是:https://github.com/loopj/android-async-http但是Asyn ...
- div+css遮罩层
曾被问到这个问题,不知所措,后来在网上找到了.大神文章:http://www.cnblogs.com/aspx-net/archive/2011/03/11/1981071.html 我想实现的效果没 ...
- jquery 在ie10中post数据,最终数据丢失的BUG修复
最近在做项目的时候,发现ie10或者360之类套壳的浏览器(ie10) 在jquery调用post数据的时候,真实的请求并没有上传数据,原因不表,请见 http://stackoverflow.com ...
- LAMP开发之环境搭建(2014.12.7在ubuntu下)
Ubuntu下搭建LAMP环境 前言:学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我搭建的是LAMP环境,即Linux.Apache ...
- 使用本地光盘安装Microsoft .NET Framework 3.5 for Win8.1/WinServer2012R2
.NET Framework 3.5 作为的SQL Server 2012的先决条件,假如使用图形化方式需要使用internet,对于服务器部署时缓慢的一点(需要下载后安装) 以下提供一个使用使用安装 ...
- 实现iOS长时间后台的两种方法:Audiosession和VOIP(转)
分类: Iphone2013-01-24 14:03 986人阅读 评论(0) 收藏 举报 我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App ...