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. Android - 用Fragments实现动态UI - 使用Android Support Library

    Android Support Library提供了一个带有API库的JAR文件来让你可以在使用最新的Android API的同时也也已在早期版本的Android上运行.例如,Support Libr ...

  2. RedHat Linux乱码解决方案(转)

    RedHat Linux中出现中文乱码主要是由于没有安装中文字体,因此解决方案主要是安装中文字体,所以 第一步,挂载安装的光盘 在虚拟机的菜单栏里,选择:VM->Settings,点击Setti ...

  3. mouseover与mouseenter与mousemove差额mouseout与mouseleave差额

    <1> HTML <html> <head> <title></title> </head> <body> < ...

  4. think in coding

    ,想想除了技术还有什么? 你假设形而下的去纠结技术.仅仅会变成技术的傀儡.他们仅仅是一种表达的方式? 希望你能够形而上的去看待技术,技术千变万化,但都是为了解决这个问题的方式. 请问问自己,自己问题是 ...

  5. poj2524

    说来惭愧啊..现在才会并查集.我竟然给我妈妈讲明白并查集怎么回事了- - #define _CRT_SECURE_NO_WARNINGS #include <iostream> using ...

  6. 从session实现机制分析模拟请求验证码的可行性(转)

    悲剧了,发现写完这篇blog没有配上这个格调超高的标题.   1.0问题背景 现在要实现一个带验证码网站的的自动登陆功能.验证码识别过程不再这篇文章的讨论之中.(之后有篇文章我会详细的总结验证码的识别 ...

  7. Tri_integral Summer Training 5 总结

    比赛 题目 B D E G H I J 这是泰国的一场区域赛,除了C题英语非常抽以外,其余题目还不算难读. 一开场就发现了三道很水的题目,0:21:34就把三道题给过了,都是1A,赞Moor的手速. ...

  8. SQL Server中TempDB管理(版本存储区的一个example)

    原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...

  9. Gradle sourceCompatibility has no effect to subprojects(转)

    I have Java 6 and 7 installed on my machine. Gradle uses 1.7 (checked using gradle -v). But I need t ...

  10. Entity Framework笔记(一)

    最近在看MVC方面的资料,看了几个教程都在使用Entity Framework做数据持久化.之前也听说过这个东西,在微软的网站上看过一个演示视频,但都没怎么去仔细研究.MVC的东西太庞大了,先慢慢熟悉 ...