D - Two paths

仅仅想到了一个o(n^2)的解法。

首先枚举删除一条边,必定得到两棵独立的树。计算两棵树的直径。保留最大乘积。

首先两条路不相交,则必定能够分到两棵子树中,由于要乘积最大,所以两条路必为两棵子树的直径。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <ctime>
#include <iomanip> #pragma comment(linker, "/STACK:1024000000");
#define EPS (1e-6)
#define LL long long
#define ULL unsigned long long
#define _LL __int64
#define INF 0x3f3f3f3f
#define Mod 1000000007 using namespace std; struct EDGE
{
int v,next;
}edge[400]; int Top;
int head[210]; void Link(int u,int v)
{
edge[Top].v = v;
edge[Top].next = head[u];
head[u] = Top++;
} bool mark[210][210]; int vis[210]; queue<int> q; int bfs(int s,int b,int &len)
{
memset(vis,-1,sizeof(vis));
vis[s] = 0;
q.push(s); int f; while(q.empty() == false)
{
f = q.front();
q.pop(); for(int p = head[f];p != -1; p = edge[p].next)
{
if(edge[p].v != b && vis[edge[p].v] == -1)
{
vis[edge[p].v] = vis[f]+1;
q.push(edge[p].v);
}
}
}
len = vis[f];
return f;
} int Cal(int x,int b)
{
int len;
bfs(bfs(x,b,len),b,len);
return len;
} int main()
{
int n,i,j,u,v; scanf("%d",&n); Top = 0;
memset(head,-1,sizeof(head));
memset(mark,false,sizeof(mark));
for(i = 1;i < n; ++i)
{
scanf("%d %d",&u,&v);
Link(u,v);
Link(v,u);
mark[u][v] = mark[v][u] = true;
} int Max = 0;
int s1,s2;
for(i = 1;i <= n; ++i)
for(j = i+1;j <= n; ++j)
{
if(mark[i][j])
{
Max = max(Max,(s1 = Cal(i,j))*(s2 = Cal(j,i)));
}
} printf("%d\n",Max); return 0;
}

E - Camels

简单的DP o(2*4*t*n)。

dp[当前位置] [当前位数字 ] [当前位置属于第几个峰] [ 当前位的状态是下降还是上升]。

剩下的就比較好想了。注意边界。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <ctime>
#include <iomanip> #pragma comment(linker, "/STACK:1024000000");
#define EPS (1e-6)
#define LL long long
#define ULL unsigned long long
#define _LL __int64
#define INF 0x3f3f3f3f
#define Mod 1000000007 using namespace std; LL dp[20][5][11][2]; int main()
{
memset(dp,0,sizeof(dp)); int n,t,i,j,k,l; scanf("%d %d",&n,&t); dp[2][2][1][1] = 1;
dp[2][3][1][1] = 2;
dp[2][4][1][1] = 3; LL ans; for(i = 3;i <= n; ++i)
{
for(k = 0;k <= t; ++k)
{
for(j = 1;j <= 4; ++j)
{
for(l = 1,ans = 0;l < j; ++l)
ans += dp[i-1][l][k][1];
dp[i][j][k][1] += ans; if(k >= 1)
{
for(l = 1,ans = 0;l < j; ++l)
ans += dp[i-1][l][k-1][0];
dp[i][j][k][1] += ans;
} for(l = j+1,ans = 0;l <= 4; ++l)
ans += dp[i-1][l][k][0];
for(l = j+1;l <= 4; ++l)
ans += dp[i-1][l][k][1];
dp[i][j][k][0] += ans;
//printf("i = %d j = %d k = %d a0 = %I64d a1 = %I64d\n",i,j,k,dp[i][j][k][0] , dp[i][j][k][1]);
}
}
} for(ans = 0,i = 1;i <= 4; ++i)
ans += dp[n][i][t][0]; printf("%I64d\n",ans); return 0;
}

