【原创】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 ...
随机推荐
- jquery中实现全选按钮
<html> <head> <script type='text/javascript' src='js/jquery-1.5.1.js'></scr ...
- HDU 2444 The Accomodation of Students(推断是否是二分图)
题目链接 题意:n个学生,m对关系,每一对互相认识的能住一个房间.问否把这些学生分成两组,要求每组的学生都互不认识.求最多须要多少个房间. 能否分成两组?也就是说推断是不是二分图,推断二分图的办法,用 ...
- mysql left join,right join,inner join用法分析
下面是例子分析表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 ...
- s nrmtyu,yi.sfn rt
http://www.zhihu.com/collection/24337307 http://www.zhihu.com/collection/24337259 http://www.zhihu.c ...
- Java 模拟队列(一般队列、双端队列、优先级队列)
队列: 先进先出,处理类似排队的问题,先排的.先处理,后排的等前面的处理完了,再处理 对于插入和移除操作的时间复杂度都为O(1).从后面插入,从前面移除 双端队列: 即在队列两端都能够insert和r ...
- Ubuntu12.04password正确 入口的桌面(测试的恢复正常)
举行了两次会议ubuntu输入password正确,但高考制度,输入password后,跳转看接口 后来又返回到登录界面,这个周期已经输入password. 解决方案:1.输入tty下 ...
- 公布windows的"Universal Apps" Unity3D游戏
转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.h ...
- CentOS 7 命令备忘录
1 查看目录下有什么文件/目录 >ls //list 列出目录文件信息 >ls -l 或ll //以“详细信息”查看目录文件 >ls -a //-all 查看目录“全部”(包含隐藏文 ...
- 【译】ASP.NET MVC 5 教程 - 1:入门
原文:[译]ASP.NET MVC 5 教程 - 1:入门 本教程将教你使用Visual Studio 2013 预览版构建 ASP.NET MVC 5 Web 应用程序 的基础知识.本主题还附带了一 ...
- HUST 1017(DLX)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=65998#problem/A 题意:求01矩阵的精确覆盖. DLX学习资料:ht ...