WTF


All random things that I may have cared at certain point. I also have moved posts of my old blog, blog.passer-byb.com, to this place, just to not discard my naiveness and happiness as a young college kid.

相当多的时间,我们照出的照片会有灰蒙蒙的感觉,缺乏足够多的细节。于是,适当的后期,用以还原当时人眼所见的场景,便是一个不错的选择。对于画面色彩亮度的调节,最有效的方法便是利用色阶曲线来调整。 右图是一张下午4点到5点左右,逆光拍摄的小孩。整幅图感觉十分明亮且朦胧。原有的逆光下的温暖的阳光显得过于苍白,于是我们可以通过一些简单的手段来恢复图片的细节,让图片不至于过于苍白。 博主用的是GIMP,一个开源的图片处理软件。如果你不喜欢用盗版软件,又十分希望得到近似Photoshop的功能,GIMP是个不错的选择。Linux和OSX下都有相应地版本。对于一个免费软件来说,算是很有良心的了。 开始修改。在菜单栏中选择:color->curve,就会出现左下图所示的对话框。在图片的背景下可以看到原图的亮度分布直方图。这个直方图的横轴表示亮度值,纵轴表示在这个亮度下,图中共有多少这样的点。图中明显可以看到,大多数像素都处在图片的右侧,因此图片的整体亮度偏高。我们可以通过拖拽,得到如中下图所示的曲线。接着,我们选定图中主体,小正太的选区,并再次进入curve对话框,将曲线调整至右下图所示。        于是完成的图片就会像下图一样: 或者不要这么饱和的:


Google Adsense和自定义搜索(CSE, Custom Search Engine)是两项独立的服务。Adsense的主要功能是为站点提供广告内容的发布,并获取相应的点击收益。CSE则是为自己的站点制定专属的搜索引擎。在免费的CSE中,会展示相应的广告和推广,因此,CSE本身不光可以提高站点的易用性,更能为站点带来更多的收入。 整合已有的CSE和Adsense: 在cse的dashboard中,找到Edit search engine >> Setup >> Make money,就可以将Google Adsense的账号和CSE进行关联。关联之后,更新下之前所用的CSE代码,确保两者关联成功。 只有Adsense: 在Adsense的dashboard,找到My ads >> Search,在这里点击New custom search engine,然后按照提示就可以得到自己的Search Engine了。如果需要对CSE本身进行更多的设置,可以选择无视Adsense Dashboard给出的代码,直接去到CSE的dashboard中,获取代码。在CSE获取的代码并不会影响收益,同时获得对CSE更大自由的设置。


经过今天一天的努力,终于赶在光棍节结束之前完成了数据迁移,以及新站的部署。新站暂未增加广告,以及侧边栏功能。稍后会陆续更新出来。新站的核心代码全面更换,提供了主题编辑功能,可自行编辑不同主题,并用核心代码解析并应用到其他站。新站的最大改进在于增加了微博连接功能,稍后会提供微博分享等各种功能。 稍后会发出新站的代码以及主题编辑说明,使用者只需有一定的html基础,按照说明就能顺利完成基本主题模板的构建。同时也将提供一些高级的个性定制。功能将会逐步更新。 为了庆祝神棍节的到来,决定将网站版本号定为GP0.1.11。GP全名:GP is a Publisher。稍后放出代码。


题目:http://acm.scs.bupt.cn/onlinejudge/showproblem.php?problem_id=1095 题意:这题要在一个无向正权图上找单源最短路,找到目标点后,还要求出到达这个点的最短路径的数量。有重边。 解法:dijkstra+DP。正权图找最短路首先想到dijkstra,然后考虑如何获得最短路数量和怎样处理重边。因为两点间只需一条最的路径就够了,因此记录图的时候可以考虑忽略其他权比较高的路径,只记录最短的那条。并且增加一个二元数组记录相邻点间的最短路径条数。此外有数组d记录起点到各点的最短距离,count记录到达这点的最短路径数。在dijkstra过程中,加入新节点后松弛没找到最短路的点的过程中,考虑如果松弛过程中d[i]==d[pos]+map[pos][i],则count[i]+=count[pos]*p[pos][i](此处之前错误写成了count[i]++,-_-!),如果d[i]>d[pos]+map[pos][i],则count[i]=count[pos]*p[pos][i]。最后输出d[b],count[b]就行,注意各数组初始化,并且注意是两组输出之间有空行,最后一组输出后不用空行,仅换行,这里我也悲剧了一次。


