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 ...
随机推荐
- 小代码编写神器:LINQPad 使用入门
原文:小代码编写神器:LINQPad 使用入门 一:概述 1:想查看程序运行结果,又不想启动 VS 怎么办? 2:想测试下自己的 C# 能力,不使用 VS 的智能感知,怎么办? 那么,我们有一个选择, ...
- Swift1_关闭
// main.swift // swift1_关闭 // Created by beyond on 15/6/12. // Copyright (c) 2015年 beyond.com All ri ...
- 跳转表C语言,不比redis版本号
本来跳表的原理很easy的(相对于红 - 黑树),但国庆间歇性地搞5天才捞起来-- 我学会了跳之前写表的链式结构完全基于,我看着写的过程中redis实现,它的每个键列都是用数组来表示的.细致想了想发现 ...
- shell编程三大神器之grep
- 2014年度辛星完全解读html部分
接下来,我们继续学习HTML标签,希望大家可以再接再厉.同一时候辛星也会支持大家.我们一起努力,一起加油. 我们本小节来认识另外几个标签. *************空格和换行************ ...
- Visual Studio 2015使用EF6的ModelFirst模式添加实体数据模型缺少tt文件问题
在看实体框架 (EF) 入门的时候,当按照样例做到ModelFirst的时候出问题了 这是使用vs2015新建的实体数据模型 这是官网样例 对比样例截图,会发现里面缺少.tt的文件.最重要的是最终代码 ...
- Cocos2d-x 游戏植入广告(百度插屏)
DEMO下载:http://download.csdn.net/detail/oyangyufu/7652803 1.声明Activity <!-- 声明百度的Activity --> & ...
- Repository、IUnitOfWork和IDbContext
DDD 领域驱动设计-谈谈Repository.IUnitOfWork和IDbContext的实践 上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDb ...
- Struts2大约Action系统培训6大约action的接受三个参数的方法
我们知道,action在web它在控制器的发展起到了一定作用,通过接收client来到参数,运行不同的模块只实现运营,因此,接收参数是非常重要的组成部分,有接收到的参数的仅前端.操作权限运行数据库后端 ...
- HTML5分析实战WebSockets基本介绍
HTML5 WebSockets规范定义了API,同意web使用页面WebSockets与远程主机协议的双向交流. 介绍WebSocket接口,并限定了全双工通信信道,通过套接字网络.HTML5 We ...