tl

scheme tail recursion

匿名 (未验证) 提交于 2019-12-03 00:57:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am trying to create a scheme tail recursive function flatten-tl-rec that flattens a nested list of lists. (define flatten-tl-rec (lambda (xs) (letrec ([flatten-tl-rec-acc (lambda (xs acc) (cond ((empty? xs) acc) ((list? (first xs)) (flatten-tl-rec-acc (rest xs) (append (flatten-tl-rec-acc (first xs) '()) acc))) (else (flatten-tl-rec-acc (rest xs) (cons (first xs) acc)))) )]) (flatten-tl-rec-acc xs '())))) (flatten-tl-rec '(1 2 3 (4 5 6) ((7 8 9) 10 (11 (12 13))))) But I am getting (13 12 11 10 9 8 7 6 5 4 3 2 1) instead of (1 2 3 4 5 6 7 8

三数之和

匿名 (未验证) 提交于 2019-12-03 00:37:01
给定一个包含 n 个整数的数组 nums ,判断 nums 中是否存在三个元素 a,b,c , 使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 例如, 给定数组 nums = [- 1 , 0 , 1 , 2 , - 1 , - 4 ], 满足要求的三元组集合为: [ [- 1 , 0 , 1 ], [- 1 , - 1 , 2 ] ] 以下是我用python写的答案。执行过程中结果是对的,但是leetcode说我超时,请问咋回事。谢谢指点。 class Solution: def threeSum(self, nums): tL = nums tL = list(tL) L = len(tL) result_list = [] for i in range(L): for j in range(i+1,L): for k in range(j+1,L): if tL[i]+tL[j]+tL[k] == 0: result_list.append([tL[i],tL[j],tL[k]]) L =len(result_list) dem = [] for i in range(L): for j in range(i+1,L): if set(result_list[i]) == set(result_list[j]):

基于注意力机制的细腻度图像分类

匿名 (未验证) 提交于 2019-12-03 00:26:01
细腻度图像分类相比普通的图像分类具有更大的挑战,因为在细腻度图像类别中类间差异往往只聚焦于很小的一个区域。比如在下图海鸥的3个品种中,差异仅仅体现在喙与脚;而在人类活动识别(human activity recognition)中的弹奏乐器与拿着乐器也仅仅体现在手和嘴上。针对这一类分类任务可采用强监督的学习方式,即根据下图中额外的bounding box信息去学习相应的模型;然而,一方面强监督的学习框架需要额外的标注信息;另一方面人为标定的区域(region)不一定是最适合模型分类的区域。因此基于非监督(注意这里的非监督指不需要bounding box信息,但是在模型学习中仍需要图像的label信息)的细腻度图像分类模型在现实世界中更加通用与有效。在CVPR2017中一篇oral论文 Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition ,提出了一个很有效的非监督学习模型, 能取得和采用类似bounding box标注的算法效果。 总的来说,该论文基于注意力机制的网络模型不断聚焦到最具辨别性的区域实现图像的分类,如下图,由粗尺度的啄木鸟原始图像聚焦到了更具辨别性的头部区域;如此反复聚焦到更细的尺度

ThreadLocal原理及内存泄露预防

匿名 (未验证) 提交于 2019-12-03 00:19:01
参阅: http://www.importnew.com/22039.html ThreadLocal 提供了线程独有的局部变量,可以在整个线程存活的过程中随时取用,极大地方便了一些逻辑的实现。常见的ThreadLocal用法有: - 存储单个线程上下文信息。比如存储id等; - 使变量线程安全。变量既然成为了每个线程内部的局部变量,自然就不会存在并发问题了; - 减少参数传递。比如做一个trace工具,能够输出工程从开始到结束的整个一次处理过程中所有的信息,从而方便debug。由于需要在工程各处随时取用,可放入ThreadLocal。 ThreadLocal里类型的变量,其实是放入了当前Thread里。每个Thread都有一个 {@link Thread#threadLocals} ,它是一个map: {@link java.lang.ThreadLocal.ThreadLocalMap} 。这个map的entry是 {@link java.lang.ThreadLocal.ThreadLocalMap.Entry} ,具体的key和value类型分别是 {@link ThreadLocal} 和 {@link Object} 。 (注:实际是ThreadLocal的弱引用 WeakReference<ThreadLocal<?>> ,但可以先简单理解为ThreadLocal。)

Codeforces - 1203D2 - Remove the Substring (hard version) - 双指针

匿名 (未验证) 提交于 2019-12-02 23:54:01
https://codeforces.com/contest/1203/problem/D2 上次学了双指针求两个字符串之间的是否t是s的子序列。但其实这个双指针可以求出的是s的前i个位置中匹配t的最长的前缀。反过来求一次可以得到最长的后缀。 然后怎么找要删除的位置呢?暴力n^2肯定可以,然后线性写挂到自闭。 枚举位置[i,j),注意j可以取相等,所以预处理前后缀的时候把n位置的后缀也算好。 去除子串[i,j),那么剩下的就是[0,i-1]和[j,n-1]两个子串,他们匹配的长度加起来超过tl就是合法。 #include<bits/stdc++.h> using namespace std; int dpprefix[200005]; int dpsuffix[200005]; char s[200005], t[200005]; int sl, tl; void prefix() { int i = 0, j = 0; while(i < sl || j < tl) { if(i < sl && j < tl) { if(s[i] == t[j]) { dpprefix[i] = j + 1; ++i, ++j; } else { dpprefix[i] = j; ++i; } } else if(j == tl) { dpprefix[i] = tl; ++i; } else

CF1182 D Complete Mirror――思路

匿名 (未验证) 提交于 2019-12-02 23:42:01
题目: http://codeforces.com/contest/1182/problem/D 很好的思路是从度数为1的点和直径来入手。 找一条直径。看看直径的两个端点是否合法。 如果都不合法,那么根一定在直径中点 md 伸出去的子树里。 伸出去的子树里的任意一点 x 到伸出去的子树里的一个叶子 y 的距离一定小于到直径端点的距离。不然直径就不是那条。 所以新的根只能是一个叶子,并且满足该叶子到其他所有叶子的距离一样。 也就是说,根一定是 md 伸出去的子树里最近的叶子。并且可以发现 md 到该叶子的路径上没有分叉,不然该叶子到另一个叶子的距离很近。 如果有多个满足该条件的叶子,任选一个判断是否可行即可。如果一个不可行,其他一定也不可行。 似乎没有开足够的栈?把 DFS 改成 BFS 才过掉。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int rdn() { int ret=0;bool fx=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')fx=0;ch=getchar();} while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar(); return fx

tensorlayer学习日志2_chapter2

匿名 (未验证) 提交于 2019-12-02 22:56:40
上面2.6.1的例子很奇怪,试过np.array与直接 定义个列表好像也没什么影响~~,不一定要np.asarray~~情况如下: [['a' 'a'] ['b' 'b']] [0 1] [['c' 'c'] ['d' 'd']] [2 3] [['e' 'e'] ['f' 'f']] [4 5] ~~~~~~~~~~~~~~~ [['e' 'e'] ['a' 'a']] [4 0] [['c' 'c'] ['b' 'b']] [2 1] [['f' 'f'] ['d' 'd']] [5 3] ~~~~~~~~~~~~~~~ [['a', 'a'], ['b', 'b'], ['c', 'c']] [0, 1, 2] [['d', 'd'], ['e', 'e'], ['f', 'f']] [3, 4, 5] [Finished in 4.3s] 下面是2.6.2的例子,还是很顺利的,就是要注意# tl.logging.set_verbosity(tl.logging.DEBUG)要注释掉,不然会报错,说是tensorlayer还没logging这个功能,另一个是network = tl.layers.DenseLayer(network, n_units=10, act=tf.identity, name='output')这行的act要定义个算法, https://github

Android 第三方库FlycoTabLayout

让人想犯罪 __ 提交于 2019-11-29 19:02:40
效果图 1、导入 implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar' //TabLayout第三方库gitup地址:https://github.com/H07000223/FlycoTabLayout2、使用xml布局: <!--tl_indicator_color:指示器的颜色--> <!--tl_indicator_height:指示器的高度--> <!--tl_indicator_width:指示器的宽度--> <!--tl_textUnselectColor:Tab未选中时字体的颜色--> <!--tl_textSelectColor:Tab选中时字体的颜色--> <!--tl_textsize:字体大小--> <!--tl_indicator_width_equal_title:设置指示器宽度与文本宽度一致--> <!--tl_tab_space_equal:设置Tab大小等分--> <!--tl_divider_color:分割线的颜色--> <!--tl_divider_width:分割线的宽度--> <com.flyco.tablayout.SlidingTabLayout android:id="@+id/styleChoice_tab" android:layout_width=

过渡高度TA和过渡高度层TL

浪子不回头ぞ 提交于 2019-11-29 16:14:02
过渡高度和 过渡高度层简单的讲,就是飞机在起飞和进近过程中高度(表)基准值转换的一个空间。 这个过渡空间分成上下两个面,离地面近的这个面(下面)我们叫做“ 过渡高度”;离地面远的面(上面)我们叫做“ 过渡高度层”; 过渡高度和过渡 高度层之间,我们叫 “过渡夹层”。 我们知道,为了让所有巡航的飞机有一样的零点高度,我们会把高度表设置为标准气压,就是1013.2百帕或者29.92英寸汞柱,所有的飞行高度以QNE为基 准面。而在飞机 起降过程中,我们的高度表使用的是修正海压高QNH。所以,飞机起飞离场加入航线或脱离航线进场着陆,就需要进行修正 海压高与标准气 压高间的转换, 即 进行基准气压面的调整。为了统一转换的时间,所以设定了 过渡高度和 过渡高度层: 过渡高度TA(Transition Altitude)是以修正海压QNH为基准面在机场区域内划定的一个气压高度,在这个高度(含)以下,所有飞机按修正海压高飞行。 过渡高度层TL(Transition Level)是在 过渡高度以上可以利用的最低飞行高度层(以QNE为基准面的飞行高度),在这个高度(含)以上,所有飞机按标 准气压高飞行。 过渡夹层(Transition Layer)是指过渡高与 过渡高度层之间的空间(即垂直间隔),它随修正海压的变化而变化,但在任何情况下必须在300~600米。 在了解了 过渡高度和 过渡高度层的定义后

「luogu5471」[NOI2019d1t1] 弹跳

ぐ巨炮叔叔 提交于 2019-11-29 15:08:47
题目链接 \(Descriptioin\) : 一个 \(w \times h \ (1 \leq w, h \leq n)\) 的网格上有 \(n \ (1 \leq n \leq 7 \times 10 ^ 4)\) 个整点; 有 \(m \ (m \leq 1.5 \times 10 ^ 5)\) 次连边,每次连边长度为 \(t_i \ (1 \leq t_i \leq 10^4)\) ,以第 \(p_i\) 个整点为起点向坐标满足 \(l_i \leq x \leq r_i, \ d_i \leq y \leq u_i\) 的所有点连边。 求 \(1\) 号点为起点的单元最短路。 \(Sol\) : 因为没有负权边,所以可以用到 \(dijkstra\) 的一个性质:以点 \(u\) 为起点松弛操作之后,到 \(u\) 的最短路就不会该边了。 可以用数据结构来维护矩阵上的点,最短路时不必把边建出来,只需每次找到一个最短路最小的矩阵,并以该矩阵中未被删除的点为起点进行松弛,并把这些点删除即可。 数据结构的选择很多,我写了线段树套 \(set\) 。 时间复杂度 \(O(n\log_2^2n)\) ,空间复杂度 \(O(n \log_2 n)\) 。 \(Source\) : #include <cstdio> #include <cstring> #include