MENU

程序

笔记:使用qsort进行多字段排序

有一段时间没写东西了。

OJ上,评论里都说这是一个水题。事实上,确实也不难。这是NOIP2009普及组的第二题,普及组,第二题,你觉得呢。题目描述摘录如下:

世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市区对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第$m\times 150%$(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

【输入】 输入文件名为score.in
第一行,两个整数nm($5\leq n\leq 5000$,$3\leq m\leq n$),中间用一个空格隔开,其中n表示报名参加笔试的选手总数,m表示计划录取的志愿者人数。输入数据保证$m\times 150%$向下取整后小于等于n。第二行到第$n+1$行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k($1000\leq k\leq 9999$)和该选手的笔试成绩s($1\leq s\leq 100$)。数据保证选手的报名号各不相同。
【输出】 输出文件 score.out
第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。
从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。

Read More

新EPDB下载及使用说明

去年我写了一个名为EPDB的MySQL数据库类,当时也附带了这么一篇文章。这之后也做出了一两次调整,总的来说还是比较好使的,自己常用。这两天又把它翻了出来,改造了一下。主要调整:改用MySQLi扩展;部分逻辑修改。

类及示例代码下载

至于做出了哪些调整,不是本文的主要内容。但是注意一点:修改后使用上和原来还是有一些差异的,主要体现在程序完全信任程序员的代码,不会自己检查潜在的危险操作。这里对使用方法做一个说明。

Read More

使用WinForm实现无边框窗口

虽说新项目还没有提上议程,甚至第一次策划会议也一直没有召开,但是准备工作多多少少是有一点点了。项目难度最大的,就是开发桌面应用程序。这几乎是一个大家都没有多少了解的问题,所以下手比较困难。2013年初我们从TFDi Design处采购了smartCARS,同年7月Hans使用Visual Basic .Net开发了iTracker 2.0,这大概是我们选用.Net的原因吧。

2013年底(真正的年底),我开始使用Visual Studio 2013了。与Hans,不一样的是,我使用的是C#。我长期使用各种类C的程序语言,所以C#很快就能上手了。期间写过一些测试性的东西,写过一个即时通讯(上一篇日志提到过,服务端使用PHP with Swoole Extension)。VS的控件样式实话实说是很难看的;较新的VS,提供一些Flat的属性,磕磕巴巴地出来一些效果。如下图:

当然,我要寻求更好的解决方案。我找到了一篇文章Designing GitHub for Windows。自己向来非常认同GitHub的理念,便也想使用WPF尝试尝试。尝试的过程很艰辛,毕竟接触微软家的VS才一个月,Blend更是从来没有上过手。折腾了一个晚上,最后觉得太困难,还是暂时放弃了。我将目光转向WinForm。WinForm开发难度小得多,我刚开始使用VS便能顺利写出诸如“计算器”之类的小玩意儿;此时我甚至已有使用WinForm实现无边框窗口的想法。尝试了一下,确实可以。接下来我讲一讲我的做法。

Read More

基于php框架的多国语言思路

不难知道,想使网站多国语言化,最简单的方法便是直接调用在线翻译。傻子都知道这种做法是做了等于没做,体验一定是非常不佳的。直接机翻,不可行。

在网上查了一下,最正统的解决方法是使用gettext扩展,然而我没有接触过,这里就不提它了。本文中的方案,我们从一个请求开始。

请求执行到调度器之前,使用一段代码判断cookie中有无语言项并判断其合法性(是否有这个语言)。若cookie中无而已登录账户,则将本账户指定的语言写入cookie。若仍无,跳转至语言选择页面。有的情况下,将语种写入常量LANG。程序继续执行到控制器,View层模版均需为不同的语言编写不同文件,如某路径为"Tpl/cn/index_index.tpl"。动态输出的内容也需要处理。为了避免空间复杂度太大,我们为每个控制器(必要时为某些方法)单独编写语言文件。形如:

<?php
return array(
    'key'=>'value'
);

Read More