落絮飞雁

顺流而下,把梦做完

POJ1000:A+B Problem

Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 329741 Accepted: 182697

Description

Calculate a+b
Input

Two integer a,b (0Output

Output a+b
Sample Input

1 2
Sample Output

3

#include 

int main()
{
    int a,b;
    scanf("%d %d",&a, &b);
    printf("%dn",a+b);
    return 0;
}

POJ1046:Color Me Less

Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 30310 Accepted: 14732

Description

A color reduction is a mapping from a set of discrete colors to a smaller one. The solution to this problem requires that you perform just such a mapping in a standard twenty-four bit RGB color space. The input consists of a target set of sixteen RGB color values, and a collection of arbitrary RGB colors to be mapped to their closest color in the target set. For our purposes, an RGB color is defined as an ordered triple (R,G,B) where each value of the triple is an integer from 0 to 255. The distance between two colors is defined as the Euclidean distance between two three-dimensional points. That is, given two colors (R1,G1,B1) and (R2,G2,B2), their distance D is given by the equation

Input

The input is a list of RGB colors, one color per line, specified as three integers from 0 to 255 delimited by a single space. The first sixteen colors form the target set of colors to which the remaining colors will be mapped. The input is terminated by a line containing three -1 values.
Output

For each color to be mapped, output the color and its nearest color from the target set.

If there are more than one color with the same smallest distance, please output the color given first in the color set.
Sample Input

0 0 0
255 255 255
0 0 1
1 1 1
128 0 0
0 128 0
128 128 0
0 0 128
126 168 9
35 86 34
133 41 193
128 0 128
0 128 128
128 128 128
255 0 0
0 1 0
0 0 0
255 255 255
253 254 255
77 79 134
81 218 0
-1 -1 -1
Sample Output

(0,0,0) maps to (0,0,0)
(255,255,255) maps to (255,255,255)
(253,254,255) maps to (255,255,255)
(77,79,134) maps to (128,128,128)
(81,218,0) maps to (126,168,9)
放上AC代码

#include
using namespace std;
#define n 1000
int main()
{
	int r[n],g[n],b[n],flag=0;
	int d=0;
	int i=0,j=0,k=0;
	int temp;
	while (cin>>r[i]>>g[i]>>b[i],r[i]!=-1&&g[i]!=-1&&b[i]!=-1)
	{
		j=i;
		if(j>=16)
		{
			d=(r[j]-r[0])*(r[j]-r[0])+(g[j]-g[0])*(g[j]-g[0])+(b[j]-b[0])*(b[j]-b[0]);
			for(flag=k=0;ktemp)
				{
					d=temp;
					flag=k;
				}
			}
			cout

不能帮硕士哥哥看代码诶,好悲伤呢......

最美Linux——Elementary OS 初体验

由于上周不小心把分区表给删了。重新恢复Windows觉得慢;重装Windows又觉得用的不习惯。索性还是装个Linux吧……之前一直在做Win8+Ubuntu的双系统。导致我现在一想到Linux,就情不自禁的往Ubuntu身上凑。不过Ubuntu的界面真的不喜欢。加之有时候稍微一折腾,Ubuntu同学就开始崩溃罢工。所以这次就换个OS试试好了~

昨天在IT之家上看到ElementaryOS发行了第一个测试版。号称是最美的Linux操作系统(虽然还是基于Ubuntu 12.10开发的)。今天果断下载,官网提供了直传和种子。但是直传的速度不敢恭维。可以在国内网盘搜iso下载。

开始折腾,我是用U盘安装的。在开始分区的时候发现,挂载好一个分区之后就不能继续挂载了?!我先选择的/boot,挂载好之后神奇的发现其他的挂载点不能添加了。安装程序提示没有挂载主分区。Orz……索性根据引导让它自动分配吧。结果它把握预留给recovery的分区给占了。还十分吝啬的只给了2.4G的空间。导致我安装完Chrome之后就什么都不能做了……

无奈重装,手动分配了一个/挂载点。想到刚刚升级了内存,就不加SWAP分区了(想加加不上啊!)。开始了ElementaryOS之旅。

不得不说,这个OS美化的的确很漂亮,处处都有OS X的影子……用起来还是很舒服的……只可惜,N卡驱动照例识别不出来了。托盘区有安装驱动的提示,确认-给权限-安装-重启……然后,卡在启动界面了,提示符是可用的,但是图形界面一直加载失败。折腾了一番无果,再次重装了……

这次还是乖乖的禁用掉N卡吧。n卡的痛-ubuntu下禁用独立显卡。开始是修改blacklist黑名单,但是看了一下N卡状态是(ref a1),网上说这样子就已经禁用了。不放心,又用了bumblebee。重启下之后转台是(ref ff),彻底放心了。写到这里又摸了摸出风口,凉凉的~

公司网络对PPTP支持不好,又装了L2TP,VPN用起~

顺便把微软雅黑“接过来”,“我能吞下玻璃而不伤身体”这句话印象太深了。

 

放上几张图吧:

 

就这样吧,感觉这个Linux体验不错,值得一试。只是国内没有对应的论坛,估计会比较小众。

N卡的痛——Ubuntu下禁用独立显卡

转载自:推酷网

这篇文章实例演示Ubuntu13.04/13.10下,双显卡笔记本(intel+Nvidia)如何关闭独立显卡NVIDIA,用到的工具是bumblebee,操作非常简单,关闭独立显卡后,可以使用optirun命令调用它。

安装bumblebee

Ubuntu13.04在安装好后,默认使用的是Intel集显,Nvidia卡除了在那里发热以外,没有任何作用,这一步我们将使用bumblebee来关闭Nvidia卡,等到需要的时候再调用它。

请注意bumblebee中包含了Nvidia卡驱动,请不要再自行安装驱动。

安装bumblebee

/*打开一个终端(ctrl+alt+t),输入下面的命令*/
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

/*安装完成后重启一次*/
sudo reboot

/*重启后使用下面命令查看N卡是否已经关闭*/
lspci | grep VGA

/*如果安装无误,会到下面两行中独立显卡最后会显示(rev ff),说明成功关闭了N卡*/
00:02.0 VGA compatible controller: Intel Corporation ... Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation ... (rev ff)

为ElementaryOS添加右键“在此处打开终端”

ElementaryOS默认的文件浏览器是自己的Pantheon Files,nautilus的右键打开终端大家是不是很怀念呢?那就自己在右键菜单加一个吧。
0,用你喜欢的编辑器创建一个文件
sudo scratch-text-editor /usr/share/contractor/terminal.contract//scratch打开
或者
sudo subl /usr/share/contractor/terminal.contract//sublime-text 打开
填入以下内容
[Contractor Entry]
Name=此处打开终端
Ico n=terminal
Descriptio n=此处打开终端
MimeType=inode;application/x-sh;application/x-executable;
Exec=pantheon-terminal -d %U
Gettext-Domain=pantheon-terminal
OK,搞定。

转载自:http://www.linuxeden.com/html/softuse/20130824/142847.html

HDOJ2037:今年暑假不AC

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 27554 Accepted Submission(s): 14558
Problem Description
“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%…”

确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)

Input
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。

Output
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。

Sample Input
12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
0

Sample Output
5

动态规划+贪心,一开始想的太简单了。根本没有考虑到贪心。
放上一开始的Wa代码:

#include
int main()
{
	int t[100][2],num,n,ni,nii,time,s;
	scanf("%d",&n);
	for(ni=0;ni

放上一段比较简单的代码吧,根据节目时间长短来排序。然后依次观看时间最短的节目。(WA代码)

#include
int main()
{
	int st[100], end[100];
	int n, a, b;
	while (scanf("%d", &n) && n != 0)
	{
		for (int i = 0; iend[j])按后面排好  交换
			if (end[i]>end[j])
			{
				a = end[i];
				end[i] = end[j];
				end[j] = a;
				b = st[i];
				st[i] = st[j];
				st[j] = b;
				// 再接着开始排列
			}
		}
		int sum = 0, max = 0;
		for (int i = 0; i= max)
		{
			sum++;
			max = end[i];
		}
		printf("%dn", sum);
	}
	return 0;
}

放上已经AC的C++代码。不是我写的。

#include
#include
#include
#define MAX 1000
using namespace std;
pair p[MAX];
int main()
{
	int n;
	int s, e;
	while (scanf("%d", &n)>0 && n)
	{
		for (int i = 0; i
	

无脑青年修复小黑分区表的故事

周六,早上,醒了,赖床。

打开移动硬盘,摸索着翻开平板。发现硬盘里的数据没了。打开盘符,空空如也。
下床开电脑,连上硬盘。看到是分区表的问题,果断地开了DiskGemius,重写分区表。鼠标一点,啪,蓝屏了。
报错,自检,重启。开不了机了……
没错,2B的我直接把小黑的分区表重写了!!
整个人立马就清醒了。大早上在阳台上裸体看着报错代码。。。
无奈手头没有Pe盘,只好先找个网吧了。
无奈早早的起床了,出门,找网吧。想了想印象中附近好像没有什么网吧。度娘说的那些网吧都不在了。无奈只能凭感觉找。
于是乎,我来到了快餐店。

解决过温饱问题之后,我决定骑公共自行车找,最终发现了新丰上面有家网鱼网咖。唏嘘一下这网吧格调好高…不过配置不错,机械键盘+苹果显示器+光纤。没来得及测速,不过下载PE工具箱大概在7Mb/s左右。我仿佛找到下载东西的好去处了。这么算下来,价格也算划算。
回去开始折腾,重建分区表之后,UEFI的那些隐藏分区都显示出来了…只能用普通模式进入心痛。不折腾不舒服。半小时之后,还只是大体了解了一下UEFI的启动原理。要修复还是好麻烦。
突然想起,刚入手小黑的之后曾经备份了分区表。不过现在的分区又跟之前不同。恢复下,c盘变成了raw格式,怎么修复都无济于事。查资料,各种方法试过无效,chkdsk也是浪费时间。看到有一篇帖子,楼主通过咨询DiakGenius的工程师(免费)解决了问题。于是就打了几个电话,没人接。
索性备份了一下C盘。重写,没用。最后搜索了分区。找到了c盘和d盘,c盘依旧是raw。磁盘管理器删+DiskGenius找回的方法也不行。无奈了。
最后是直接DiskGenius删除+磁盘管理器新建分区并格式化,再用DiskGenius恢复早上备份的C盘解决问题。代价:UEFI文件在新建分区的过程中被彻底毁坏(目测)。

经验教训:
早上最好不要碰电脑
手头一定要有维护工具
不要用压缩卷的方法来分区
经常备份分区表
故障发生后,所有分区最好都备份下。如果早上我同时备份了UEFI的两个分区,可能现在就可以完美恢复了。

折腾了一天,睡了。

HDOJ2043:密码

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 29908 Accepted Submission(s): 12022
Problem Description

网上流传一句话:”常在网上飘啊,哪能不挨刀啊~”。其实要想能安安心心地上网其实也不难,学点安全知识就可以。

首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:

(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。

这四个字符类别分别为:
1.大写字母:A,B,C…Z;
2.小写字母:a,b,c…z;
3.数字:0,1,2…9;
4.特殊符号:~,!,@,#,$,%,^;

给你一个密码,你的任务就是判断它是不是一个安全的密码。

Input
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。

Output
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。

Sample Input
3
a1b2c3d4
Linle@ACM
^~^@^@!%

Sample Output
NO
YES
NO

先发一下代码:

#include
#include
int main()
{
	int n, ni, l;
	int q, w, e, r;
	char a[50];
	scanf("%d", &n);
	getchar();
	while (n--)
	{
		memset(a, 0, sizeof(a));
		q = w = e = r = 0;
		gets(a);
		ni = l= strlen(a);
		ni--;
		while (a[ni]!=' ')
		{
			if (a[ni] >= 65 && a[ni] = 97 && a[ni] = 48 && a[ni] = 3&&l>=8&&l

WA的原因是没有判断/0结束标志,数组搜索出了问题。是一道水题。WA了4次……

写写我折腾的路由器

入坑还要从上学期说起。

由于校区只有毫无性价比电信宽带覆盖(据说最近被曝光的很厉害),所以只好用CMCC的wifi将就了一学年。从淘宝上可以方便的买到一枚账号,大概在一元每天左右的样子。但是,问题来了。账号只能一个终端使用,就是说,晚上如果我在玩电脑,要是想更新个APP或者是视频聊天什么的就彻底别想了。而且,WIFi的信号很不稳定,经常是用几分钟就会断线。基于这个,就想用路由器来做个中继,一来可以加强信号;二来也可以让手机平板同时上网。(所有设备处于同一内网的好处我就不说了)。

因为手头有一个路由器,因此想用中继模式设置好直接扔在寝室门口就可以了。但是无论怎么调试都没有用,还让另一个室友不能上网了(也是用的CMCC)。详见这篇:如何用路由器中继CMCC和Chinanet信号。后话是:速度没有提升多少,倒是帮我建立了最基本的内网。放张拆箱的时候拍的图:

 

内网建好了,之后开始喜欢上了NAS,仿佛我有下载不完的东西,存储不完的资料,先是把戴尔刷上了FreeNAS。后来又在指导下入了另一块路由器:著名的RG-100a。开始折腾操作系统,等等。在外加硬盘+100a的情况下算是建起了NAS,可以躺在床上看看视频什么的。虽然到现在下载的功能还是没有弄明白,安装的transmission到现在没下载到一个字节的数据。

拆过几次,一次是为了加强散热,往里面加了铝片;还有就是刷机(失败)需要。能坚持到现在也蛮厉害的。

放张拆机图:

之后就迎来了学期末。换校区,两个路由都被我打包进了箱子,此刻安安静静的躺在下沙。而我,随身带着一个迷你路由,来到萧山。在住处,松哥贡献出了他的宽带。我可以把路由接上。慢慢的,四个人都用起了这个WIFI,六七个设备同时访问,这货也就难免会有罢工的时候。又因为没有Qos,有人下载东西的时候,大家就都不能用了。最后无奈,设置了限速,总算好些了。。。

而在这边,一边是没有路由器可以折腾而折磨,另一边则是看到了许多固件/包。比如可以让全局越岭,或者是离线下载什么的。

继续折腾吧……

HDOJ1002:A + B Problem II

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 210904 Accepted Submission(s): 40642
Problem Description
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.

Input
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.

Output
For each test case, you should output two lines. The first line is “Case #:”, # means the number of the test case. The second line is the an equation “A + B = Sum”, Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line between two test cases.

Sample Input
2
1 2
112233445566778899 998877665544332211

Sample Output
Case 1:
1 + 2 = 3

Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110

记得刚注册ACM账号的时候,在连续解决掉1000和1001这两道问题后。就毫不犹豫的点开了1002。

快一年了……终于把这个坑补完了。

先放上来,等我仔细研究之后再放代码吧。