模板!!

语法

万能头 

 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 }
View Code

如果没有万能头

 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>
View Code

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 }
View Code

数据类型

1 int //4字节有符号
2 long //8字节有符号
3 double,boolean,char,String
View Code

数组

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;)
View Code

输出

1 System.out.print(x);
2 System.out.println();
3 System.out.println(x);
4 System.out.printf("%.2f\n",d); //格式化
View Code

输入

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() //是否读完
View Code

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) //返回格式化结果
View Code

 

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
View Code

一些工具

离散化

相同元素只有一个

 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;
View Code

相同元素分开计数

 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;
View Code

 

posted @ 2020-08-17 16:17  kaike  阅读(86)  评论(0编辑  收藏  举报