不想说什么了

poj 1703,从看完题到写完第一个版本的代码,只有15分钟

然后一直从晚上八点WA到第二天早上

最后终于发现了BUG,题目要求的“Not sure yet.”,我打成了“No sure yet.”

然后是RQNOJ的NOIP真题,经典的能量项链

从看完题到写完伪码用了30分钟,敲完全部代码用了10分钟

WA 了7次,次次只能过前三个点,后面全部超时。

不能够啊?我动态规划了都,怎么可能超时?

开始优化主函数。

发现通过一个比较,能把N * (N-1)的复杂度降到C(N,2)。

改了后提交,很好,多过了一个点,继续超时

XXXX,我最后发现,居然在递归函数中漏写了if(dp[start][end] != 0)return dp[start][end];!!

当时心中真的是一万匹草泥马碾压而过,还我青春啊!

然后全部10ms内AC了10个点

最后上这两个冤家的代码

加起来送了我10+个WA了吧?

好险我是学法的

POJ 1703:

#include <stdio.h>
typedef struct man
{
  int rev;
  int parent;
}man;
man set[100008];
int set_find(int p)
{
    if(p < 0)return -1;
    if(set[p].parent < 0)return p;
    return set[p].parent = set_find(set[p].parent);
}
void join(int p,int q)
{
    p = set_find(p);
    q = set_find(q);
    if(p != q)set[p].parent = q;
}
void deal(int p,int q)
{
    int tmp_rev1;
    int tmp_rev2;
    if(set[q].rev == -1)set[q].rev = p;
    if(set[p].rev == -1)set[p].rev = q;
    tmp_rev1 = set_find(set[p].rev);
    tmp_rev2 = set_find(set[q].rev);
    p = set_find(p);
    q = set_find(q);
    if(q != tmp_rev1)join(q,tmp_rev1);
    if(p != tmp_rev2)join(p,tmp_rev2);
}
void searchSet(int p,int q)
{
    p = set_find(p);
    q = set_find(q);
    if(p == q)
    {
        printf("In the same gang.\n");
    }
    else if(p == set_find(set[q].rev) || q == set_find(set[p].rev))
    {
        printf("In different gangs.\n");
    }
    else printf("Not sure yet.\n");
}
int main(void)
{
    int T;
    int N,M,i;
    int CASE;
    int num1,num2;
    char command;
    scanf("%d",&T);
    while(T --)
    {
        scanf("%d%d",&N,&M);
        if(N == 2)CASE = 1;
        else CASE = 0;
        for(i = 0;i <= N;i++)
        {
                set[i].parent = -1;
                set[i].rev = -1;
        }
        for(i = 0;i < M;i++)
        {
            getchar();
            command = getchar();
            scanf("%d%d",&num1,&num2);
            if(!CASE)
            {
                if(command == 'A')
                {
                    searchSet(num1,num2);
                }
                else if(command == 'D')
                {
                    deal(num1,num2);
                }
            }
            else printf("In different gangs.\n");
        }

}
    return 0;
}

RQNOJ 能量项链:

#include <stdio.h>
int dp[200][200];
int value[200];
int N;
int pre(int a)
{
    if(a == 0)return N - 1;
    else return a - 1;
}
int next(int a)
{
    if(a == N - 1)return 0;
    else return a +  1;
}
int fun(int start,int end)
{
    int tmp1,tmp2,i,j,max = 0,result;
    if(dp[start][end] != 0)return dp[start][end];
    if(start == end)return 0;
    for(i = start;i != end;i = next(i))
    {
                tmp1 = fun(start,i);
                tmp2 = fun(next(i),end);
                result = tmp1 + tmp2 + value[start] * value[next(i)] * value[next(end)];
                if(max < result)max = result;
    }
    return dp[start][end] = max;
}
int main(void)
{
    int i,j,result;
    int max,tmp1,tmp2;
    scanf("%d",&N);
    for(i = 0;i < N;i++)
        scanf("%d",&value[i]);
    max = 0;
    int count = 0;
    int size;
    for(i = 0;i < N;i++)
    {
        size = N - i - 1;
        count = 0;
        for(j = i;count < size;j = next(j),count++)
        {
            tmp1 = fun(i,j);
            tmp2 = fun(next(j),pre(i));
            if(value[next(j)] < value[i])
                result = tmp1 + tmp2 + value[i] * value[next(j)] * value[i];
            else result = tmp1 + tmp2 + value[next(j)] * value[next(j)] * value[i];
            if(max < result)max = result;
        }
    }
    printf("%d\n",max);
    return 0;
}

