首页 > 其他分享 >1.21

1.21

时间:2025-01-21 16:54:47浏览次数:1  
标签:java int static io import new 1.21

1

P1162 填涂颜色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

  • 只需要环最外圈的0,然后标记,最后填色时没有标记的标为2即可
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.*;

public class Main {

	static final int N = 35;
	static int[][] g = new int[N][N];
	static boolean[][] str = new boolean[N][N];
	static int n;
	static StreamTokenizer cin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	static PrintWriter cout = new PrintWriter(new OutputStreamWriter(System.out));
	static int[] dx = {1, 0, -1, 0};
	static int[] dy = {0, 1, 0, -1};
	static Queue<Integer> queue = new LinkedList<>();
	
	public static void dfs(int x, int y) {
		for(int i = 0; i < 4; i++) {
			int nowx = dx[i] + x;
			int nowy = dy[i] + y;
			if(nowx >= 1 && nowx <= n && nowy >= 1 && nowy <= n) {
				if(g[nowx][nowy] == 0 && str[nowx][nowy] == false) {
					str[nowx][nowy] = true;
					dfs(nowx, nowy);
				}
			}
		}
	}

	public static void bfs(int x, int y) {

	}
	
	public static void main(String[] args) throws IOException{
		cin.nextToken();
		n = (int)cin.nval;
		for(int i = 1; i <= n; i++) {
			for(int j = 1; j <= n; j++) {
				cin.nextToken();
				g[i][j] = (int)cin.nval;
			}
		}
		
		for(int i = 1; i <= n; i++) {
			if(g[1][i] == 0 && str[1][i] == false) {
				str[1][i] = true;
				dfs(1, i);
			}
		}
		
		for(int i = 1; i <= n; i++) {
			if(g[n][i] == 0 && str[n][i] == false) {
				str[n][i] = true;
				dfs(n, i);
			}
		}
		
		for(int i = 2; i <= n - 1; i++) {
			if(g[i][1] == 0 && str[i][1] == false) {
				str[i][1] = true;
				dfs(i, 1);
			}
			
			if(g[i][n] == 0 && str[i][n] == false) {
				str[i][n] = true;
				dfs(i, n);
			}
		}
		
		for(int i = 1; i <= n; i++) {
			for(int j = 1; j <= n; j++) {
				if(g[i][j] == 0 && str[i][j] == false) {
					g[i][j] = 2;
				}
				System.out.print(g[i][j] + " ");
			}
			System.out.println();
		}
	}
}

