posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

原来vim的复制快捷键是 " +y ,其中+也是要按的,怪不得以前一直不成功

/*

PROG: sort3
ID: 06301031
LANG: C++
*/

#include 
<fstream>
#include 
<iostream>
#include 
<vector>

using namespace std;

int main()
{
    ifstream fin(
"sort3.in");
    ofstream fout(
"sort3.out");
    
int n;
    fin 
>> n;
    vector
<int> nums(n);
    
int numCount[4];
    numCount[
1= numCount[2= numCount[3= 0;
    
for (int i = 0; i < n; i++)
    {
        fin 
>> nums[i];
        numCount[nums[i]]
++;
    }
    numCount[
2+= numCount[1];
    numCount[
3+= numCount[2];
    
int toBeChanged[4][4];
    
for (int i = 1; i <= 3; i++)
        
for (int j = 1; j <= 3; j++)
            toBeChanged[i][j] 
= 0;
    
for (int i = 0; i < n; i++)
    {
        
int sortedNum = 1;
        
for (int j = 1; j < 4; j++)
            
if (i - numCount[j] < 0)
            {
                sortedNum 
= j;
                
break;
            }
        cout 
<< nums[i] << ":" << sortedNum << endl;
        
if (nums[i] != sortedNum)
            toBeChanged[nums[i]][sortedNum]
++;
    }

    
for (int i = 1; i <= 3; i++)
        
for (int j = 1; j <= 3; j++)
            
if (toBeChanged[i][j] != 0)
                cout 
<< i << "," << j << ":" << toBeChanged[i][j] << endl;
    
int triangles = 0;
    
int swaps = 0;
    
for (int i = 1; i <= 3; i++)
        
for (int j = 1; j <= 3; j++)
            
if (toBeChanged[i][j] != 0)
            {
                
int smaller = toBeChanged[i][j];
                
if (toBeChanged[j][i] < smaller)
                    smaller 
= toBeChanged[j][i];
                toBeChanged[i][j] 
-= smaller;
                toBeChanged[j][i] 
-= smaller;
                swaps 
+= smaller;
            }
    
for (int i = 1; i <= 3; i++)
        
for (int j = 1; j <= 3; j++)
            
if (toBeChanged[i][j] != 0)
                triangles 
+= toBeChanged[i][j];
    cout 
<< swaps << endl << triangles << endl;
    swaps 
+= (triangles / 3 * 2);
    fout 
<< swaps << endl;
    
return 0;
}


posted @ 2007-06-11 22:00 ZelluX 阅读(389) | 评论 (0)编辑 收藏

第一个接到的Project啊 ^_^ 挺简单的

1. 映射了一对多关系后需要做查询时碰到问题,翻书发现了个好东西Criterion Query。
Criteria criteria = session.createCriteria(Booking.class);
criteria.add(Expression.ne(
"foregift", Foregift.getInstance(1)));
return criteria.list();
这样就得到了已付押金的订单列表

posted @ 2007-06-11 20:45 ZelluX 阅读(509) | 评论 (0)编辑 收藏

由于复赛只做出一题,所以被安排为单独一队。
Problem A比较简单,模拟,把要改动的坐标点放入一个队列中, 每次处理队列的首个元素。
Problem B先用简单的几何知识转化为着色问题,然后离散化,着色。由于信号的覆盖范围是[0, 1000],在处理边缘的时候有点问题,Wrong Answer了几次,第五次提交总算过了。
然后是Problem F,这题比赛时一直过不了,赛后和其他人交流了下题目理解也没错,一些比较容易错的数据也处理正确了,但就是过不了 =_= 拿到测试数据了再看看吧

就这么进ACM了,暑假留校。

posted @ 2007-06-11 11:39 ZelluX 阅读(270) | 评论 (0)编辑 收藏

from http://gyq.czszg.net/items/rxk06/words-color.htm

对于做网页的初学者可能更习惯于使用一些漂亮的图片作为自己网页的背景,但浏览一
下大型的商业网站,你会发现他们更多运用的是白色、蓝色、黄色等,使得网页显得典
雅,大方和温馨。更重要的是,这样可以大大加快浏览者打开网页的速度。

  一般来说,网页的背景色应该柔和一些、素一些、淡一些,再配上深色的文字,使
人看起来自然、舒畅。而为了追求醒目的视觉效果,可以为标题使用较深的颜色。下面
是我做网页和浏览别人的网页时,对网页背景色和文字色彩搭配积累的经验,这些颜色
可以做正文的底色,也可以做标题的底色,再搭配不同的字体,一定会有不错的效果,
希望对大家在制作网页时有用。

   BgcolorΚ″#F1FAFA″---做正文的背景色好,淡雅

   BgcolorΚ″#E8FFE8″---做标题的背景色较好

   BgcolorΚ″#E8E8FF″---做正文的背景色较好,文字颜色配黑色

BgcolorΚ″#8080C0″---上配黄色白色文字较好
  
BgcolorΚ″#E8D098″---上配浅蓝色或蓝色文字较好

   BgcolorΚ″#EFEFDA″---上配浅蓝色或红色文字较好

   BgcolorΚ″#F2F1D7″---配黑色文字素雅,如果是红色则显得醒目

   BgcolorΚ″#336699″---配白色文字好看些

   BgcolorΚ″#6699CC″---配白色文字好看些,可以做标题

   BgcolorΚ″#66CCCC″---配白色文字好看些,可以做标题

   BgcolorΚ″#B45B3E″---配白色文字好看些,可以做标题

   BgcolorΚ″#479AC7″---配白色文字好看些,可以做标题

   BgcolorΚ″#00B271″---配白色文字好看些,可以做标题

   BgcolorΚ″#FBFBEA″---配黑色文字比较好看,一般作为正文

   BgcolorΚ″#D5F3F4″---配黑色文字比较好看,一般作为正文

   BgcolorΚ″#D7FFF0″---配黑色文字比较好看,一般作为正文

   BgcolorΚ″#F0DAD2″---配黑色文字比较好看,一般作为正文

   BgcolorΚ″#DDF3FF″---配黑色文字比较好看,一般作为正文

  浅绿色底配黑色文字,或白色底配蓝色文字都很醒目,但前者突出背景,后者突出
文字。红色底配白色文字,比较深的底色配黄色文字显得非常有效果。

posted @ 2007-06-11 11:34 ZelluX 阅读(712) | 评论 (0)编辑 收藏

看了bbs上转载自cu的一篇文章,做了一些修改

Ubuntu 7.04


1. 匿名服务器的连接(独立的服务器)
在/etc/vsftpd.conf(原文中是/etc/vsftpd/vsftpd.conf ) 配置文件中添加如下几项:
Anonymous_enable=yes (允许匿名登陆)
Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
Local_umask=022 (FTP上本地的文件权限,默认是077)
Connect_form_port_20=yes (启用FTP数据端口的数据连接)*
Xferlog_enable=yes (激活上传和下传的日志)
Xferlog_std_format=yes (使用标准的日志格式)
Ftpd_banner=XXXXX (欢迎信息)
Pam_service_name=vsftpd (验证方式)*
Listen=yes (独立的VSFTPD服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,
是属于FTP的基本选项

2. 开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

3. 开启匿名服务器下传的权限
在配置文件中添加如下信息即可:
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去

4.普通用户FTP服务器的连接(独立服务器)
在配置文件中添加如下信息即可:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传

5. 用户登陆限制进其它的目录,只能进它的主目录
设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中
加帐号即可

6. 限制本地用户访问FTP
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆

7. 安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)

8. 查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号


--
我所做的一切,都是出于一些我自己都无法完全解释的莫名其妙的原因。
我的那些解释都无法让我自己信服。
※ 来源:·日月光华 bbs.fudan.edu.cn·[FROM: 221.137.177.92]

posted @ 2007-06-08 15:57 ZelluX 阅读(252) | 评论 (0)编辑 收藏

发信人: leemars (03CS·微笑·发光), 信区: Unix
标  题: Re: rrdw 如何在命令行下操作文件名中带空格的文件?
发信站: 日月光华 (2007年06月06日21:16:23 星期三), 站内信件

用双引号引起来


发信人: marcus (Marcus@Fresh_Blood|吴英德勋爵-马凱公爵), 信区: Unix
标  题: Re: rrdw 如何在命令行下操作文件名中带空格的文件?
发信站: 日月光华 (2007年06月06日21:18:14 星期三), 站内信


\blank
可以么?

发信人: medivhet (上局沪段,蓝色永不褪去!), 信区: Unix
标  题: Re: rrdw 如何在命令行下操作文件名中带空格的文件?
发信站: 日月光华 (2007年06月06日21:18:29 星期三), 站内信件

还不如\ (一个空格)...

posted @ 2007-06-06 21:59 ZelluX 阅读(2360) | 评论 (1)编辑 收藏

发信人: DragonZhao (狂抽猛干·抽时间干事业), 信区: Algorithm
标 题: 一个问题
发信站: 日月光华 (2007年05月21日01:26:41 星期一), 站内信件


已知存在二叉树节点结构node{node* left; node* right};,现在给出树的根节点node*
root与自然数int m,要求搜索此树中节点数为m的子树的数量。如何做效率最高?

发信人: wshxzt (WKFB2008), 信区: Algorithm
标 题: Re: 一个问题
发信站: 日月光华 (2007年05月21日01:28:34 星期一), 站内信件

树的动态规划

发信人: lovebei (0124·皮皮和卡卡), 信区: Algorithm
标 题: Re: 一个问题
发信站: 日月光华 (2007年06月06日13:36:43 星期三), 站内信件


以i为根节点 节点数为j的子树个数

p[i][j]=∑{p[left(i)][k]*p[right(i)][j-k-1]} 0<=k<=j-1

发信人: Jeru (柠檬树), 信区: Algorithm
标 题: Re: 一个问题
发信站: 日月光华 (2007年06月06日13:59:36 星期三), 站内信件

没错的。不过硬要说是动态规划也没错,这个概念太宽泛了。


发信人: jesseg (Jesse : 我是花朵,祖国的希望!), 信区: Algorithm
标 题: Re: 一个问题
发信站: 日月光华 (2007年06月06日16:12:04 星期三)

其实这不至于算dp啦,dp的好处没发挥出来,呵呵,树状的搜索不用dp的,要图状的时候
dp才能省计算。

posted @ 2007-06-06 17:40 ZelluX 阅读(614) | 评论 (0)编辑 收藏

由于体力、实力、发挥等各方面因素,最终还是没把会做的题做出来。

最后凭借微弱的时间优势拿了个三等奖。

赛前也挺有压力的,怕夸下海口最后连个奖都捞不到。

接下来就是好好搞ACM,看Computer System, A Programmer's Perspective,也要兼顾高数和英语,当然也不能让其他课挂了。

恩,总算结束了,本不应该这么有压力的,太自信了吧。

posted @ 2007-06-06 17:33 ZelluX 阅读(304) | 评论 (0)编辑 收藏

用了STL::map,很容易过了,前面用Java和朴素的C++都超时了
不过开始提交的时候题目没看清,没有重复的号码应该输出No duplicates.的
#include <iostream>
#include 
<string>
#include 
<map>

using namespace std;

string decode(const string& origin);

long main() {
    
long n;
    cin 
>> n;
    map
<stringlong> phones;
    
string origin;
    map
<stringlong>::iterator iter;
    
for (long i=0; i<n; i++{
        cin 
>> origin;
        
string decoded = decode(origin);
        iter 
= phones.find(decoded);
        
if (iter == phones.end()) {
            phones.insert(pair
<stringlong>(decoded, 1));
        }
 else {
            iter
->second++;
        }

    }


    
bool flag = true;
    
for (iter = phones.begin(); iter != phones.end(); iter++{
        
if (iter->second <= 1)
            
continue;
        cout 
<< iter->first.substr(03<< '-' << iter->first.substr(38)
             
<< ' ' << iter->second << endl;
        flag 
= false;
    }

    
if (flag)
        cout 
<< "No duplicates." << endl;
    
return 0;
}


string decode(const string& origin) {
    
string decoded;
    
for (long i = 0; i < origin.length(); i++{
        
switch (origin[i]) {
            
case 'A'case 'B'case 'C'case '2':
                decoded 
+= '2';
                
break;
            
case 'D'case 'E'case 'F'case '3':
                decoded 
+= '3';
                
break;
            
case 'G'case 'H'case 'I'case '4':
                decoded 
+= '4';
                
break;
            
case 'J'case 'K'case 'L'case '5':
                decoded 
+= '5';
                
break;
            
case 'M'case 'N'case 'O'case '6':
                decoded 
+= '6';
                
break;
            
case 'P'case 'R'case 'S'case '7':
                decoded 
+= '7';
                
break;
            
case 'T'case 'U'case 'V'case '8':
                decoded 
+= '8';
                
break;
            
case 'W'case 'X'case 'Y'case '9':
                decoded 
+= '9';
                
break;
            
case '1'case '0':
                decoded 
+= origin[i];
                
break;
        }

    }

    
return decoded;
}

posted @ 2007-06-03 21:54 ZelluX 阅读(1239) | 评论 (3)编辑 收藏

官方的一个很赞的做法,Divide and Conquer,核心部分:

void
genfrac(
int n1, int d1, int n2, int d2)
{
    
if(d1+d2 > n)    /* cut off recursion */
        
return;

    genfrac(n1,d1, n1
+n2,d1+d2);
    fprintf(fout, 
"%d/%d\n", n1+n2, d1+d2);
    genfrac(n1
+n2,d1+d2, n2,d2);
}


最朴素的做法

/*
PROG: frac1
ID: 06301031
LANG: C++
*/


#include 
<iostream>
#include 
<fstream>
#include 
<algorithm>
#include 
<vector>
#include 
<string>

using namespace std;

class Fraction {
    
int gcd(int x, int y);
public:
    
int numerator;
    
int denominator;
    Fraction(
int pa, int pb);
    
bool reductable();
}
;

bool compareFrac(const Fraction& f1, const Fraction& f2);
int main() {
    ifstream fin(
"frac1.in");
    ofstream fout(
"frac1.out");
    
int n;
    fin 
>> n;
    vector
<Fraction> fracs;
    
int i, j;
    fracs.push_back(Fraction(
01));
    
for (i = 1; i <= n; i++{
        
for (j = 1; j <= i; j++{
            Fraction frac(j, i);
            
if (!frac.reductable()) {
                fracs.push_back(frac);
            }

        }

    }


    sort(fracs.begin(), fracs.end(), compareFrac);
    vector
<Fraction>::iterator iter;
    
for (iter = fracs.begin(); iter != fracs.end(); iter++{
        fout 
<< iter->numerator << '/' << iter->denominator << endl;
    }

    
return 0;
}


Fraction::Fraction(
int pa, int pb) {
    numerator 
= pa;
    denominator 
= pb;
}


bool Fraction::reductable() {
    
return (gcd(numerator, denominator) != 1);
}


int Fraction::gcd(int x, int y) {
    
if (x < y) swap(x, y);
    
if (x % y == 0return y;
    
return gcd(y, x % y);
}


bool compareFrac(const Fraction& f1, const Fraction& f2) {
    
return (long)f1.numerator * (long)f2.denominator < (long)f1.denominator * (long)f2.numerator;
}

 

posted @ 2007-06-03 21:13 ZelluX 阅读(278) | 评论 (0)编辑 收藏

仅列出标题
共39页: First 上一页 22 23 24 25 26 27 28 29 30 下一页 Last