问:随机在0到1之间取数,当第n次取到的数小于等于前n-1次取到的数中的任何一个时停止,求n的期望。 答案:e。解释:另Pn为停止时次数为n的概率,则这个E(n)=1*P1+2*P2+3*P3+…+n*Pn+…。下面将这组数分组,化为:E(n)=(P1+P2+P3+…)+(P2+P3+P4+…)+(P3+P4+P5+…) …。这样就得到了E(n)=P(n>=1)+P(n>=2)+P(n>=3)+…。考虑到前两项的值应为1,因为无论如何游戏进行的次数不可能小于二次。而P(n>=3)=1/2!。原因是若n>=3则前两个数必须单调递减,因此前两个数排列方式有2!种,因而概率为1/2!。n>=k时同理,若n>=k,则前k-1项必须单调递减,因此概率为1/(k-1)!。因此E(n)=1+1/1!+1/2!+1/3!+…=e。这个神奇的结论就得到了,貌似原题叙述的停止条件是第n个数小于前n-1个数中的任何一个,但如果这样叙述,前k个数单调的可能情况就不是1因此概率也就不数1/k!。因而改成小于等于。原文地址是:http://mindyourdecisions.com/blog/2010/11/16/an-interesting-probability-game/


题目:http://poj.org/problem?id=1753题意:在一个4*4的方格阵里,每格里有一个一面白一面黑的棋子,初始状态由输入给出。游戏开始后,每次选择16格中的任何一个,然后将它以及它周围紧相邻的4个棋子翻转(超出边缘的不计)。游戏的目的是将所有色块翻成同一种颜色。问能不能达到游戏目的,如果能输出最少需要的翻拍次数。解法:bfs枚举每种情况。BYR论坛算法版给出的分类是枚举,但这题枚举要采取广搜策略。另外,注意到一共只有16个格,因此可以用一个16位的int存储状态,这样内存就不会超。存储每个状态是否被访问过可以直接用一个2^16个元素的flag数组完成。模拟翻牌过程用位运算即可。代码: Source CodeProblem: 1753 User: gp2593Memory: 1120K Time: 32MSLanguage: GCC Result: Accepted * Source Code #include<stdio.h> #include<stdlib.h> typedef struct node { int box; int time; int max; }NODE; turn(int bo,int positio) { int k,t; t=1<<positio; bo=bo^t; if(positio+4<=15) { k=t<<4; bo=bo^k; } if(positio-4>=0) { k=t>>4; bo=bo^k; } if(positio%4!=0) { k=t>>1; bo=bo^k; } if(positio%4!=3) { k=t<<1; bo=bo^k; […]


这两天逛荡在墙外面觉着挺爽,就顺手把twitter的东西给加到博客上了,虽然这东西加上了也应该没人用吧。近况是在实验室实习感觉不错,可以做点喜欢的事情,不用被人强迫。有空了写个翻墙的东西吧,我想这种东西应该很受欢迎的说。


这是一张无法正常缩放的图片,因为目前主流的图像处理软件以及浏览器的图形缩放算法都是有问题的。包括photoshop,gimp等试用广泛的软件都不能正常将这张图缩放到50%%u4E00旦缩放到50%%u5F97到的将是一张全灰的图像。而这张图即使不放大,在不同角度观看也会有奇妙的效果。我是在这里找到的这个问题。文章中分析了原因,其中之一是:在将图片缩放50%%uFF0C有些软件会选取没单位4个像素之一为新的像素,这样在一个2*2的单元就缩放成了一个像素,从而实现缩放,但这显然是错误的。另外一些算法会根据4个点的平均色度灰度决定新的像素的色度灰度,但决定过程中采用的是线性变换。如,(4+8+12+16)/4=10。而在亮度上缩放应采用亮度的能量表示来缩放,也就是二次方。目前主要的错误都来源于此。有兴趣可以下载这个包,自己制作这种图片。并用自己的图片编辑器测试。


昨天开始感冒,浑身无力,感觉不爽。今天写了两个,第一个是单调子序列,就不贴了。第二个是这个DP。题目:http://acm.scs.bupt.cn/onlinejudge/showproblem.php?problem_id=1094题目意思是求一个序列,这个序列满足三个一组,并且每组有一个属性m,这个m=min((a-b)^2+(b-c)^2+(a-c)^2),其中a,b,c为序列中这组数的值。求得的序列是在N个元素的序列中的K组,使得这K组的m值和最小。解法:DP。考虑到如果abc顺序排列,则m只能取得(a-b)^2或(b-c)^2之一。类似01背包,将每个数当作每个物品,这个物品重量是1。因为决定一组数的m值尽取决于两个元素,因此第三个元素可以在没被选择的数里任意选择。状态转移:dp[i][j]=min(dp[i-2][j-1]+(a[i]+a[i-1])^2,dp[i-1][j-1])。这个状态转移的意思是,当考察了a中前i项并且最多组k队时的最小m值。这里实际上是在决定将a[i],a[i-1]加入组队,还是保持不变。因为这里每个人的重量为1,而最大容量相当于2*K因此,一定可以将背包装满。因此可以得到K组人。代码:点击下载

CodePhoto.WTF © 2025