落絮飞雁

顺流而下,把梦做完

区间调度问题

题目描述:

有n项工作,每项工作分别在si时间开始,ti时间结束。对于每项工作,你都可以选择参加或不参加,但选择了参加某项工作就必须至始至终参加全程参与,即参与工作的时间段不能有重叠(即使开始的瞬间和结束的瞬间重叠也是不允许的)。

你的目标是参与尽可能多的工作,那么你最多能参与多少项工作呢?

限制条件:

1<=n<=100000

1<=si<=ti,=10^9


这个问题首先想到的就是贪心算法。但设计算法时容易出现错误。

比较容易想到的算法如:

  • 在可选工作中,每次选取最先开始的工作
  • 在可选工作中,每次选取用时最短的工作
  • 在可选工作中,每次选取与最少可选工作有重叠的工作
  • 在可选工作中,每次选取结束时间最早的工作

而很显然,前三项算法都不具有普适性(例如:一项开头早,持续时间长的工作和两项开头晚的工作)。

关于最后一种算法的解释:

结束时间早,对应的可选工作就越多。当然也可以用归纳法来证明。

代码实现:

 

#include 
#include 
#include 
#include 
using namespace std;

const int N = 5;
int s[N]={1,2,4,6,8};
int t[N]={3,5,7,9,10};

