广州网站建设q.479185700棒,wordpress 添加导航栏,企业做网站的困惑,网页设计培训机构怎么选目录
二分模板
1460. 我在哪#xff1f; - 二分答案 哈希表
1221. 四平方和 - 哈希表 / 二分
1、哈希表
2、二分 自定义排序
1227. 分巧克力 -
113. 特殊排序 - 二分模板 l r 1 —— 先 r mid 后 l mid1 —— 寻找左边界 —— 找大于某个数的最小值lr…目录
二分模板
1460. 我在哪 - 二分答案 哈希表
1221. 四平方和 - 哈希表 / 二分
1、哈希表
2、二分 自定义排序
1227. 分巧克力 -
113. 特殊排序 - 二分模板 l r 1 —— 先 r mid 后 l mid1 —— 寻找左边界 —— 找大于某个数的最小值lr11 —— 先 l mid 后 r mid-1 —— 寻找右边界 —— 找小于某个数的最大值活动 - AcWing
import java.util.*;class Main
{public static void main(String[] args){Scanner scnew Scanner(System.in);int nsc.nextInt(),tsc.nextInt();int[] anew int[n];for(int i0;in;i) a[i]sc.nextInt();while(t--0){int xsc.nextInt();int l0,rn-1;while(lr){int midlr1;if(a[mid]x) rmid;else lmid1;}if(a[r]!x) {System.out.println(-1 -1);continue;}System.out.print(r );l0;rn-1;while(lr){int midlr11;if(a[mid]x) lmid;else rmid-1;}System.out.println(r);}}
} 1460. 我在哪 - 二分答案 哈希表
1460. 我在哪 - AcWing题库 题目 约翰想要知道最小的 K 的值使得他查看任意连续 K 个邮箱序列他都可以唯一确定这一序列在道路上的位置. 最小的K值意思是要找到最小长度为K的子串并且只出现过一次 思路 二分答案K值 用哈希表存前面出现过的子串如果后面长度为k的子串在哈希表存在过说明后面的子串在前面出现过说明该k值小答案应该增大 最后二分出满足要求的最小k值 import java.util.*;class Main
{static String s;public static boolean ck(int len,String s){int ns.length();SetString stnew HashSet();for(int i0;ilen-1n;i){String ts.substring(i,ilen);if(st.contains(t)) return false; //如果后面存在前面出现过的st.add(t);}return true;}public static void main(String[] args){Scanner scnew Scanner(System.in);int nsc.nextInt();String ssc.next();int l1,rn;while(lr){int midlr1;if(ck(mid,s)) rmid;else lmid1;}System.out.print(l);}
} 1221. 四平方和 - 哈希表 / 二分
活动 - AcWing 题目 思路 a,b,c,d的枚举范围为四重循环会tle 所以我们只能枚举两个数 因此我们需要用空间换时间 先将 存起来降低时间复杂度 1、哈希表 因为要按0≤a≤b≤c≤d顺序存第一个表示法 所以对于cd组合d从c开始枚举将 对应的c和d存起来 因为cd是从小到大枚举的所以如果后面再次出现相同的sum值就跳过只存第一次的 对于ab组合b从a开始枚举确定后一定存在对应的 因为ab是从小到大枚举的所以当出现对应的sum值时直接输出return import java.util.*;class Main
{public static void main(String[] args){Scanner scnew Scanner(System.in);int nsc.nextInt();MapInteger,int[] mpnew HashMap();for(int c0;c*cn;c)for(int dc;d*dc*cn;d){int td*dc*c;if(!mp.containsKey(t)) mp.put(t,new int[] {c,d});}for(int a0;a*an;a)for(int ba;b*ba*an;b){int xn-a*a-b*b;int[] tpmp.get(x);if(mp.containsKey(x)){System.out.print(a b tp[0] tp[1]);return;}}}
}
2、二分 自定义排序 对cd组合结果进行排序 在枚举ab组合时二分满足条件的cd组合 import java.util.*;class Main
{public static void main(String[] args){Scanner scnew Scanner(System.in);int nsc.nextInt();Listint[] listnew ArrayList();for(int c0;c*cn;c)for(int dc;d*dc*cn;d){int td*dc*c;list.add(new int[]{t,c,d});}list.sort(new Comparatorint[](){public int compare(int[] o1,int[] o2){if(o1[0]!o2[0]) return o1[0]-o2[0]; //从大到小if(o1[1]!o2[1]) return o1[1]-o2[1];return o1[2]-o2[2];}}); for(int a0;a*an;a)for(int ba;b*ba*an;b){int xn-a*a-b*b;int l0,rlist.size()-1;while(lr){int midlr1;if(list.get(mid)[0]x) rmid;else lmid1;}if(list.get(l)[0]x){int clist.get(l)[1];int dlist.get(l)[2];System.out.print(a b c d);return;}}}
} 1227. 分巧克力 -
活动 - AcWing 题目 思路 113. 特殊排序 -
活动 - AcWing 题目 思路