Codeforces Round #338 (Div. 2)B. Longtail Hedgehog(贪心+dp)
来源:互联网 发布:淘宝刷钻多少钱 编辑:程序博客网 时间:2024/04/30 00:15
This Christmas Santa gave Masha a magic picture and a pencil. The picture consists ofn points connected by m segments (they might cross in any way, that doesn't matter). No two segments connect the same pair of points, and no segment connects the point to itself. Masha wants to color some segments in order paint a hedgehog. In Mashas mind every hedgehog consists of a tail and some spines. She wants to paint the tail that satisfies the following conditions:
- Only segments already presented on the picture can be painted;
- The tail should be continuous, i.e. consists of some sequence of points, such that every two neighbouring points are connected by a colored segment;
- The numbers of points from the beginning of the tail to the end should strictly increase.
Masha defines the length of the tail as the number of points in it. Also, she wants to paint some spines. To do so, Masha will paint all the segments, such that one of their ends is theendpoint of the tail. Masha defines the beauty of a hedgehog as the length of the tail multiplied by the number of spines. Masha wants to color the most beautiful hedgehog. Help her calculate what result she may hope to get.
Note that according to Masha's definition of a hedgehog, one segment may simultaneously serve as a spine and a part of the tail (she is a little girl after all). Take a look at the picture for further clarifications.
First line of the input contains two integers n andm(2 ≤ n ≤ 100 000,1 ≤ m ≤ 200 000) — the number of points and the number segments on the picture respectively.
Then follow m lines, each containing two integersui andvi (1 ≤ ui, vi ≤ n,ui ≠ vi) — the numbers of points connected by corresponding segment. It's guaranteed that no two segments connect the same pair of points.
Print the maximum possible value of the hedgehog's beauty.
8 64 53 52 51 22 86 7
9
4 61 21 31 42 32 43 4
12
The picture below corresponds to the first sample. Segments that form the hedgehog are painted red. The tail consists of a sequence of points with numbers1, 2 and 5. The following segments are spines: (2, 5), (3, 5) and (4,5). Therefore, the beauty of the hedgehog is equal to3·3 = 9.
这题其实就是贪心+dp来求各个数字形成的一条从小到大的链有多大,然后选最大的就OK了。
AC代码:
#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<vector>#include<cstdio>#include<cmath>using namespace std;#define CRL(a) memset(a,0,sizeof(a))typedef __int64 ll;#define T 300005#define mod 1000000007ll dp[T],v[T];struct node{ int L,R;}a[T];bool cmp(const node& a,const node& b){ return a.L<b.L||(a.L==b.L&&a.R<b.R);}int main(){#ifdef zsc freopen("input.txt","r",stdin);#endif int n,m,i,j,k,rc,lc; while(~scanf("%d%d",&n,&m)) { for(i=0;i<=n;++i){ dp[i] = 1,v[i] = 0; } for(i=0;i<m;++i){ scanf("%d%d",&rc,&lc); v[lc]++,v[rc]++; if(lc<rc){ lc ^= rc; rc = lc^rc; lc = rc^lc; } a[i].L = rc,a[i].R = lc; /*dp[lc] = max(dp[lc],dp[rc]+1);*/ } sort(a,a+m,cmp); for(i=0;i<m;++i){ dp[a[i].R] = max(dp[a[i].R],dp[a[i].L]+1); } ll ma=0; for(i=1;i<=n;++i){ ma = max(ma,dp[i]*v[i]); } printf("%I64d\n",ma); } return 0;}
- Codeforces Round #338 (Div. 2)B. Longtail Hedgehog(DP)
- Codeforces Round #338 (Div. 2)B. Longtail Hedgehog(贪心+dp)
- Codeforces Round #338 (Div. 2) 615B Longtail Hedgehog(dp)
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog DP
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog(LIS)
- Codeforces Round #338 (Div. 2)B. Longtail Hedgehog解题报告
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- Codeforces 615B Longtail Hedgehog (Round #338 (Div. 2) B题)
- CodeForces 615 B. Longtail Hedgehog(dp)
- CodeForces 615B Longtail Hedgehog(dp)
- Codeforces--615B--Longtail Hedgehog(贪心模拟)
- Codeforces 615B Longtail Hedgehog 【dp】
- [CodeForces 615B]Longtail Hedgehog[DP]
- Codeforces 615B Longtail Hedgehog 【dp】
- Codeforces 615B Longtail Hedgehog【dp】
- [CodeForces 615B] Longtail Hedgehog [DP]
- 面向对象的设计模式(十二),外观模式
- string 根据字符分割函数
- Java利用classloader从classpath加载资源
- 20.4 触发事件
- 集群(cluster)和高可用性(HA)的概念
- Codeforces Round #338 (Div. 2)B. Longtail Hedgehog(贪心+dp)
- 蓝桥杯 BASIC-10 十进制转十六进制
- Sublime for Web
- 求解x=a^b(mod m)
- android studio
- 防止QQ扫描!加密聊天软件推荐-telegram
- 关于Android自定义view 你所需要知道的基本函数
- CDIO阶段小结
- iOS自动布局进阶用法