define就是宏定义。只要你的代码中有相关的定义,他就会被启用。
格式如下:
#define 名称 全称;
一些常见定义:
//输入流:
#define ci cin>>
#define co cout<<
请看 (懒到极致) :
#include<bits/stdc++.h>
#define ci cin>>
#define co cout<<
#define s scanf(
#define p printf(
#define ds "%d",&
#define dp "%d",
#define u using
#define na namespace
#define t std
#define I int
#define m main
#define r return 0;
u na t; //using namespace std;
I n; //int n;
I m(){ //int main(){
//c n; //cin>>n;
s ds n); //scanf("%d",&n);
p dp n); //printf("%d",n);
//co n; //cout<<n;
r //return 0;
}
用下段代码提交洛谷的 P1001 :
#include<bits/stdc++.h>
#define ci cin>>
#define co cout<<
#define u using
#define na namespace
#define t std
#define I int
#define m main
#define r return 0;
#define p (a+b)
u na t; //using namespace std;
I a,b; //int a,b;
I m(){ //int main(){
ci a>>b; //cin>>a>>b;
co p; //cout<<a+b;
r //return 0;
}
附:
//for循环:
#define f(i,a,b) for(int i=(a);i<=(b);i++)
//函数:
#define S(p,q) sort(p,q)
#define A(p,q) abs(p,q)
原代码:
#include<bits/stdc++.h>
using namespace std;
int a[105],sum,m,n,asd=1000007,b[105][105];
int f(int x,int y){
if(x>m) return 0;
if(x==m) return 1;
if(y>n) return 0;
if(b[x][y]) return b[x][y];
int ant=0;
for(int i=0;i<=a[y];i++) ant=(ant+f(x+i,y+1))%asd;
b[x][y]=ant;
return ant;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
cout<<f(0,1);
return 0;
}
简化后:
#include<bits/stdc++.h>
#define ci cin>>
#define co cout<<
#define u using
#define na namespace
#define t std
#define I int
#define M main
#define r return
#define f(i,a,b) for(int i=(a);i<=(b);i++)
u na t;
I a[105],sum,m,n,asd=1000007,b[105][105];
I fa(I x,I y){
if(x>m) r 0;
if(x==m) r 1;
if(y>n) r 0;
if(b[x][y]) r b[x][y];
I ant=0;
f(i,1,a[y]) ant=(ant+fa(x+i,y+1))%asd;
b[x][y]=ant;
r ant;
}
I M(){
ci n>>m;
f(i,1,n) ci a[i];
co fa(0,1);
r 0;
}