<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fans_men的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fans_men</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fans_men]]></copyright><item><title><![CDATA[HDU 2142 - disney]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955682</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955682</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:39:59 +0800</pubDate><description><![CDATA[知识点：结构体二级排序

#include 
#include 
#include 

struct Player
{
    char name[10];
    int score;
}player[100];

inline int cmp(const void *a,const void *b)
{
    Player *c=(Player *)a;
    Player *d=(P]]></description><category></category></item><item><title><![CDATA[HDU 3496 - Watch The Movie]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955676</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955676</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:37:37 +0800</pubDate><description><![CDATA[知识点：二维背包

#include 
#include 

int dp[101][1001],m,l;

inline int max(int a,int b)
{
    return a>b ? a : b;
}

void PlanarPack(int val,int ti,int temp)
{
    if(ti<=l)
    {
        for(int i=m=1;i]]></description><category></category></item><item><title><![CDATA[HDU 2955 - Robberies]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955672</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955672</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:35:05 +0800</pubDate><description><![CDATA[知识点：01背包的概率问题
当前的概率基于前一种状态的概率，即偷n家银行而不被抓的概率等于偷n-1家银行不被抓的概率乘以偷第n家银行不被抓的概率。
用dp[i]表示偷价值为i时不被抓的概率，则状态转移方程为：dp[i]=max(dp[i],dp[i-m]*(1-p))。
#include 
#include 

double dp[10001];
int sum;

inline doubl]]></description><category></category></item><item><title><![CDATA[HDU 2133 - What day is it]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955663</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955663</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:32:40 +0800</pubDate><description><![CDATA[知识点：
       方法一：细节优化，小技巧起大作用。
       方法二：Zeller公式法。
//方法一：暴力法

#include     //公元一年一月一号是星期一

inline bool leap_year(int year)
{
    if((year%4==0&&year%100)||year%400==0) return 1;
    else return 0;]]></description><category></category></item><item><title><![CDATA[关于本地ACM代码的声明]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955661</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955661</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:27:51 +0800</pubDate><description><![CDATA[取自本地的代码请用G++编译器运行或提交，其它编译器可能会报错！！！
本地代码仅供参考，请童鞋们先独立思考。如有优化的代码请留言，鄙人不胜感激！！！
祝大家AC愉快！！！]]></description><category></category></item><item><title><![CDATA[HDU 2602 - Bone Collector]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955651</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955651</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:26:57 +0800</pubDate><description><![CDATA[知识点：01背包
01背包是基础，一定要把01背包真正搞懂，那其它的背包就容易懂了。

#include 
#include 

int dp[1001],V;

inline int max(int a,int b)
{
    return a>b ? a : b;
}

void ZeroOnePack(int val,int vol)
{
    for(int v=V;v>=vol]]></description><category></category></item><item><title><![CDATA[HDU 1716 - 排列2]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955648</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955648</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:22:17 +0800</pubDate><description><![CDATA[知识点：全排列函数 next_permutation( , );

当然，暴力也可以解决。
#include  
#include              
#include     //包含于头文件

using namespace std;

inline int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int]]></description><category></category></item><item><title><![CDATA[HDU 1176 - 免费馅饼]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955641</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955641</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:19:16 +0800</pubDate><description><![CDATA[知识点：1、数塔；
                2、整数(int 型)输入外挂（可大大缩短数据输入的时间，对于数据庞大的题目效果显著）。
#include 
#include 

//整数输入外挂，减少时间
bool scan_d(int &n)    
{
    char i;
    bool I=0;
    i=getchar();
    if(i==EOF) return 0]]></description><category></category></item><item><title><![CDATA[HDU 1503 - Advanced Fruits]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955636</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955636</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:14:47 +0800</pubDate><description><![CDATA[知识点：最长公共子序列（LCS）
dp[i][j]记录到a的第i个字符和b的第j个字符为止公共子序列的长度；path[i][j]记录公共子序列的走向；member[i]保存最长公共子序列的成员。
#include 
#include 

int main()
{
    char a[101],b[101],member[101];              
    int dp[101][]]></description><category></category></item><item><title><![CDATA[HDU 1002 - A + B Problem II]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955632</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955632</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:11:35 +0800</pubDate><description><![CDATA[知识点：大数加法

#include 
#include 

void add(char *a,char *b)    //大数加法模板
{
    int c[1000]={0},d[1000]={0},sum[1001]={0};
    int len_a=strlen(a),len_b=strlen(b),i;
    for(i=0;i<len_a;i++)
    c[i]=a[l]]></description><category></category></item><item><title><![CDATA[HDU 1009 - FatMouse' Trade]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955625</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955625</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:09:18 +0800</pubDate><description><![CDATA[知识点：贪心算法
最简单的贪心：优先选择性价比高的。
#include 
#include 

struct Cat
{
    int J;
    int F;
    double per;    //性价比
};

inline int cmp(const void *a,const void *b)
{
    return ((Cat *)b)->per>((Cat *)a)->p]]></description><category></category></item><item><title><![CDATA[七种qsort排序法（附模板）]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955606</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955606</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 12:05:43 +0800</pubDate><description><![CDATA[七种qsort排序法
 
 
 
其中的在c语言中qsort函数包含在的头文件里，strcmp包含在的头文件里。
 
一、对int类型数组排序  

int num[n]; 
 
int cmp(const void *a,const void *b) 
{ 
     return *(int *)a-*(int *)b; 
} 
qsort(num,n,sizeof(num[0]]></description><category></category></item><item><title><![CDATA[HDU 1160 - FatMouse's Speed]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955594</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955594</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:59:45 +0800</pubDate><description><![CDATA[知识点：最长有序（上升）子序列
#include 
#include 

struct Mouse
{
    int weight;
    int speed;
    int num;    //记录当前老鼠排序前的序号
    int last;    //记录为当前dp提供更新的前一个老鼠排序后的序号
}mouse[1000];

//结构体一级排序，按weight从小到大
inlin]]></description><category></category></item><item><title><![CDATA[HDU - 旋转矩阵]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955583</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955583</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:55:31 +0800</pubDate><description><![CDATA[知识点：找规律+指针模拟
PS：其实这道题很简单，但看到很多大牛用了很多比较复杂的方法，所以贴上来大家切磋切磋。

问题描述：
旋转矩阵
Time Limit:1000MS  Memory Limit:65536K
Total Submit:59 Accepted:31
Description
把前n*n个正整数1，2，...，n*n 从左上角开始,由外层至中心按顺时针方向螺旋排列]]></description><category></category></item><item><title><![CDATA[HDU 1234 - 开门人和关门人]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955560</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955560</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:49:08 +0800</pubDate><description><![CDATA[知识点：字符串处理

#include 
#include 

inline int calc(char *tmp)    //计算时间。都换算成秒，就可以比较大小了
{
    return ((tmp[0]-'0')*10+(tmp[1]-'0'))*3600+((tmp[3]-'0')*10+(tmp[4]-'0'))*60+
           (tmp[6]-'0')*10+(tm]]></description><category></category></item><item><title><![CDATA[HDU 1248 - 寒冰王座]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955550</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955550</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:45:07 +0800</pubDate><description><![CDATA[知识点：完全背包
背包总体上有两种使用方法：
1、当物品的价值和体积不等时，用dp[ ]表示价值。
2、当物品的价值和体积相等时，用dp[ ]表示状态。例如本题中，dp[i]==0表示无法达到价值i；dp[i]==1表示可以达到价值i。其它的背包也有这种性质。

#include 
#include 

bool dp[10001];
int V;

void ComplatePack(]]></description><category></category></item><item><title><![CDATA[HDU 1465 - 不容易系列之一]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955528</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955528</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:42:19 +0800</pubDate><description><![CDATA[知识点：递归 - 错排问题
错排问题的通项公式：f[n]=(n-1)*(f[n-1]+f[n-2]);
定义数组f[n]表示n封信时错排的情况数,在f[n-1]的基础上再加一封信并错排分两步： 
第一步：把第n封信放在前面第i（i任意）封信的信封里,共n-1种情况。 
第二步：把第i封信放入信封，有两种case： 
                case 1：如果把i放到第n个信封里，]]></description><category></category></item><item><title><![CDATA[HDU 2031 - 进制转换]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955514</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955514</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:39:31 +0800</pubDate><description><![CDATA[知识点：简单字符串处理
#include 

void f(int n,int r)    //进制转换模板
{
    if(n<0)
    {
        putchar('-');
        n=-n;
    }
    char str[10];
    int i=0;
    while(n)
    {
        int tmp=n%r;
        str]]></description><category></category></item><item><title><![CDATA[HDU 2037 - 今年暑假不AC]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955505</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955505</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:36:08 +0800</pubDate><description><![CDATA[知识点：贪心 + 结构体一级排序
#include 
#include 

struct TV
{
    int Ti_s;
    int Ti_e;
};

inline int cmp(const void *a,const void *b)
{
    return ((TV *)a)->Ti_e-((TV *)b)->Ti_e;
}

int main()
{
    int n;]]></description><category></category></item><item><title><![CDATA[HDU 2047 - 阿牛的EOF牛肉串]]></title><link>https://blog.youkuaiyun.com/fans_men/article/details/6955493</link><guid>https://blog.youkuaiyun.com/fans_men/article/details/6955493</guid><author>fans_men</author><pubDate>Thu, 10 Nov 2011 11:33:11 +0800</pubDate><description><![CDATA[知识点：递归
分别定义两个数组：a[n],b[n]。a[i]表示第i个为'O'时的情况数，b[i]表示第i个不为'O'时的情况数，则第i个总的情况数就等于a[i]+b[i]; 
从第一个开始： 
i=1  a[1]=1;b[1]=2； 
i=2  a[2]=b[1];b[2]=2*(a[1]+b[1); 
i=3  ...... 
........... 
i=n  a[n]=b[n]]></description><category></category></item></channel></rss>