CodeForces 14 E - Camels &amp;&amp; D - Two Paths的更多相关文章

  1. 【学时总结】◆学时·VII◆ 高维DP

    ◆学时·VII◆ 高维DP 自学之余,偶遇DP…… ◇ 算法概述 顾名思义——一种处理多方面状态的DP,这种DP特点是……每一维的大小都不算太大(不然用dp数组存储下来内存会炸),而且枚举时容易超时… ...

  2. 跟着xiaoxin巨巨做cf

    cf 385 C. Bear and Prime Numbers 题目大意:有一个数列{xi},每次给出一个询问[l, r],即问 S(l ,r)是l和r之间的素数,f(p)表示数列{xi}中整除p的 ...

  3. 「树形结构 / 树形DP」总结

    Codeforces 686 D. Kay and Snowflake 要求$O(n)$求出以每个节点为根的重心. 考虑对于一个根节点$u$,其重心一定在[各个子树的重心到$u$]这条链上.这样就能够 ...

  4. Sqoop_ 从 hive 导到mysql常遇九问题总结(转)

    以前以为版本不同,遇到的问题就不同,后来发现,无论是新版本,还是老版本,遇到的问题大部分都是相同的.下面解决问题的方法仅供借鉴 1.拒绝连接的错误表现是什么?2.表不存在该如何解决?3.null字段填 ...

  5. Hadoop伪分布配置与基于Eclipse开发环境搭建

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. 一篇文章掌握RequireJS常用知识

    本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具 ...

  7. JS -- 一篇文章掌握RequireJS常用知识

    本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具 ...

  8. PE刷题记

    PE 中文翻译 最喜欢做这种很有意思的数学题了虽然数学很垃圾 但是这个网站的提交方式好鬼畜啊qwq 1.Multiples of 3 and 5 直接枚举 2.Even Fibonacci numbe ...

  9. 《SLIC Superpixels》阅读笔记

    原始链接:http://blog.csdn.net/jkhere/article/details/16819285 或许有改动,请参考原文! SLIC 超像素(SLICSuperpixels) Rad ...

随机推荐

  1. NET5 Web应用程序

    ASP.NET5 Web应用程序结构 本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ...

  2. WebStorm主题设置

    对于使用WebStorm作为开发工具的筒子们.应该忍受不了默认的主题吧,可是自己去一个一个设置又太繁琐.So,去网上下个主题那是必须的. 搜来一圈,发现一个站点提供了不少主题.闲话少说,进入正题. 1 ...

  3. jquery ui 笔记

    准备: 1.下载jquery ui库:http://jqueryui.com/download/ 2.选择theme 3.建立一个良好的发展环境(mysql.netbeans) 4.创建数据库:jqu ...

  4. cocos2d_x_06_游戏_一个都不能死

    终于效果图: 环境版本号:cocos2d-x-3.3beta0 使用内置的物理引擎 游戏主场景 // // HeroScene.h // 01_cocos2d-x // // Created by b ...

  5. maven插件的生命周期的详细说明(两)

    插件配置 定义解释:插件目标 当我们了解了maven插件之后.我们发现假设为每个功能编写一个独立的插件显然是不可取的,由于这些任务背后有非常多能够复用的代码.因此,把这些功能聚集在一个插件里,每个功能 ...

  6. Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号

    原文:Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/arti ...

  7. OpenCV视频播放方法

    OpenCV视频播放方法 今天折腾了一下OpenCV的视频播放功能,希望能对项目又帮助- 代码还是非常easy的,仅仅是之前遇到点小麻烦,找不到cvCreateFileCapture函数的定义,花了一 ...

  8. javascript滚动栏响应鼠标滑轮的实现上下滚动事件

    实现鼠标滚动滚轮事件: <script type="text/javascript"><pre name="code" class=" ...

  9. IOS 数据库管理系统(SQLite)

    嵌入式数据库 SQLite嵌入式数据库的优势 1.支持事件,你并不需要配置,无需安装,不需要管理员 2.支持部分脂肪SQL92 3.完整的数据库被存储在磁盘上的文件的顶部,相同的数据库文件可以在不同机 ...

  10. 【源代码】LinkedList源代码分析

    //----------------------------------------------------------- 转载请注明出处:http://blog.csdn.net/chdjj by ...