【原创】POJ 1703 && RQNOJ 能量项链解题报告的更多相关文章

  1. 【原创】leetCodeOj --- Sliding Window Maximum 解题报告

    天,这题我已经没有底气高呼“水”了... 题目的地址: https://leetcode.com/problems/sliding-window-maximum/ 题目内容: Given an arr ...

  2. POJ 2054 Color a Tree解题报告

    题干 Bob is very interested in the data structure of a tree. A tree is a directed graph in which a spe ...

  3. poj 3750 小孩报数问题 解题报告

    题目链接:http://poj.org/problem?id=3750 约瑟夫问题,直接模拟即可. #include <iostream> #include <string> ...

  4. [SDOI2009]HH的项链解题报告

    原题目:洛谷P1972 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此 ...

  5. 洛谷 P1972 [SDOI2009]HH的项链 解题报告

    P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...

  6. [NOI2010]能量采集 解题报告

    [NOI2010]能量采集 题目描述 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. ...

  7. poj 3617 Best Cow Line 解题报告

    题目链接:http://poj.org/problem?id=3617 题目意思:给出一条长度为n的字符串S,目标是要构造一条字典序尽量小,长度为n的字符串T.构造的规则是,如果S的头部的字母 < ...

  8. poj 2771 Guardian of Decency 解题报告

    题目链接:http://poj.org/problem?id=2771 题目意思:有一个保守的老师要带他的学生来一次短途旅行,但是他又害怕有些人会变成情侣关系,于是就想出了一个方法: 1.身高差距   ...

  9. poj 1274 The Perfect Stall 解题报告

    题目链接:http://poj.org/problem?id=1274 题目意思:有 n 头牛,m个stall,每头牛有它钟爱的一些stall,也就是几头牛有可能会钟爱同一个stall,问牛与 sta ...

随机推荐

  1. Routing 服务

    WCF Routing 服务 WCF4.0支持路由机制,通过RoutingService实现请求分发.拦截处理. 一.应用场景 1.暴露一个endpoint在外网,其余服务部署于内网: 2.请求分发, ...

  2. Linux 挂载NTFS文件系统

    步骤如下: 1.安装ntfs-3g包 [root@CS-1 pub]# yum install ntfs-3g 2.创建挂载目录 [root@CS-1 pub]# mkdir /data 3.挂载NT ...

  3. Spark实践的阶段性总结

    写这篇小总结是因为前段时间是自己业余时间对Spark相关进行了些探索,接下来可能有别的同事一起加入,且会去借用一些别的服务器资源,希望可以借此理下思路. 实践Spark的原因 在之前Spark简介及安 ...

  4. [置顶] ※数据结构※→☆线性表结构(stack)☆============栈 序列表结构(stack sequence)(六)

    栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表.栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据.栈 ...

  5. 诺贝尔物理学奖公布:LED灯将点亮了整个21世纪

    很多其它精彩.破晓博客:点击打开链接 7日.在瑞典首都斯德哥尔摩,瑞典皇家科学院常任秘书诺尔马克(左二)宣布2014年诺贝尔物理学奖得主.新华社发 ■人物 中村修二 勇于追讨酬劳的科学家 被誉为&qu ...

  6. WPF案例(-)模拟Windows7 Win+Tab切换

    原文:WPF案例(-)模拟Windows7 Win+Tab切换 一个使用Wpf模拟Windows7 Win+Tab页面切换的小程序,使用快捷键Ctrl+Down或Ctrl+Up在示例程序各个页面元素之 ...

  7. hdu1495(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意:有三个杯子,开始时第一个杯子装满水(体积为a),倒来倒去,得到其中2个杯里的水的体积都为a ...

  8. javascript它【蛇系列】第一弹:简单的蛇实现

    参考博客:http://blog.csdn.net/sunxing007/article/details/4187038 上面的博客是一个参考,竟第一次做.真让自己盲人摸象做不出来. 只是我在其上做了 ...

  9. H3C低端交换机MAC绑定

    1.MAC地址和端口的绑定<h3c>system[h3c]interface e0/1[h3c-interface]mac-address max-count #关闭交换机端口的MAC学习 ...

  10. HttpAsyncClient 做并发长连接的一个实例

    HttpAsyncClient 做并发长连接的一个实例 import java.util.concurrent.CountDownLatch; import org.apache.http.HttpR ...