模板!!
语法
万能头
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define repeat(i,a,b) for(int i=(a),_=(b);i<=_;i++) 4 #define repeat_back(i,a,b) for(int i=(b),_=(a);i>=_;i--) 5 #define mst(a,x) memset(a,x,sizeof(a)) 6 #define fi first 7 #define se second 8 #define endl "\n" 9 const int N=200010; 10 typedef long long ll; 11 const int inf=~0u>>2; 12 const ll INF=~0ull>>2; 13 ll read(){ll x; if(scanf("%lld",&x)==-1)exit(0); return x;} 14 typedef double lf; 15 const lf pi=acos(-1.0); 16 lf readf(){lf x; if(scanf("%lf",&x)==-1)exit(0); return x;} 17 typedef pair<ll,ll> pii; 18 template<typename A,typename B>void operator<<(A &a,B b){a.push_back(b);} 19 const ll mod=(1?1000000007:998244353); 20 ll mul(ll a,ll b,ll m=mod){return a*b%m;} 21 ll qpow(ll a,ll b,ll m=mod){ll ans=1; for(;b;a=mul(a,a,m),b>>=1)if(b&1)ans=mul(ans,a,m); return ans;} 22 void Solve(){ 23 24 } 25 int main() 26 { 27 int T=1; T=read(); 28 while(T--)Solve(); 29 30 return 0; 31 32 }
如果没有万能头
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 #include<cstdlib> 6 #include<ctime> 7 #include<cctype> 8 #include<iostream> 9 #include<algorithm> 10 #include<vector> 11 #include<list> 12 #include<queue> 13 #include<string> 14 #include<set> 15 #include<map> 16 #include<unordered_set> 17 #include<unordered_map>
JAVA
1 import java.util.*; 2 import java.math.BigInteger; 3 import java.math.BigDecimal; 4 public class Main{ 5 static Scanner sc; 6 public static void main(String[] args){ 7 sc=new Scanner(System.in); 8 } 9 }
数据类型
1 int //4字节有符号 2 long //8字节有符号 3 double,boolean,char,String
数组
1 int[] arr=new int[100]; //数组 2 int[][] arr=new int[10][10]; //二维数组 3 Array.sort(arr,l,r); //对arr[l..(r-1)]排序(import java.util.Arrays;)
输出
1 System.out.print(x); 2 System.out.println(); 3 System.out.println(x); 4 System.out.printf("%.2f\n",d); //格式化
输入
1 import java.util.Scanner; 2 Scanner sc=new Scanner(System.in); //初始化 3 String s=sc.nextline(); //读一行字符串 4 int n=sc.nextInt(); //读整数 5 double d=sc.nextDouble(); //读实数 6 sc.hasNext() //是否读完
String
1 s1.equals(s2) //返回是否相等 2 s1.compareTo(s2) //s1>s2返回1,s1<s2返回-1,s1==s2返回0 3 s1.contains(s2) //返回是否包含子串s2 4 s1.indexOf(s2,begin=0) //返回子串位置 5 s1.substring(2,4) //返回子串,首末坐标[2,4) 6 s1.charAt(3) //返回第4个字符,就像c++的s1[3] 7 s1.length() //返回长度 8 s1+s2 //返回连接结果 9 String.format("%d",n) //返回格式化结果
java大数
1 import java.math.BigInteger; 2 BigInteger n=new BigInteger("0"); 3 BigInteger[] arr=new BigInteger[10]; 4 n1.intValue() //转换为int 5 n1.longValue() //转换 6 n1.doubleValue() //转换 7 n1.add(n2) //加法 8 n1.subtract(n2) //减法 9 n1.multiply(n2) //乘法 10 n1.divide(n2) //除法 11 n1.mod(n2) //取模 12 BigInteger.valueOf(I) //int转换为BigInteger 13 n1.compareTo(n2) //n1>n2返回1,n1<n2返回-1,n1==n2返回0 14 n1.abs() 15 n1.pow(I) 16 n1.toString(I) //返回I进制字符串 17 //运算时n2一定要转换成BigInteger
一些工具
离散化
相同元素只有一个
1 //n 原数组大小 num 原数组中的元素 lsh 离散化的数组 cnt 离散化后的数组大小 2 int lsh[MAXN] , cnt , num[MAXN] , n; 3 for(int i=1; i<=n; i++) { 4 scanf("%d",&num[i]); 5 lsh[i] = num[i]; 6 } 7 sort(lsh+1 , lsh+n+1); 8 cnt = unique(lsh+1 , lsh+n+1) - lsh - 1; 9 for(int i=1; i<=n; i++) 10 num[i] = lower_bound(lsh+1 , lsh+cnt+1 , num[i]) - lsh;
相同元素分开计数
1 struct Node { 2 int data , id; 3 bool operator < (const Node &a) const { 4 return data < a.data; 5 } 6 }; 7 Node num[MAXN]; 8 int rank[MAXN] , n; 9 for(int i=1; i<=n; i++) { 10 scanf("%d",&num[i].data); 11 num[i].id = i; 12 } 13 sort(num+1 , num+n+1); 14 for(int i=1; i<=n; i++) 15 rank[num[i].id] = i;
No matter how you feel, get up , dress up , show up ,and never give up.