上一页 1 2 3 4 5 6 ··· 17 下一页
摘要:题意 给定两个$P,Q$的正整数区间($P,Q$都符合$[L,R]$这个区间,并且都$\le 10^9$),分别从其中随机选出一个数,选出的两个数作为一个新区间的左右端点。要求新区间内的幸运数刚好为$k$个的概率(幸运数指一个数的数位只有4或7)。 分析 这题要思考着做。首先能有一个直觉:在$10^ 阅读全文
posted @ 2019-03-11 18:29 SamHX 阅读(121) 评论(0) 推荐(0) 编辑
摘要:分析 与其说是算法题,不如说是语言特性题。 这题要是对Java的String相关函数掌握的比较熟练,写起来的速度(各种意义上)就会很快。 大致的思路都是一致的,差不到哪里去,无非是枚举长度。值得一提的是,从长到短的枚举顺序要比从短到长优得多。 代码 java class Solution { pub 阅读全文
posted @ 2019-02-10 01:13 SamHX 阅读(125) 评论(0) 推荐(0) 编辑
摘要:分析 把具体的情况一个一个实现即可,没有什么幺蛾子。 代码 java class Solution { public int romanToInt(String s) { int ans = 0; for (int i=0; i!=s.length(); ++i) { switch(s.charAt 阅读全文
posted @ 2019-02-10 00:45 SamHX 阅读(75) 评论(0) 推荐(0) 编辑
摘要:题意 给定两个数组c和t,可以对c数组中的任何元素变换$c_i$​成$c_{i+1}+c_{i 1} c_i$​,问c数组在若干次变换后能否变换成t数组。 分析 这种魔法题目我是同样的没做过。Editorial里说用差分来能够看出思路。问题是,如何能够想到差分来做?因为它的变换就是相邻的数的加减法, 阅读全文
posted @ 2019-02-09 23:45 SamHX 阅读(85) 评论(0) 推荐(0) 编辑
摘要:题意 你有n个数字,范围[1, m],你可以选择其中的三个数字构成一个三元组,但是这三个数字必须是连续的或者相同的,每个数字只能用一次,问这n个数字最多构成多少个三元组? 分析 根据官方Editorial的说法,似乎没有一个真正正确的贪心(但是说不定就有人乱搞出来了)。这里用dp来解决问题。 这种d 阅读全文
posted @ 2019-02-09 02:15 SamHX 阅读(308) 评论(0) 推荐(0) 编辑
摘要:代码 java for(int i=0; i!=n; ++i) { int u = cin.nextInt(); int v = cin.nextInt(); edges.add(new Edge(u,v)); startpnt = u; if(g.get(u)==null) g.put(u, ne 阅读全文
posted @ 2019-01-23 21:57 SamHX 阅读(34) 评论(0) 推荐(0) 编辑
摘要:与其说是训练不如说是重温。重新写了Java版本的代码。 阅读全文
posted @ 2019-01-22 17:24 SamHX 阅读(84) 评论(0) 推荐(0) 编辑
摘要:分析 注意到跳跃的方向是一致的,所以我们需要维护一个数接下来跳到哪里去的问题。换句话说,就是对于一个数$A_i$,比它大的最小值$A_j$是谁?或者反过来。 这里有两种方案,一种是单调栈,简单说一下思路:维护一个递减的单调栈,每次放入元素时将比它大的栈顶元素弹出(说明这些元素都能在递减的情况下都能跳 阅读全文
posted @ 2019-01-15 04:28 SamHX 阅读(322) 评论(0) 推荐(0) 编辑
摘要:分析 这题场上前缀和都想出来了,然后就没有然后了。。。哭惹.jpg 前缀和相减能够得到任意一段连续区间的和,然后他们取余$K$看余数是否为0就能得到。这是朴素的遍历算法。那么反过来说,如果两个前缀和都对$K$余$p$,那么他们相减一定能够被K整除。 我们就这么统计就可以了,然后一个简单的求和即可。想 阅读全文
posted @ 2019-01-14 00:43 SamHX 阅读(322) 评论(0) 推荐(0) 编辑
摘要:分析 好久不刷题真的思维僵化,要考虑到这样一个结论:如果递增的三个数$x_i,x_{i+1},x_{i+2}$不符合题意,那么最大的两边之差一定大于等于第一条边,那么任何比第一条边小的都不能成立。这样一来,递增排序,然后线性找就可以了。 代码 阅读全文
posted @ 2019-01-14 00:31 SamHX 阅读(145) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 17 下一页