网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)
需要这份系统化资料的朋友,可以点击这里获取
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2. java自带BigInteger解:
import java.math.BigInteger; public class Main {public static void main(String[] args) { BigInteger sum = BigInteger.valueOf(0);//初始化0 for(int i = 1; i 04.所以总的方案数N = A0中的总选法 * A1中的总选法 = (2 ^ L) * [2 ^ (J - 1)]( 且 J > 0)
真是搞点分不容易啊!😭
正解代码:
import java.util.\*;public class Main {public static int mod = 1000000007;public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[]; while(n > 0) { int m = sc.nextInt(); a = new int[m]; for(int i = 0; i < m; i ++) a[i] = sc.nextInt(); int L = 0, J = 0; for(int i = 0; i < m; i ++) if(a[i] % 2 == 0) L ++; else J ++; if(J % 2 != 0) System.out.println(0); else { if(J == 0) J = 1; // Math.pow(2, L) \* Math.pow(2, J - 1) 可能会爆double // System.out.println((int)(Math.pow(2, L) \* Math.pow(2, J - 1) % mod)); int res = 1; for(int i = 0; i < L + J - 1; i ++) res = res \* 2 % mod; System.out.println(res); } n --; } }}———— 2023.5.18 修改于 2024.3.3
本题可以用暴力或者动态规划整点分:数组分割n种讨论
———— 2023.8.21修改于 2024.3.3
D、矩形总面积:[题目描述]
平面上有个两个矩形 R1 和 R2,它们各边都与坐标轴平行。设 (x1, y1) 和(x2, y2) 依次是 R1 的左下角和右上角坐标,(x3, y3) 和 (x4, y4) 依次是 R2 的左下角和右上角坐标,请你计算 R1 和 R2 的总面积是多少? 注意:如果 R1 和 R2 有重叠区域,重叠区域的面积只计算一次。 输入格式 输入只有一行,包含 8 个整数,依次是:x1,y1,x2,y2,x3,y3,x4 和 y4
输出格式:
一个整数,代表答案。
样例输入:
2 1 7 4 5 3 8 6
样例输出:
22
[提示]
样例中的两个矩形如图所示: 对于 20% 的数据,R1 和 R2 没有重叠区域。 对于 20% 的数据,其中一个矩形完全在另一个矩形内部。 对于 50% 的数据,所有坐标的取值范围是 [0, 10^3 ]。 对于 100% 的数据,所有坐标的取值范围是 [0, 10^5 ]。
解题:
这道题我是真不擅长😢我几乎都是做数组题目,他给的这个网格题我是真没咋做过,我最开始暴力一点的想法是整一个用数组代替这个平面,符合的范围标记上,最后查看该数组内的有多少被标记了,就是所要求矩形总面积。由于坐标最大取值为10^5所以数组由于开了过多空间会爆掉,还有就是矩阵的面积与所含空格数直接相关而设立的数组只能查符合条件的点数,矩阵相交的话,形成的面积与该区域所包含点的关系就不好明确了。
所以想完美解开这道题,就只能找规律咯, 我真是找不出来😭所以比赛的时候就是朴素的if else分情况讨论,太sb了就不放出来了。
这里直接就给正规解了:
1.如果两个矩阵相交了,那么相交的区域必然也是个矩阵
大家可以自己画图验证一下2.找到相交区域矩阵的,左下角坐标和右上角坐标即可算出相交区域面积
假设相交区域,矩阵的左下角坐标为(m1, n1),右上角坐标为(m2, n2)那么必然存在(直接给规律了): 交集左下角端点可以表示为:m1 = max(min(x1, x2), min(x3, x4));n1 = max(min(y1, y2), min(y3, y4));交集右上角端点可以表示为:m2 = min(max(x1, x2), max(x3, x4));n2 = min(max(y1, y2), max(y3, y4));3.两个矩阵不相交,那么必然存在n2 < n1 && m2 < n1
注意:得用long , 因为10^5 * 10^5 会爆int。 知道矩阵左下角坐标和右上角坐标算面积应该就非常好算了,直接(横坐标2 - 横坐标1)* (纵坐标2 - 纵坐标1)即可。本题满分代码如下:
import java.util.\*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long a[] = new long[8]; for(int i = 0; i < 8; i ++) a[i] = sc.nextInt(); long m1 = 0, n1 = 0, m2 = 0, n2 = 0; m1 = Math.max(Math.min(a[0], a[2]), Math.min(a[4], a[6])); n1 = Math.max(Math.min(a[1], a[3]), Math.min(a[5], a[7])); m2 = Math.min(Math.max(a[0], a[2]), Math.max(a[4], a[6]));## 学习路线:这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)**需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)****网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。****[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)****一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**