int solve()
{
pair itv[N];
for(int i = 0; i 
	

将WordPress文章导出至Blogger

今天折腾了一下Blogger,打算把网站的部分文章转过去。虽然Blogger官方不能直接搬运WP的文章。但是可以通过导出xml的方式来迁移文章。

READ MORE →

在文章页面底部添加版权信息

function.php底部添加:

function feed_copyright($content) {
    if(is_single() or is_feed()) {
	$content.= '
CC协议:署名-非商业 4.0国际|Creative Commons BY-NC 4.0
'; $content.= '
转载注明:落絮飞雁的个人网站
'; $content.= '
本文连接:'.get_the_title().'
'; } return $content; } add_filter ('the_content', 'feed_copyright');

 

Twentyfourteen主题简单修改

博客目前在用的主题是WP自带的twentyfourteen主题。觉得还不错,拿来稍加修改就用了。

  • 适配宽屏

这套主题默认显示的最大宽度是1260px,就导致了在宽屏上浏览时网页右侧有一条很难看的白边。可以通过修改style.css实现:

.site-header {
	background-color: #000;
	max-width: 1260px;
	position: relative;
	width: 100%;
	z-index: 4;

其中max-width由1260px修改为max-width:100%;即可。

  • 修改默认配色

同样是style.css种修改背景色:

网站标题的背景色:
.site-header {
background-color: #000;

左侧边栏的背景色:
.site:before {
background-color: #000;

底边的背景色:
.site-footer {
background-color: #000;

或是插件解决:fourteen-colors

  • 修改每行正文显示宽度

每行正文显示的内容较少,同样通过修改style.css解决

 .page-content {
 margin: 0 auto;
 max-width: 474px;

474px修改为合适值,我选的630px。

栈是支持push和pop的数据结构。

push是在栈的顶端放入一组数据;pop是在栈的顶端取出一组数据。

Last in first out(LIFO):最后进入栈的一组数据会被最先取出.


 

样例:

 

#include
#include
using namespace std;
int main()
{
	stack s;//声明int类型数据存储的栈
	s.push(1);//『』→『1』
	s.push(2);//『1』→『1,2』
	s.push(3);//『1,2』→『1,2,3』
	printf("%dn",s.top());//3
	s.pop();//栈顶移除3,下同
	printf("%dn",s.top());
	s.pop();
	printf("%dn",s.pop());
	s.pop();//『1』→『』
	return 0;
}

返回栈顶元素:

// test_stack.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include 
#include 
#include 

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	stack mystack;
	mystack.push(10);
	mystack.push(20);
	mystack.top()-=5;
	cout 
	

WP插件:Widget Logic支持的标签及用法

Widget Logic是一个可以让指定页面显示小工具的插件。在需要做『友情链接』的时候是有很大作用的;也可以通过设置在访客浏览相关页面时推荐类似文章。

默认支持以下标签:

is_home() 主页
is_single() 文章页
is_page() 页面
is_category() 文章分类页
is_tag() 文章标签页
is_archive() 归档页
is_404() 404页
is_search() 搜索结果页
is_feed() 订阅页

语法为:

||表示或,&&表示和,!表示非。栗子:

is_home() 仅主页显示
!is_home() 除主页以外的页面显示
!is_category(5) 仅在ID非5的分类显示
is_home() || is_category(’baked-goods’) 在主页或名称为baked-goods的分类显示
is_page(’about’) 仅在关于页显示


ps:切记不要写错标签,可能会导致整页无法加载的现象!

 

让WordPress首页只显示摘要

WordPress的功能很强大,可以根据个人需求来修改网站。

在Wordpress 3.5.1的中提供了默认的主题Twenty Twelve,很不错,但是首页显示的是全文信息,这不仅使得页面太长,也使得加载速度变的很慢,只有在搜索的时候才会显示摘要,那么怎么去让首页显示文章的摘要呢?
到wordpress后台,依次选择 外观–>编辑–>选择右边的index.php,在里面可以看到语句

<?php while ( have_posts() ) : the_post(); ?>
    <?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>

可以看出,index.php是嵌套一个 content.php 的文件用于专门显示文章的内容,这就是为什么在首页老是显示文章全文。那么,打开content.php文件找到

<?php
the_content( __( 'Continue reading <span>&rarr;</span>', 'twentyeleven' ) );
?>

将它修改为

<?php if(!is_single()) {
the_excerpt();
} else {
the_content(__('(more…)'));
} ?>

保存,现在去看看你的首页,是不是只显示摘要了?


 

转载自:http://www.iteblog.com/archives/21

写写我是怎么拿到域名转移码的

7月的时候因为域名即将到期,就想着借此机会把域名转移到Godaddy去,毕竟放在有名的域名注册商那里会有保障些。哪曾想,转移域名竟费了我差不多半个月的时间。把我转移域名的过程写出来,也省得之后再碰到这种情况的时候走弯路。

我的域名原本是在主机屋(因为最早用主机屋的空间要交五元押金,可以买域名用。),而主机屋又是从三五互联那里拿得的域名。所以在投诉的时候就在纠结到底要找主机屋还是直接找三五互联,浪费了不少功夫。还有就是当时注册域名的时候没有写自己的真实信息,导致投诉的时候ICANN不能确定域名的所有权是不是在我手里。所以在这里要提醒一下,注册域名(尤其是在国内注册域名的时候)一定要写自己真实的信息,最起码要写自己的真实姓名。不能证明域名所有权在很多方面都会受限制。


 

写写我的域名转移流程。

一开始还是想从域名商手中直接拿到我的转移码,但主机屋客服说要填写他们的申请表,并且要我复印个人身份证并签名,两张文件一并寄到他们在北京的办公室才行。在我说完要转移的域名之后,客服又说我的域名信息不对,不能证明我有域名所有权。要我填表格修正并发送给他们。但是在修改网站Whois信息之后的两年内不能转移域名。

于是急不可耐的我什么表都没填,直接向ICANN投诉,但因为不知道找主机屋还是三五互联,浪费了很多时间。并且因为域名的WHois信息不是我的真实姓名,所以ICANN直接关闭了我的投诉订单。无论我怎么申诉都被refuse掉。

于此往返折腾几次之后,迫不得已从主机屋那里拿到了修改Whois信息的申请表,盘算着先把WHois信息修改到我的名下,再向ICANN申诉。于是无奈填了一张申请表、复印了身份证。在修改掉Whois信息后,立刻向ICANN投诉。果然,生效了。几天后收到了三五互联的转移码。转移域名,成功!


 

说说几个注意事项:

  1. 向ICANN投诉的前提是要向ICANN证明你正在管理这个域名(Whois信息正确)。
  2. 向ICANN投诉必须要以Whois信息上的邮箱发邮件,且抄送一份给域名注册商。
  3. 邮件正文尽量简短,不要机器翻译。

最后希望有这类需求的站长都能够拿到转移码~

HDOJ5062:Beautiful Palindrome Number

Problem Description
A positive integer x can represent as (a1a2…akak…a2a1)10 or (a1a2…ak−1akak−1…a2a1)10 of a 10-based notational system, we always call x is a Palindrome Number. If it satisfies 0<a1<a2<…<ak≤9, we call x is a Beautiful Palindrome Number.
Now, we want to know how many Beautiful Palindrome Numbers are between 1 and 10N.

Input
The first line in the input file is an integer T(1≤T≤7), indicating the number of test cases.
Then T lines follow, each line represent an integer N(0≤N≤6).

Output
For each test case, output the number of Beautiful Palindrome Number.

Sample Input
2
1
6

Sample Output
9
258


要求判断范围内有多少回文串。由于范围小,可以直接打表计算。

#include
int main()
{
	int a[7]={1,9,18,54,90,174,258},t,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		printf("%dn",a[n]);
	}
return 0;
}

 

HDOJ2108:Shape of HDU

Problem Description
话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,“徐队”的称呼逐渐被“徐总”所取代,海东集团(HDU)也算是名副其实了。
创业是需要地盘的,HDU向钱江肉丝高新技术开发区申请一块用地,很快得到了批复,据说这是因为他们公司研发的“海东牌”老鼠药科技含量很高,预期将占全球一半以上的市场。政府划拨的这块用地是一个多边形,为了描述它,我们用逆时针方向的顶点序列来表示,我们很想了解这块地的基本情况,现在请你编程判断HDU的用地是凸多边形还是凹多边形呢?

 

Input
输入包含多组测试数据,每组数据占2行,首先一行是一个整数n,表示多边形顶点的个数,然后一行是2×n个整数,表示逆时针顺序的n个顶点的坐标(xi,yi),n为0的时候结束输入。

 

Output
对于每个测试实例,如果地块的形状为凸多边形,请输出“convex”,否则输出”concave”,每个实例的输出占一行。

 

Sample Input
4
0 0 1 0 1 1 0 1
0

 

Sample Output
convex

 

采用的方法是三角函数求内角度数,判断角是否超过180.

问题:

sqrt函数中形参必须为double,但double不能用^2进行乘方,降低了代码可读性。

忘记判断最后一点与初始两点的角度。

还是WA:

#include
#include
#include
int main()
{
	int  flag,n,ni;
	double a, b, c,cc,arc;
	double num[2][10000];
	while(~scanf("%d", &n)&&n!=0)
	{
		memset(num, 0, sizeof(num));
		flag = 0;
		for (ni = 0; ni < n; ni++)
		{
			scanf("%lf%lf", &num[0][ni], &num[1][ni]);
		}
		for (ni = 2; ni < n; ni++)
		{
			a = sqrt((num[0][ni - 2] - num[0][ni - 1])*(num[0][ni - 2] - num[0][ni - 1]) + (num[1][ni - 2] - num[1][ni - 1])*(num[1][ni - 2] - num[1][ni - 1]));
			b = sqrt((num[0][ni - 1] - num[0][ni])*(num[0][ni - 1] - num[0][ni]) + (num[1][ni - 1] - num[1][ni])*(num[1][ni - 1] - num[1][ni]));
			c = sqrt((num[0][ni - 2] - num[0][ni])*(num[0][ni - 2] - num[0][ni]) + (num[1][ni - 2] - num[1][ni])*(num[1][ni - 2] - num[1][ni]));
			cc = (a*a + b*b - c*c) / (2 * a*b);
			arc = acos(cc) * 180 / 3.1415926;
			if (arc>(double)180||arc<(double)0)
			{
				flag = 1;
			}
		}
		a = sqrt((num[0][ni] - num[0][0])*(num[0][ni] - num[0][0]) + (num[1][ni] - num[1][0])*(num[1][ni] - num[1][0]));
		b = sqrt((num[0][0] - num[0][1])*(num[0][0] - num[0][1]) + (num[1][0] - num[1][1])*(num[1][0] - num[1][1]));
		c = sqrt((num[0][ni] - num[0][1])*(num[0][ni] - num[0][1]) + (num[1][ni] - num[1][1])*(num[1][ni] - num[1][1]));
		cc = (a*a + b*b - c*c) / (2 * a*b);
		arc = acos(cc) * 180 / 3.1415926;
		if (arc>(double)180 || arc<(double)0)
		{
			flag = 1;
		}
		if (flag = 0)
		{
			printf("convexn");
		}
		if (flag = 1)
		{
			printf("concaven");
		}
	}
	return 0;
}

 


更新下AC代码:

思路是判断相邻两条边的斜率,如果第二条边斜率小于第一条边,则为凹。

 

#include
#include
struct xy
{
    int x;
    int y;
};
typedef struct xy xy;
int main()
{
    xy num[10001],d,z;
    int a, b, c, cc, n, ni;
    int flag;
    while (~scanf("%d",&n)&&n!=0)
    {
        flag = 0;
        for (ni = 0; ni