竞赛讨论区 > 有没有大佬看看这题为什么只过了60,测试用例也看不到
头像
VXTW
发布于 04-06 00:12
+ 关注

有没有大佬看看这题为什么只过了60,测试用例也看不到

差分加dfs


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class Main {
	static long mod = 998244353;
	static int[] a;
	static long ans;
	public static void main(String[] args) {
		IO io = new IO();
		int n = io.nextInt(),m = io.nextInt();
		a = new int[n+2];
		int[][] b = new int[m][2];
		for(int i = 0;i<m;i++) {
			b[i][0] = io.nextInt();
			b[i][1] = io.nextInt();
		}
		dfs(b,0);
		io.print(ans);
		io.close();
	}
	
	static boolean check() {
		int[] ck = new int[a.length];
		for(int i = 1;i<a.length-1;i++) {
			ck[i] = a[i];
			ck[i] += ck[i-1];
		}
		for(int i = 1;i<ck.length-1;i++) if(ck[i]<2) return false;
		return true;
	}
	
	static void dfs(int[][] b,int i) {
		if(i>0&&check())ans = (ans%mod + 1)%mod;
		if(i==b.length)return;
		a[b[i][0]]++;
		a[b[i][1]+1]--;
		dfs(b,i+1);
		a[b[i][0]]--;
		a[b[i][1]+1]++;
		dfs(b,i+1);
	}
}

//输入输出快一些
class IO extends PrintWriter {
	BufferedReader br;
	StringTokenizer st;

	public IO(InputStream in, PrintStream out) {
		super(out);
		br = new BufferedReader(new InputStreamReader(in));
	}

	public IO() {
		this(System.in, System.out);
	}

	public String next() {
		try {
			while (st == null || !st.hasMoreElements()) {
				st = new StringTokenizer(br.readLine());
			}
			return st.nextToken();
		} catch (Exception e) {
		}
		return null;
	}

	public int nextInt() {
		return Integer.parseInt(next());
	}

	public long nextLong() {
		return Long.parseLong(next());
	}
}

`

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