CodeForces 14 E - Camels && D - Two Paths
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 && D - Two Paths的更多相关文章
- 【学时总结】◆学时·VII◆ 高维DP
◆学时·VII◆ 高维DP 自学之余,偶遇DP…… ◇ 算法概述 顾名思义——一种处理多方面状态的DP,这种DP特点是……每一维的大小都不算太大(不然用dp数组存储下来内存会炸),而且枚举时容易超时… ...
- 跟着xiaoxin巨巨做cf
cf 385 C. Bear and Prime Numbers 题目大意:有一个数列{xi},每次给出一个询问[l, r],即问 S(l ,r)是l和r之间的素数,f(p)表示数列{xi}中整除p的 ...
- 「树形结构 / 树形DP」总结
Codeforces 686 D. Kay and Snowflake 要求$O(n)$求出以每个节点为根的重心. 考虑对于一个根节点$u$,其重心一定在[各个子树的重心到$u$]这条链上.这样就能够 ...
- Sqoop_ 从 hive 导到mysql常遇九问题总结(转)
以前以为版本不同,遇到的问题就不同,后来发现,无论是新版本,还是老版本,遇到的问题大部分都是相同的.下面解决问题的方法仅供借鉴 1.拒绝连接的错误表现是什么?2.表不存在该如何解决?3.null字段填 ...
- Hadoop伪分布配置与基于Eclipse开发环境搭建
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 一篇文章掌握RequireJS常用知识
本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具 ...
- JS -- 一篇文章掌握RequireJS常用知识
本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具 ...
- PE刷题记
PE 中文翻译 最喜欢做这种很有意思的数学题了虽然数学很垃圾 但是这个网站的提交方式好鬼畜啊qwq 1.Multiples of 3 and 5 直接枚举 2.Even Fibonacci numbe ...
- 《SLIC Superpixels》阅读笔记
原始链接:http://blog.csdn.net/jkhere/article/details/16819285 或许有改动,请参考原文! SLIC 超像素(SLICSuperpixels) Rad ...
随机推荐
- QUIC简要
QUIC.即Quick UDP Internet Connection,类似于SPDY,相同也是由Google公司在现有已存协议之上进行了扩展设计,而旨在降低网络延迟.之前我曾介绍过SPDY的相关信息 ...
- iOS编程之前
iOS编程之前 更新:帖子已经重新被更新过,以便能更好的兼容Xcode 5和iOS 7. 至今为止,已经超过6000位读者加入了这个iOS免费教程.首先,我要感谢这些加入我们社区的朋友.在 ...
- MyReport报表引擎2.0.0.0新功能
Web报表引擎:Web上的良好的打印解决方式,WinForm的打印预览体现,报表自己主动化,支持直接打印,页小计,统计,转成金额大写,一维码显示等功能,满足中国式报表的常见功能需求.Web报表编辑器: ...
- iOS_67控件外观对照
iOS 7 button无边框,操作栏透明,控制器全屏 Tab Bar 对照 iOS 7 ...
- [原创].NET 分布式架构开发实战之一 故事起源
原文:[原创].NET 分布式架构开发实战之一 故事起源 .NET 分布式架构开发实战之一 故事起源 前言:本系列文章主要讲述一个实实在在的项目开发的过程,主要包含:提出问题,解决问题,架构设计和各个 ...
- Android学习路径(十)怎么会Action Bar堆放在布局
默认情况下.action bar出如今activity窗体的顶部.稍微降低了activity布局的总空间. 假设你想隐藏或者显示action bar.在这堂用户体验的课程中,你能够通过调用hide() ...
- UBuntu经常使用的操作(网络资源)
http://docs.google.com/Doc? id=dqsbw4c_46d89djccr 版权声明:本文博主原创文章.博客,未经同意不得转载.
- 阿里云+wordpress
阿里云+wordpress搭建个人博客网站[小白专用的图文教程] [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源 ...
- Android 应用程序启动过程源代码分析
本文转自:http://blog.csdn.net/luoshengyang/article/details/6689748 前文简要介绍了Android应用程序的Activity的启动过程.在And ...
- java项目导出为一个可执行文件jar包
1.选择要导出的项目. 对->export,选java在下面JAR file->next,选择要导出路径->next,finish. 2.选中导出的jar文件用压缩文件管理器打开 3 ...