首页 > 其他分享 >逗号的祸

逗号的祸

时间:2023-05-07 09:12:30浏览次数:32  
标签:seg int ll long 逗号 a0 include

问题代码

报错:
[Error] expected unqualified-id before 'long'
[Note] in expansion of macro 'll'

#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstring>

#include <iostream>
#include <algorithm>

#include <functional> //“greater”: 未声明的标识符错误
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>

using namespace std;

#define ll long long
#define llu long long unsigned
#define mkp make_pair

const int N=1e5+10;
int n,m;
ll a[N]={0};

struct node{
	ll sum;
	ll a0;
	ll d;
} seg[4*N];

node operator+(const node &a,const node &b)
{
	node obj;
	obj.a0=0;
	obj.d=0;
	obj.sum=a.sum+b.sum;
	return obj;
}

void update(int k)
{
	seg[k]=seg[k<<1]+seg[k<<1|1];
}

void set_tag(int k,int len ,ll a0,ll d)
{
	seg[k].sum+=1ll*a0*len+1ll*len*(len-1)*d/2;
	seg[k].d+=d;
	seg[k].a0+=a0;
}

void push_down(int k,int len)//len ->个数  
{
	ll a0=seg[k].a0;
	ll d=seg[k].d;
	ll len0=len+1>>1;
	set_tag(k<<1,len+1>>1,a0,d);
	set_tag(k<<1|1,len>>1,a0+d*(len0),d);
	seg[k].a0=0;
	seg[k].d=0;
}

void init(int k,int l,int r)
{
	if(l==r){
		seg[k].sum=a[l];
		seg[k].a0=0;
		seg[k].d=0;
	}else{
		int mid=l+r>>1;
		init(k<<1,l,mid);
		init(k<<1|1,mid+1,r);
		update(k);
	}
}

void modify(int k,int l,int r,int ql,int qr,ll a0,ll d)
{
//	printf("k = %d l = %d r = %d a0 = %d d = %d\n",k,l,r,a0,d);
	if(l==ql && qr==r){
		set_tag(k,r-l+1,a0,d);
	}else{
		if(seg[k].a0 || seg[k].d)
			push_down(k,r-l+1);
		int mid=l+r>>1;
		int len0=(mid-ql+1);
		if(qr<=mid)modify(k<<1,l,mid,ql,qr,a0,d);
		else if(ql>mid)modify(k<<1|1,mid+1,r,ql,qr,a0,d);
		else modify(k<<1,l,mid,ql,mid,a0,d),modify(k<<1|1,mid+1,r,mid+1,qr,a0+len0*d,d);
		update(k);
	}
}

node check(int k,int l,int r,int pos)
{
//	printf("k = %d l = %d r = %d a0 = %d d = %d\n",k,l,r,a0,d);
	if(l==pos && r==pos){
		return seg[k];
	}else{
		if(seg[k].a0 || seg[k].d)
			push_down(k,r-l+1);
		int mid=l+r>>1;
		if(pos<=mid)return check(k<<1,l,mid,pos);
		else if(pos>mid)return check(k<<1|1,mid+1,r,pos);
	}
}


int main(int argc, char** argv)
{
	scanf("%d%d",&n,&m);
	
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	
	init(1,1,n);
		
	while(m--){
		int op;
		scanf("%d",&op);
		
		int l,r,
		ll K,D;
		int p;
		switch(op){
			case 1:
				
				scanf("%d%d%lld%lld",&l,&r,&K,&D);
				modify(1,1,n,l,r,K,D);
				break;
			case 2:
				
				scanf("%d",&p);
				printf("%lld\n",check(1,1,n,p).sum);
				break;
		}
		
//		for(int k=1;k<=10;k++)
//			printf("%d:a0 = %d d = %d sum = %lld\n",k,seg[k].a0,seg[k].d,seg[k].sum) ;
		
	}
	
	return 0;
}

原因:

int l,r,//这里不能加逗号
ll K,D;//要不然ll也是一个变量,导致宏ll违法

标签:seg,int,ll,long,逗号,a0,include
From: https://www.cnblogs.com/ZZQ323/p/17378870.html

相关文章

  • 直播软件搭建,全局过滤器(时间,年月日,一千加逗号处理)
    直播软件搭建,全局过滤器(时间,年月日,一千加逗号处理)步骤一:处理数据 exportconstformatYmd=(date)=>{ lettime=newDate(date)  lety=time.getFullYear() letm=time.getMonth()+1 letd=time.getDate()  return[y,m,d].map((v)=>String(v).pa......
  • mysql中列转行,并多个字段转到一行中的一个字段上,中间用逗号分开
    mysql中列转行,并多个字段转到一行中的一个字段上,中间用逗号分开 SELECT group_concat(a.idSEPARATOR',')ASidsFROM ( SELECT * FROM tablename WHERE 1=1 ORDERBY rand() LIMIT10 )a ......
  • mysql 查询某字段中以逗号分隔的字符串的方法
    mysql查询某字段中以逗号分隔的字符串的方法文章目录mysql查询某字段中以逗号分隔的字符串的方法前言https://cdnvue.gymcity.com.cn/betterwe_1.0/userlogo/userlogopro62d8bf98afde709d37c08f7b129e96277388757530c72.png一、首先讲一个需求总结前言现在有如下场景。我们有一个......
  • 给定一个正整数字符串,使用Python正则表达式在其千分位上添加逗号
    大家好,我是皮皮。一、前言前几天在Python黄金青铜群【沐】问了一个Python正则表达式的问题,这里拿出来给大家分享下。题目:给定一个正整数字符串,如12345678、345678,使用正则表达式在其千分位上添加逗号,如12,345,678、345,678。二、实现过程这里ChatGPT给了一个答案,可以使用......
  • Java中实现String字符串用逗号隔开
    publicstaticvoidmain(String[]args)throwsException{ StringstrText="421542"; Stringinformation=""; intstart=0; intend=1; Stringdigit=""; intcount=strText.length(); for(inti=......
  • 函数参数中中括号后面跟逗号是什么意思?
    如:convertScaleAbs(src[,dst[,alpha[,beta]]])->dst函数里面有中括号和逗号,:中括号是可选参数,逗号是参数之间的分隔符[,a[,b]]:嵌套形式表示b是独立于a的可选参数,即在传入a的情况下,b可以自由地选择传入或省略。[,a,b]:扁平形式表示a与b合在一起是一组可选参......
  • Sql Server 表列内容逗号隔开转行显示
     兼容中英文逗号:,,SELECTa.id,b.ContentFROM(SELECTid,Content=CAST('<v>'+replace(Content,',','</v><v>')+'</v>'ASXML)......
  • java 逗号拼接字符串
    逗号拼接字符串可以使用String类的静态方法join()来实现这个功能,示例代码如下:```javapublicclassPhoneNumbers{publicstaticvoidmain(String[]args){StringphoneNumber1="18801083588";StringphoneNumber2="15709106355";Stri......
  • 三目运算和逗号运算
    #include<stdio.h>intmain(){//三目运算:intcount=0;scanf("%d",&count);//下面这一行翻译成人话就是count>20吗?如果count>20那么就count=co......
  • sqlserver获取逗号分隔的字段值中是否包含某一个值
    数据如图: 获取RBuilding字段值中有‘一号楼的数据’select*fromTB_BLSRunConfigwhereRBuildinglikeCONCAT('%','1号楼','%')结果: 根据时间排序取最新的一......