
判断闰年
static boolean is(int x) {
return x%400==0 || (x%4==0 && x%100!=0);
}
筛素数O(n^1/2)
static boolean is(int n) {
if(n==1)
return false;
for(int i=2;i<=Math.sqrt(n);i++)
if(n%i==0)
return false;
return true;
}
倍筛法_素数O(nlogn)
public class 倍筛模板 {
public static void main(String[] args) {
boolean[] is = new boolean[1000005];
is[1] = true;
for(int i=2;i<1000005;i++)
if(!is[2])
for(int j=2*i;j<1000005;j+=i)
is[j] = true;
System.out.println(is[2004]);
}
}
01背包(其中的物品只能用一次)
public class _01背包 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in)
int m = in.nextInt()
int n = in.nextInt()
int[] dp = new int[m+5]
for(int i=1
int w = in.nextInt()
int v = in.nextInt()
for(int j=m
dp[j] = Math.max(dp[j], dp[j-w]+v)
}
System.out.println(dp[m])
}
}
完全背包
import java.util.Scanner
public class _完全背包 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in)
int m = in.nextInt()
int n = in.nextInt()
int[] dp = new int[m+5]
for(int i=1
int w = in.nextInt()
int v = in.nextInt()
for(int j=w
dp[j] = Math.max(dp[j], dp[j-w]+v)
}
System.out.println(dp[m])
}
}
最大公约数gcd
public static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
最小公倍数lcm
public static int lcm(int a, int b) {
int gcd = gcd(a, b);
return (a * b) / gcd;
}
public static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
前缀和模板
import java.util.Scanner
public class 前缀和模板 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in)
int n = in.nextInt()
int[] sum = new int[n+1]
for(int i=1
sum[i] = sum[i-1] + in.nextInt()
}
}
并查集模板
static int N=10005;
static int n,m,cnt=0;
static int[] f = new int[N];
static int init(int x){
for(int i=1;i<=n;i++){
f[i]=i;
}
}
static int find(int x) {
if(f[x]==x)
return x;
return f[x] = find(f[x]);
}
static void union(int x,int y) {
int a = find(x);
int b = find(y);
if(a!=b) {
f[a] = b;
}
}
进制问题
static int f(int n,int k) {//调用API转成k进制,缺点题目有上界为8
int ans=0
String s = Integer.toString(n, k)
System.out.println(s)
for(int i=0
ans+=s.charAt(i)-'0'
return ans
}
二分答案_模板
static void f(int[] a) {
int n = a.length
int l=0,r=n-1,ans=0
while(l<=r)
{
int mid = l + (r-l)/2
if(ok(a[mid])) {
r = mid-1
ans = mid
}else
l = mid+1
}
System.out.println(ans)
}
static boolean ok(int x) {
return false
}
二叉树
public class TreeNode{
int val
TreeNode left
TreeNode right
TreeNode(int x){
val=x
}
}
public int f(TreeNode root){
if(root==null)return 0
int l=f(root.left)
int r=f(root.right)
if()
return
}
StringBuilder、StringBuffer基础用法
StringBuilder sb=new StringBuilder();
sb.append();
sb.reverse();
char c=sb.charAt(1);
int index = sb.indexOf("ce");
Calendar日期类
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int year = calendar.get(Calendar.YEAR);
int day = calendar.get(Calendar.DATE);
calendar.set(Calendar.xxx, 123);
calendar.add(Calendar.DATE, 1);
BigInteger大数
BigInteger a = BigInteger.valueOf(123456789)
BigInteger sum = BigInteger.ZERO
sum=sum.add(temp.pow(8))
sort排序
public class Main {
public static void main(String[] args) {
int []array1={2,3,4,5};
Arrays.sort(array1);
System.out.println("a");
}
}