Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
来源:互联网 发布:爱淘宝女装 编辑:程序博客网 时间:2024/05/16 07:46
题意:给一个图,找一条数值是上升的链,使得(链的结尾字符所连的结点数*链的长度)最大。
思路:首先每个点所连的结点数是非常好找的,读入两个数,u,v,son[u]++,son[v]++即可。主要是求到这个结点的最长长度,由于当前结点只能由数值比当前结点小的结点拓展而来,从小到大求,比当前结点小的所有结点的最长长度都已经确定了。所以,只需要在当前结点所连的结点中找一个结点数值比当前结点少,并且长度最大的即可。
坑点:我好蠢,开始想着从每个点出发,去更新其他点,然后被hack的不要不要的。
http://codeforces.com/contest/615/problem/B
/********************************************* Problem : Codeforces Author : NMfloat InkTime (c) NM . All Rights Reserved .********************************************/#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <ctime>#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>#define rep(i,a,b) for(int i = (a) ; i <= (b) ; i ++)#define rrep(i,a,b) for(int i = (b) ; i >= (a) ; i --)#define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next)#define cls(a,x) memset(a,x,sizeof(a))#define eps 1e-8using namespace std;const int MOD = 1e9+7;const int INF = 0x3f3f3f3f;const int MAXN = 1e5+5;const int MAXE = 4e5+5;typedef long long LL;typedef unsigned long long ULL;struct Edge { //记录边 int to; Edge * next;}E[MAXE],*EE;struct Gragh { //记录图的结点 Edge * first;}G[MAXN];int T;int n,m,k;int a[1000005];void addedge(int u,int v) { //加边,双向边 EE->to = v ; EE -> next = G[u].first ; G[u].first = EE ++; EE->to = u ; EE -> next = G[v].first ; G[v].first = EE ++;}void init() { EE = E; cls(G,0);}int fx[] = {0,1,-1,0,0};int fy[] = {0,0,0,-1,1};int vis[MAXN];int son[MAXN];//u连接的节点数int len[MAXN];//到达u的最大长度void input() { init(); int u,v; cls(son,0); rep(i,1,m) { scanf("%d %d",&u,&v); addedge(u,v); son[u] ++; son[v] ++; }}// void get_son(int u) {// int cnt = 0;// repE(p,u) {// cnt ++;// }// son[u] = cnt;// }void get_len(int u) { int v ; repE(p,u) { v = p->to; if(v < u && len[u] <= len[v]) { len[u] = len[v] + 1; } }}void solve() { // cls(son,0); // rep(i,1,n) { // get_son(i);//找每个节点的连接数; // } cls(len,0); rep(i,1,n) { len[i] = 1; get_len(i); } LL ret = 0; LL tmp; rep(i,1,n) { tmp = (LL)len[i] * (LL)son[i]; ret = max(ret,tmp); } printf("%I64d\n",ret);}int main(void) { //freopen("a.in","r",stdin); //scanf("%d",&T); while(T--) { while(~scanf("%d %d",&n,&m)) { input(); solve(); } return 0;}
0 0
- Codeforces Round #338 (Div. 2)B. Longtail Hedgehog解题报告
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- Codeforces Round #338 (Div. 2) 615B Longtail Hedgehog(dp)
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog(LIS)
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog DP
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- Codeforces Round #338 (Div. 2)B. Longtail Hedgehog(DP)
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- Codeforces 615B Longtail Hedgehog (Round #338 (Div. 2) B题)
- Codeforces Round #338 (Div. 2)B. Longtail Hedgehog(贪心+dp)
- CodeForces 615B Longtail Hedgehog
- codeforces 615B Longtail Hedgehog
- CodeForces 615B Longtail Hedgehog
- codeforces 615B Longtail Hedgehog
- Codeforces 615B Longtail Hedgehog 【dp】
- [CodeForces 615B]Longtail Hedgehog[DP]
- Codeforces 615B Longtail Hedgehog 【dp】
- CodeForces 615 B. Longtail Hedgehog(dp)
- android实现自定义RelativeLayout可拖动、缩放、旋转TextView
- jdk7 并行计算框架Fork/Join
- vmware安装Apache Storm集群
- 黑马程序员--OC--重写构造方法
- Java 进阶
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- 系统分析师书籍
- Nginx(二) 实践中遇到问题
- Linux下控制(统计)文件的生成的C代码实现
- 大数据系列第七课:RDD于Spark运行机制
- 如何获取chromium的源码
- app 之间跳转(iOS)
- centos上安装nodejs和npm的步骤以及发生错误时的解决方法
- 航电1232 畅通工程