[P1460 USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

  • 注意几个剪枝的点,第一个是大于或等于最短的成功路径不必继续搜,主循环搜完的点不能再搜,因为我们是从1开始的,所以每一次我们都默认往后搜而不往前搜,往前搜必然是与之前的成功路径重复了,再剪一次就能够ac了。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.*;

public class Main {


	static StreamTokenizer cin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	static PrintWriter cout = new PrintWriter(new OutputStreamWriter(System.out));
	static int v, g;//4 3
	static final int N = (int)1e3;
	static int[] wtmin_target = new int[N];
	static int[] wtmin_now = new int[N];
	static int[][] siliao = new int[N][N];
	static boolean[] str = new boolean[N];
	static PriorityQueue<Integer>[] targetQueue = new PriorityQueue[N];
	static PriorityQueue<Integer> nowQueue = new PriorityQueue();
	static List<Integer> lists = new ArrayList<>();
	static int cnt = 0x3f3f;
	static int activeMent;

	public static void dfs(int x, int cnt_) {
		if(cnt <= cnt_) {
			return;
		}
		int num = 0;
		for(int i = 1; i <= v; i++) {

			if(wtmin_now[i] >= wtmin_target[i]) {
				num++;
			}
			if(num == v) {
				for (Integer integer : nowQueue) {
					targetQueue[activeMent].add(integer);
				}
				activeMent++;
				cnt = Math.min(cnt, cnt_);
				return;
			}
		}

		for(int i = x + 1; i <= g; i++) {
			if(str[i] == false) {
				str[i] = true;
				for(int j = 1; j <= v; j++) {
					wtmin_now[j] += siliao[i][j];
				}
				nowQueue.add(i);
				dfs(i, cnt_ + 1);
				nowQueue.remove(i);
				for(int j = 1; j <= v; j++) {
					wtmin_now[j] -= siliao[i][j];
				}
				str[i] = false;
			}
		}
	}

	public static void bfs(int x, int y) {

	}
	
	public static void main(String[] args) throws IOException {
		for (int i = 0; i < N; i++) {
			targetQueue[i] = new PriorityQueue<>();
		}

		cin.nextToken();
		v = (int)cin.nval;
		for (int i = 1; i <= v; i++) {
			cin.nextToken();
			wtmin_target[i] = (int) cin.nval;
		}
		cin.nextToken();
		g = (int) cin.nval;

		for (int i = 1; i <= g; i++) {
			for (int j = 1; j <= v; j++) {
				cin.nextToken();
				siliao[i][j] = (int) cin.nval;
			}
		}

		for(int i = 1; i <= g; i++) {
			str[i] = true;
			for(int j = 1; j <= v; j++) {
				wtmin_now[j] += siliao[i][j];
			}
			nowQueue.add(i);
			dfs(i, 1);
			nowQueue.remove(i);
			for(int j = 1; j <= v; j++) {
				wtmin_now[j] -= siliao[i][j];
			}
			//str[i] = false;
		}

		int xiabiao = 0;
		for(int i = 0; i < activeMent; i++) {
			if (targetQueue[i].size() == cnt) {
				xiabiao = i;
				break;
			}
		}

		System.out.print(cnt + " ");

		while(targetQueue[xiabiao].size() != 0) {
			System.out.print(targetQueue[xiabiao].poll() + " ");
		}


	}
}

[P1030 NOIP2001 普及组] 求先序排列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

  • 每一次递归输出后序遍历最后一个节点,然后将中序分为两个子串,然后按照后续顺序,分为两个后序子串,因为个数肯定一样,可以使用java的substr,写者有点rz的没有想到二者两个字母个数是完全一样的,调了一个小时。然后分别递归dfs即可。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.*;

public class Main {


	static StreamTokenizer cin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	static PrintWriter cout = new PrintWriter(new OutputStreamWriter(System.out));
	static String zhongxu = new String();
	static String houxu = new String();

	// s中序 c后序
	public static void dfs(String s, String c) {
		if(s.length() == 1) {
			System.out.print(c.charAt(c.length() - 1));
			return;
		}
		System.out.print(c.charAt(c.length() - 1));
		String[] t = s.split(Character.toString(c.charAt(c.length() - 1))); //t0 t1 中序

		String houxu1 = new String();
		String houxu2 = new String();
		for(int i = 0; i < c.length() - 1; i++) {
			if(t[0].contains(Character.toString(c.charAt(i)))) {
				houxu1 += Character.toString(c.charAt(i));
			} else {
				houxu2 += Character.toString(c.charAt(i));
			}
		}


		if(t.length == 2 && t[0].length() != 0 && t[1].length() != 0) {
			dfs(t[0], houxu1);
			dfs(t[1], houxu2);
		} else {
			if(houxu1.length() != 0) {
				dfs(t[0], houxu1);
			} else {
				dfs(t[1], houxu2);
			}
		}

	}

	public static void main(String[] args) throws Exception{
		cin.nextToken();
		zhongxu = cin.sval;
		cin.nextToken();
		houxu = cin.sval;


		System.out.print(houxu.charAt(houxu.length() - 1));
		String[] t = zhongxu.split(Character.toString(houxu.charAt(houxu.length() - 1)));

		String houxu1 = new String();
		String houxu2 = new String();
		for(int i = 0; i < houxu.length() - 1; i++) {
			if(t[0].contains(Character.toString(houxu.charAt(i)))) {
				houxu1 += Character.toString(houxu.charAt(i));
			} else {
				houxu2 += Character.toString(houxu.charAt(i));
			}
		}

		if(t.length == 2 && t[0].length() != 0 && t[1].length() != 0) {
			dfs(t[0], houxu1);
			dfs(t[1], houxu2);
		} else {
			if(houxu1.length() != 0) {
				dfs(t[0], houxu1);
			} else {
				dfs(t[1], houxu2);
			}
		}
	}
}

标签:java,int,static,io,import,new,1.21
From: https://www.cnblogs.com/Mikkeykarl/p/18683821

相关文章

  • 1.21 JUnit单元测试
    JUnit单元测试1)在pom.xml中,引入JUnit的依赖点击查看代码<dependencies><!--https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api--><dependency><groupId>org.junit.jupiter</groupId><artifactId&......
  • 1.21练习
    原题地址https://www.luogu.com.cn/problem/P4552这道题是一道差分的题目,刚开始的时候我想的是找数列中的众数,然后求大于众数的数和小于众数的数与众数的最大差,然后再将它们相加,但这样很显然不对。在看了题解的思路后发现这道题其实不难(我太笨了)。首先这道题是说通过选定区间[l,......
  • 1.21
    二分图判定染色法二分图匹配匈牙利算法增广路(augmentingpath)是始于非匹配点且终于非匹配点(除了起始的点)的交错路。增广路中边的数量是奇数。增广路中,原匹配边变为非匹配边,可得到更大匹配枚举每个左部点,遍历所有边:1、若有未匹配的右部点,则将此两点匹配。2、否则递归处理......
  • 微信多开防撤回、防撤回PC版 | WeChat4.0.1.21
    点击上方蓝字关注我前言很多使用微信电脑版的朋友可能都会遇到一个问题,那就是微信电脑版不能同时登录多个账号。这对于那些需要在电脑上同时管理多个微信账号的人来说,确实很不方便。还有时候,别人撤回了他们发的消息,而我们可能就错过了那些重要的内容。这个版本可以同时登录多个......
  • 2024.11.21
    MathML实例以下是一个简单的MathML实例:实例<!DOCTYPEhtml><html>  <head>    <meta charset="UTF-8">    <title>菜鸟教程(runoob.com)</title>  </head>      <body>        <mathxmlns="http://w......
  • 学习-Nginx-安装nginx1.21.6开源软件
    下载地址http://nginx.org/download/nginx-1.21.6.tar.gz通过网盘分享的文件:Nginx1.21.6链接:https://pan.baidu.com/s/1tcsTs2IEmN80wt5VQ5U3PA?pwd=sky1提取码:sky1Xftp传输安装包解压缩安装包tarzxvfnginx-1.21.6进入到nginx文件夹查看需要的依赖./configu......
  • 11.21
    “AI界拼多多”毋庸置疑,DeepSeek-V3的发布再次证明,开源模型正迅速缩小与封闭模型之间的差距,在多项任务上实现了几乎相当的性能。这对行业发展未尝不是一件好事,不仅降低了某个AI巨头垄断市场的可能性,还为企业提供了更多选择和灵活性。在定价方面,回顾今年5月,DeepSeek发布第......
  • 11.21
    石家庄铁道大学课程管理系统1、项目需求:本项目所开发的学生选课系统完成学校对学生的选课信息的统计与管理,减少数据漏掉的情况,同时也节约人力、物力和财力。告别以往的人工统计。2.系统要求与功能设计2.1页面要求(1)能够在Tomcat服务器中正确部署,并通过浏览器查看;(2)网站页面整......
  • 11.21
    软件设计                 石家庄铁道大学信息学院 实验 20:备忘录模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解备忘录模式的动机,掌握该模式的结构;2、能够利用备忘录模式解决实际问题。 [实验任务一]:多次撤销改进课堂上的“用......
  • 11.21
    3. 90/10规则性能优化的基本规则是 90/10 规则:一个程序花费 90% 的时间执行其中 10% 的代码。这只是一条启发性的规则,并非自然法则,但对于我们的思考和计划却具有指导性。这条规则有时也被称为 80/20 规则,但思想是一样的。直观地说,90/10 规则表示某些代码块是会被频繁地......