发布于2021-05-29 22:04 阅读(1087) 评论(0) 点赞(14) 收藏(1)
问题描述
答案提交
import java.io.*;
import java.util.*;//自定义Read类中需要用到io和util这两个包,星号*(通配符)表示包中所有的类
import java.math.*;//含大数BigInteger
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static int INF = 0x3f3f3f3f;
public static void main(String[] args) {
int cnt = 0;
for(int i = 1;i <= 2020;i++)
if(("" + i).contains("2"))cnt++;
System.out.println(cnt);
}
}
问题描述
答案提交
思路
import java.io.*;
import java.util.*;//自定义Read类中需要用到io和util这两个包,星号*(通配符)表示包中所有的类
import java.math.*;//含大数BigInteger
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static int INF = 0x3f3f3f3f;
static class Node{
int x, y, dp;
Node(int x, int y, int dp){
this.x = x;
this.y = y;
this.dp = dp;
vis[x][y] = 1;//可以在构造函数里面使用标记
}
}
static int vis[][] = new int[7500][7500];
static Queue<Node>q = new LinkedList<Node>();
public static void main(String[] args) {
int cnt = 4;//初始4个黑点
q.add(new Node(0 + 2050, 0 + 2050, 0));
q.add(new Node(2020 + 2050, 11 + 2050, 0));
q.add(new Node(11 + 2050, 14 + 2050,0));
q.add(new Node(2000 + 2050, 2000 + 2050,0));
while(!q.isEmpty()) {
Node nd = q.poll();
if(nd.dp == 2020)break;
if(vis[nd.x + 1][nd.y] == 0) {
q.add(new Node(nd.x + 1, nd.y, nd.dp + 1));
cnt++;
}
if(vis[nd.x - 1][nd.y] == 0) {
q.add(new Node(nd.x - 1, nd.y, nd.dp + 1));
cnt++;
}
if(vis[nd.x][nd.y + 1] == 0) {
q.add(new Node(nd.x, nd.y + 1, nd.dp + 1));
cnt++;
}
if(vis[nd.x][nd.y - 1] == 0) {
q.add(new Node(nd.x, nd.y - 1, nd.dp + 1));
cnt++;
}
}
System.out.println(cnt);
}
}
问题描述
答案提交
思路
import java.io.*;
import java.util.*;//自定义Read类中需要用到io和util这两个包,星号*(通配符)表示包中所有的类
import java.math.*;//含大数BigInteger
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static int INF = 0x3f3f3f3f;
public static void main(String[] args) {
int p[] = new int[200];
for(int i = 2;i <= 100;i++) {
int t = i;
for(int j = 2;j <= t;j++) {
while(t % j == 0) {
p[j]++;
t /= j;
}
}
}
long ans = 1;
for(int i = 2;i <= 100;i++)
if(p[i] != 0) ans *= (p[i] + 1);
System.out.println(ans);
}
}
问题描述
答案提交
思路
import java.io.*;
import java.util.*;//自定义Read类中需要用到io和util这两个包,星号*(通配符)表示包中所有的类
import java.math.*;//含大数BigInteger
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static int INF = 0x3f3f3f3f;
static Set<String> s = new HashSet<>();
static String ss = "tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";
static void dfs(int st, String cur) {
if(s.contains(cur))return ;
s.add(cur);
for (int i = st + 1; i < ss.length(); i++) {
if ((int) ss.charAt(st) < (int) ss.charAt(i))
dfs(i, cur + ss.charAt(i));
}
return;
}
public static void main(String[] args) {
for (int i = 0; i < ss.length(); i++)
dfs(i, "" + ss.charAt(i));
System.out.println(s.size());
}
}
问题描述
答案提交
思路
答案
public class Main {
static int map[][] = new int[20][20];
static int cnt;
static void dfs(int x, int y, int num) {
if(x < 1 || y < 1 || x > 4 || y > 4)return ;
if(map[x][y] != 0)return ;
map[x][y] = num;
if(num == 16) {
cnt++;
for(int i = 1;i <= 4;i++) {
for(int j = 1;j <= 4;j++)
System.out.print(map[i][j] + " ");
System.out.println();
}
System.out.println();
map[x][y] = 0;
return ;
}
dfs(x + 1, y, num + 1);
dfs(x - 1, y, num + 1);
dfs(x, y + 1, num + 1);
dfs(x, y - 1, num + 1);
map[x][y] = 0;
}
public static void main(String[] args) {
for(int i = 1;i <= 4;i++)
for(int j = 1;j <= 4;j++)
dfs(i, j, 1);
System.out.println(cnt);
}
}
问题描述
输入格式
输出格式
样例输入
样例输出
样例说明
评测用例规模与约定
思路
import java.io.*;
import java.util.*;//自定义Read类中需要用到io和util这两个包,星号*(通配符)表示包中所有的类
import java.math.*;//含大数BigInteger
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static String ss1[] = new String[1005];
static String ss2[] = new String[1005];
static int dp[][] = new int[1005][1005];
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String s1 = cin.next();
String s2 = cin.next();
int cnt1 = 1;ss1[1] = "";ss2[1] = "";
int f = 0;
for (int i = 0; i < s1.length(); i++) {
if (s1.charAt(i) >= 'A' && s1.charAt(i) <= 'Z') {
if (f == 1) {
f = 0;
i--;
cnt1++;
ss1[cnt1] = "";
continue;
}
else f = 1;
}
ss1[cnt1] += s1.charAt(i);
}
int cnt2 = 1;
f = 0;
for (int i = 0; i < s2.length(); i++) {
if (s2.charAt(i) >= 'A' && s2.charAt(i) <= 'Z') {
if (f == 1) {
f = 0;
i--;
cnt2++;
ss2[cnt2] = "";
continue;
}
else f = 1;
}
ss2[cnt2] += "" + s2.charAt(i);
}
for(int i = 1;i <= cnt1;i++)
for(int j = 1;j <= cnt2;j++) {
if(ss1[i].equals(ss2[j])) {
dp[i][j] = dp[i - 1][j - 1] + 1;
}else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
System.out.println(dp[cnt1][cnt2]);
}
}
问题描述
输入格式
输出格式
样例输入
样例输出
样例说明
评测用例规模与约定
思路
import java.io.*;
import java.util.*;//自定义Read类中需要用到io和util这两个包,星号*(通配符)表示包中所有的类
import java.math.*;//含大数Biglongeger
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main{
static double a[] = new double[100005];
static int MAX = 1005; // 最大结点个数
static long GIGANTIC = 0x3f3f3f3f; // 定义为无穷大
static double[][] graph = new double[MAX][MAX];
static double[] lowCost = new double[MAX]; // 到达j结点的最低花费
static long[] previousNode = new long[MAX]; // j结点的上一个结点
static long[] D = new long[MAX]; // j结点的上一个结点
static double minCost = 0; // 最小成本
static long n; // 结点个数
static int middleNode; // 中间结点
static double sum = 0; // 记录最小生成树的总权重
static int L, R, d, w;
static class PrimMST {
/**
* Prim算法,返回最小生成树的总权重。
*
* @param graph
* @param n
* @return sum
*/
public double prim(double[][] graph, long n) {
// 邻接矩阵,有权值的(直接相邻的)赋权值。没有权值的(非直接相邻的)赋无穷大值
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= n; j++) {
if (graph[i][j] == 0) {
graph[i][j] = GIGANTIC;
}
}
}
// 所有点默认起点是A
for (int i = 1; i <= n; i++) {
lowCost[i] = graph[0][i];
previousNode[i] = 0;
}
previousNode[0] = -1;
// 进行n-1次循环运算
for (long i = 1; i <= n; i++) {
minCost = GIGANTIC;
middleNode = 0;
// 找出最小的lowCost
for (int j = 1; j <= n; j++) {
if (lowCost[j] != 0 && lowCost[j] < minCost) {
minCost = lowCost[j];
middleNode = j;
}
}
// 转换为ASCII码表示的英文字符输出
sum += minCost;
// lowCost[middleNode] = 0; previousNode[middleNode] = 0;表示middleNode被选入最小生成树
lowCost[middleNode] = 0;
previousNode[middleNode] = 0;
// middleNode加入最小生成树,更新lowCost与previousNode
for (int j = 1; j <= n; j++) {
if (graph[middleNode][j] < lowCost[j]) {
lowCost[j] = graph[middleNode][j];
previousNode[j] = middleNode;
}
}
}
return sum;
}
}
static double doEdge(long y1, long y2, long i1, long i2) {
double x1 = 0;
double x2 = 0;
if(i1 == 0)x1 = w / 2.0;
if (i1 > L)
x1 = w;
if (i2 > L)
x2 = w;
return Math.sqrt(1.0 * (x1 - x2) * (x1 - x2) + 1.0 * (y1 - y2) * (y1 - y2));
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
L = cin.nextInt();
R = cin.nextInt();
d = cin.nextInt();
w = cin.nextInt();
for (int i = 1; i <= L + R; i++) {
D[i] = cin.nextLong();
}
for (int i = 1; i <= L + R; i++) {
double e = doEdge(0, D[i], 0, i);
graph[0][i] = e;
graph[i][0] = e;
}
for (int i = 1; i <= L + R; i++) {
for (int j = i + 1; j <= L + R; j++) {
double e = doEdge(D[i], D[j], i, j);
graph[i][j] = e;
graph[j][i] = e;
}
}
for (int i = 1; i <= L + R; i++) {//终点
double e = doEdge(d, D[i], 0, i);
graph[L + R + 1][i] = e;
graph[i][L + R + 1] = e;
}
PrimMST primMST = new PrimMST();
double mstCost = primMST.prim(graph, L + R + 1);
System.out.printf("%.2f",mstCost);
}
}
作者:我是不是很美
链接:http://www.javaheidong.com/blog/article/207634/cade35e2505f3b3f00a6/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!