NYOJ123士兵杀敌(四)

2024-05-05 05:58
文章标签 杀敌 士兵 nyoj123

本文主要是介绍NYOJ123士兵杀敌(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                                                                                                                       士兵杀敌(四)
描述
  南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的事情,军师小工的任务就是在南将军询问他某个人的军功的时候,快速的报出此人的军功,请你编写一个程序来帮助小工吧。
假设起始时所有人的军功都是0.
输入
只有一组测试数据。
每一行是两个整数T和M表示共有T条指令,M个士兵。(1<=T,M<=1000000)
随后的T行,每行是一个指令。
指令分为两种:
一种形如
ADD 100 500 55表示,第100个人到第500个人请战,最终每人平均获得了55军功,每次每人获得的军功数不会超过100,不会低于-100。
第二种形如:
QUERY 300 表示南将军在询问第300个人的军功是多少。
输出
对于每次查询输出此人的军功,每个查询的输出占一行。
样例输入
4 10
ADD 1 3 10
QUERY 3
ADD 2 6 50
QUERY 3
样例输出
10
60
代码:
#include<stdio.h>
#include<string.h>
int C[1000008];
int M;
int lowbit(int n){return n&-n;
}
void add(int n,int x)
{while(n>0){C[n]+=x;n-=lowbit(n);}
}
int query(int n){int sum=0;while(n<=M){sum+=C[n];//printf("%d\n",n);n+=lowbit(n);}return sum;
}int main()
{int T;scanf("%d%d",&T,&M);char str[10];while(T--){inta,b,x;scanf("%s",str);if(!strcmp("ADD",str)){scanf("%d%d%d",&a,&b,&x);add(a-1,-x);//去掉重复的add(b,x);}else{scanf("%d",&x);printf("%d\n",query(x));}for(inti=0;i<=M;i++){printf("%d&&%d\n",i,C[i]);}}}




这篇关于NYOJ123士兵杀敌(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960938

相关文章

nyoj 288 士兵杀敌(五)

一道插线问线离线版的题  复杂度O(n); 代码如下: #include<stdio.h>#include<string.h>const int M = 1000003;const int mod=10003;int num[M];int main(){int n,c,q;scanf("%d%d%d",&n,&c,&q);while(c--){int a,b,x;scan

杭电1276士兵队列的训练问题

杭电1276士兵队列的训练问题         本来这题想用直接的模拟法去解答,但一看数据为5000,也还是可以,可是模拟是用数组的话无法直接去掉被删除的元素,用链表可以完全模拟,但是链表操作比较麻烦,想尽量避免链表操作的使用。所以本题就想到了用两个链表来回操作来进行模拟。        首先定义两个数组s1,s2。s1先存储所有士兵的编号,然后由于依次报到2的士兵都会被出列,数组下标与编号

Java自学之路---马士兵

JAVA 自学之路 一 : 学会选择 为了就业,不少同学参加各种各样的培训。 决心做软件的,大多数人选的是 java ,或是 .net ,也有一些选择了手机、嵌入式、游戏、 3G 、测试等。 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自

RMQ问题(士兵杀敌(三))

士兵杀敌(三) 时间限制: 2000 ms  |  内存限制: 65535 KB 难度: 5 描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果。 所以,南将军经常问军师小工第i号士兵到第j号士

NYISTOJ 108 士兵杀敌(一) 树状数组或线段树

士兵杀敌(一) 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。 小工是南将军手下的军师,南将军现在想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。 注意,南将军可能会问很多次问题。 输入 只有一组测试数据 第一行是两个整数N,M,其中N表

技术革新| 卓翼飞思受邀出席2024士兵智能装备与技术学术大会

6月14日,由中国兵器装备集团智元研究院/智元国家重点实验室、中国兵工学会主办的 “2024士兵智能装备与技术学术大会” 在杭州隆重召开。卓翼智能应邀出席本次大会,并发表了题为《新概念飞行器及多智能体集群仿真系统研究》的演讲报告。 本次大会以“智能、创新、协同”为主题,汇聚来自全国军地双方数百名院士、知名专家学者、企业代表等各界精英,从科技创新、应用实践、产业发展及前沿趋势等多角度,

NYOJ116 士兵杀敌(二)【树状数组】

士兵杀敌(二) 时间限制:1000 ms  |  内存限制:65535 KB  难度:5 描述  南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。 小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。 南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。 输入

NYOJ108 士兵杀敌(一)【树状数组】

士兵杀敌(一) 时间限制:1000 ms  |  内存限制:65535 KB  难度:3 描述  南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。 小工是南将军手下的军师,南将军现在想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。 注意,南将军可能会问很多次问题。 输入  只有一组测试数据 第一行是两个整数N,M,其中N表示士

hdu,1276,士兵队列训练问题

士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2673    Accepted Submission(s): 1220 Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次

NY--116 -- 士兵杀敌(二) [树状数组是也]

士兵杀敌(二)   时间限制:1000 ms  |           内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。 小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。 南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考