2018.09.08 NOIP模拟trip(最长链计数)
差不多是原题啊。
求最长链变成了最长链计数,其余没有变化。
这一次考试为了保险起见本蒟蒻还是写了上次没写的辅助数组。
代码:
#include<bits/stdc++.h>
#define N 50005
#define M 200005
#define mod 1000000007
#define ll long long
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
int f[N],n,m,f1[N],hd,tl,maxn=0;
ll g[N],g1[N],ans=0;
struct edge{int u,v,w;}e[M<<1];
inline bool cmp(edge a,edge b){return a.w>b.w;}
int main(){
freopen("trip.in","r",stdin);
freopen("trip.out","w",stdout);
n=read(),m=read(),hd=tl=1;
for(int i=1;i<=n;++i)f[i]=1,g[i]=1;
for(int i=1;i<=m;++i)e[i].u=e[i+m].v=read(),e[i].v=e[i+m].u=read(),e[i].w=e[i+m].w=read();
m<<=1;
sort(e+1,e+m+1,cmp);
for(int i=1;i<=m;++i){
while(e[i].w==e[i+1].w)++i,++tl;
for(int j=hd;j<=tl;++j)f1[e[j].u]=f[e[j].u],g1[e[j].u]=g[e[j].u];
for(int j=hd;j<=tl;++j){
int len=f1[e[j].u]+1;
if(len>f[e[j].v]){f[e[j].v]=len,g[e[j].v]=g1[e[j].u];}
else if(len==f[e[j].v])(g[e[j].v]+=g1[e[j].u])%=mod;
}
hd=tl+1,tl=hd;
}
for(int i=1;i<=n;++i){
if(f[i]>maxn)maxn=f[i],ans=g[i];
else if(f[i]==maxn)(ans+=g[i])%=mod;
}
cout<<maxn-1<<'\n'<<ans;
return 0;
}
2018.09.08 NOIP模拟trip(最长链计数)的更多相关文章
- 2018.11.03 NOIP模拟 树(长链剖分优化dp)
传送门 考虑直接推式子不用优化怎么做. 显然每一个二进制位分开计算贡献就行. 即记录fi,jf_{i,j}fi,j表示距离iii这个点不超过jjj的点的每个二进制位的0/10/10/1个数. 但直接 ...
- 2018.09.08 NOIP模拟 division(状压dp)
这么sb的题考场居然写挂了2233. 假设n=∏iaiki" role="presentation" style="position: relative;&qu ...
- 2018.09.08 NOIP模拟eat(贪心)
签到水题啊... 这题完全跟图论没有关系. 显然如果确定了哪些点会被选之后顺序已经不重要了.于是我们给点按权值排序贪心从大向小选. 我们要求的显然就是∑i(a[i]−(n−i))" role ...
- 2018.11.08 NOIP模拟 班车(倍增+dfs+bit)
传送门 对于每个点离线处理出向上走2i2^i2i班车到的最上面的点. 然后每个询问(u,v)(u,v)(u,v)先把(u,v)(u,v)(u,v)倍增到刚好走不到lcalcalca的情况(有一个点如果 ...
- 2018.11.08 NOIP模拟 水管(简单构造)
传送门 仔细读题会发现只要所有点点权之和等于0一定有解. 如何构造? 直接当做树来构造就行了,非树边都赋值成0就行. 代码
- 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)
传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...
- 2018.10.08 NOIP模拟 栅栏(树状数组+rand)
传送门 今天的送分题. 首先考虑每次给要围上栅栏的矩阵里的整体加上1,如果栅栏被撤销就整体减1,最后比较两个点的值是否相同来进行判断. 然而这样的效果并不理想,很容易卡掉. 进一步思考,我们第iii次 ...
- 2018.10.08 NOIP模拟 序列(主席树)
传送门 T2防ak题? 其实也不是很难(考试时sb了). 直接变形一下求出区间长度在[l2,r2][l2,r2][l2,r2]之间,中位数≤l1−1\le l1-1≤l1−1的区间数,和区间长度在[l ...
- 2018.10.08 NOIP模拟 斐波那契(贪心+hash/map)
传送门 签到题. 显然是可以贪心分组的,也就是尽量跟当前的分成一组. 这时我们需要判断a[l]+a[r],a[l+1]+a[r]...a[r−1]+a[r]a[l]+a[r],a[l+1]+a[r]. ...
随机推荐
- 11. SpringMVC拦截器(资源和权限管理)
1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet. DispatcherServl ...
- jdk下载--操作系统
不同的操作系统需要下载不同的jdk. 查看操作系统的命令: Window系统下:>winver Linux和Unix系统下: >uname -a 根据系统不同选用不同的jdk: 下载地址: ...
- Asp.net MVC重要
1.asp.net mvc百度解释 2.asp.net mvc各版本特点 3.asp.net mvc知多少 4.asp.net mvc4入门到精通系列目录汇总(邹琼俊)[重要] 5.新年奉献MVC+E ...
- json decimal and datetime
python json模块默认不能序列化decimal和datetime数据,可以通过自定义一个序列化的类实现: link: http://www.cnblogs.com/buxizhizhoum/p ...
- java工程中不能存在多个数据库连接jar包
java工程中不能存在多个数据库连接jar包 比如存在mysql-java-connector.jar的,放入mssqlserver.jar就会产生冲突.只能存在一个类型的jar包.
- JAVA中的异常疑点解析
1 final, finally, finalize的区别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承. 内部类要访问局部变量,局部变量必须定义成final类型 ...
- MySQL中实现Oracle里面 rank()over ( PARTITION BY ORDER BY) 分类分组功能
各班级学生成绩测试表 select * from TMP_A; 实现目的: 按照班级分类后按照分数倒序排序 采用MySQL变量简单实现,SQL如下: SELECT a.stu_id,a.point, ...
- Ubuntu下Anaconda3的安装
1)去https://www.anaconda.com/download/#download下载Anaconda安装文件(python3.6的版本). 2)进入到Anaconda3-5.0.1-Lin ...
- Java8 Stream语法详解 2
1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...
- tomcat发布webservice
编写后台代码: package test; import javax.jws.WebParam; import javax.jws.WebService; @WebService public cla ...