不想说什么了

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. Hibernate之1-N关联映射

    一.Hibernate之1-N关联映射 1. 哪边是 1 , 哪边是多 ?      须要从业务的角度来说明.比如,Employee 和 Department 之间就是 n-1 的关联关系,Order ...

  2. STL学习总结

    STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合.这些" ...

  3. Anyterm - Introduction

    Anyterm - Introduction Anyterm

  4. nyist oj 311 全然背包 (动态规划经典题)

    全然背包 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描写叙述 直接说题意,全然背包定义有N种物品和一个容量为V的背包.每种物品都有无限件可用.第i种物品的体积是c,价值是 ...

  5. HDU 4643 GSM 简单计算几何

    今天比赛的时候略坑, admin告诉我询问Q的个数不超过n^2, 赛后敲了个 O(Q*m^3)的复杂度,但这个复杂度常数比较低,可能在除以个小常数, 300ms过了,真心无语,数据应该水了吧,比赛的时 ...

  6. 4、深入理解Bean

    本节知识点: 1. Bean 的自己主动装配(了解) 2. bean 之间的关系:继承:依赖 3.Bean 的作用域:能够在 <bean> 元素的 scope 属性里设置 Bean 的作用 ...

  7. [置顶] Guava学习之Immutable集合

    Immutable中文意思就是不可变.那为什么需要构建一个不可变的对象?原因有以下几点: 在并发程序中,使用Immutable既保证线程安全性,也大大增强了并发时的效率(跟并发锁方式相比).尤其当一个 ...

  8. 设计模式之十:观察者模式(Observer)

    观察者模式: 在对象之间定义了一种一对多的依赖关系.当一个对象改变它的状态时,全部依赖它的对象会自己主动接收通知并更新自己的状态. Define a one-to-many dependency be ...

  9. linux+nginx+mysql+php

    LNMP(linux+nginx+mysql+php)服务器环境配置   一.简介 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为 “engine X”, 是一个高性能的 ...

  10. MooTools,jQuery库的一些比对

    jQuery与MooTools库的一些比对   今天就我自己的一些认识比对下这两个JS框架,更多的是希望大家能够对MooTools这个JS框架有更多的认识.毕竟,大多数从事web前端的人对上手容易的j ...