【原创】POJ 1703 && RQNOJ 能量项链解题报告
唉
不想说什么了
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 能量项链解题报告的更多相关文章
- 【原创】leetCodeOj --- Sliding Window Maximum 解题报告
天,这题我已经没有底气高呼“水”了... 题目的地址: https://leetcode.com/problems/sliding-window-maximum/ 题目内容: Given an arr ...
- 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 ...
- poj 3750 小孩报数问题 解题报告
题目链接:http://poj.org/problem?id=3750 约瑟夫问题,直接模拟即可. #include <iostream> #include <string> ...
- [SDOI2009]HH的项链解题报告
原题目:洛谷P1972 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此 ...
- 洛谷 P1972 [SDOI2009]HH的项链 解题报告
P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...
- [NOI2010]能量采集 解题报告
[NOI2010]能量采集 题目描述 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. ...
- poj 3617 Best Cow Line 解题报告
题目链接:http://poj.org/problem?id=3617 题目意思:给出一条长度为n的字符串S,目标是要构造一条字典序尽量小,长度为n的字符串T.构造的规则是,如果S的头部的字母 < ...
- poj 2771 Guardian of Decency 解题报告
题目链接:http://poj.org/problem?id=2771 题目意思:有一个保守的老师要带他的学生来一次短途旅行,但是他又害怕有些人会变成情侣关系,于是就想出了一个方法: 1.身高差距 ...
- poj 1274 The Perfect Stall 解题报告
题目链接:http://poj.org/problem?id=1274 题目意思:有 n 头牛,m个stall,每头牛有它钟爱的一些stall,也就是几头牛有可能会钟爱同一个stall,问牛与 sta ...
随机推荐
- 【智能家居篇】wifi网络接入原理(上)——扫描Scanning
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 对于低头党来说,在使用WIFI功能时,常常性的操作是打开手机上的WIFI设备,搜索到心目中的热点,输入passwor ...
- 解决Qt程序在Linux下无法输入中文的办法
解决Qt程序在Linux下无法输入中文的办法 一位网友问我怎样在Linux的Qt的应用程序中输入中文,我一開始认为不是什么问题,可是后面自己尝试了一下还真不行.不仅是Qt制作的应用程序,就连Qt Cr ...
- android 自己定义通知栏遇到的问题
首先看报错信息: E/AndroidRuntime(12220): FATAL EXCEPTION: main E/AndroidRuntime(12220): Process: gn.com.and ...
- VSTO学习笔记(九)浅谈Excel内容比较
原文:VSTO学习笔记(九)浅谈Excel内容比较 说起文件内容比较,或许我们首先想到的是UltraCompare这类专业比较的软件,其功能非常强大,能够对基于文本的文件内容作出快速.准确的比较,有详 ...
- 【Java&Android开源库代码剖析】のAndroid-Universal-Image-Loader-part1
做Android app开发的同学应该都听说过或者用过nostra13的Android-Universal-Image-Loader开源库,它在图片异步加载.缓存和显示等方面提供了强大灵活的框架.之前 ...
- java多线程控制台聊天室(转)
用java多线程实现一个控制台聊天室,呵呵,好玩! 聊天室服务器端 package tf.thread; import java.io.BufferedReader; import java.io.I ...
- poj1182(并查集)
题目链接 分析:根据分析,关系的递推满足由[a,b]~[b,c]得:[a,c]=([a,b]+[b,c])%3;[a,d]=([a,b]+[b,c]+[c,d])%3.由rank数组表示关系 0 - ...
- The Official Preppy Handbook
The Official Preppy Handbook: Lisa Birnbach: 9780894801402: Amazon.com: Books The Official Preppy Ha ...
- 获取webshell的十种方法
黑客在入侵企业网站时,通常要通过各种方式获取webshell从而获得企业网站的控制权,然后方便进行之后的入侵行为.本篇文章将如何获取webshell总结成为了十种方法,希望广大的企业网络管理员能够通过 ...
- IntelliJ IDEA 14 注册码生成java代码(转)
https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases 分享几个license: ( ...