当前位置: 首页 > news >正文

榆林公司做网站外链发布

榆林公司做网站,外链发布,wordpress test,衡水做网站技术[HAOI2010]软件安装 开始没有看懂题,以为就是个树形依赖背包,打完之后W40,然后才发现它会有还,要用tarjan缩完点后跑背包,要建立一个虚拟节点0连接所有的子图(注意连接的位置)。 但是有个细节卡…

[HAOI2010]软件安装

开始没有看懂题,以为就是个树形依赖背包,打完之后W40,然后才发现它会有还,要用tarjan缩完点后跑背包,要建立一个虚拟节点0连接所有的子图(注意连接的位置)。

但是有个细节卡了我好长时间:

错误示范:

1 for(int i=1;i<=n;i++)//这样会导致0连接的不是入度为0的点(或环)
2     if(!Dsn[i])
3     {
4         tarjan(i);
5         add(0,i);
6     }

正确代码:

1     for(int i=1;i<=tot;i++)
2     if(!du[i])
3         add2(0,i);

在缩点是记录每个scc的入度,0直接和入度为0的scc连接。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#define MAXN 110
#define ma(x) memset(x,0,sizeof(x))
using namespace std;
struct edge
{int u,v,nxt;#define u(x) ed[x].u#define v(x) ed[x].v#define n(x) ed[x].nxt#define u2(x) ed2[x].u#define v2(x) ed2[x].v#define n2(x) ed2[x].nxt
}ed[5010],ed2[5010];
int first[MAXN],num_e;
#define f(x) first[x]
int first2[MAXN],num_e2;
#define f2(x) first2[x]
int n,m;
int w[MAXN],v[MAXN],d[MAXN];
int w2[MAXN],v2[MAXN];int Dsn[MAXN],Low[MAXN],cnt;
int stack[MAXN],top;
bool vi[MAXN];
int belong[MAXN],tot;
int du[MAXN];
vector<int> scc[MAXN];
void tarjan(int x)
{Dsn[x]=++cnt;Low[x]=cnt;stack[++top]=x;vi[x]=1;for(int i=f(x);i;i=n(i))if(!Dsn[v(i)])tarjan(v(i)),Low[x]=min(Low[x],Low[v(i)]);else if(vi[v(i)])Low[x]=min(Low[x],Low[v(i)]);if(Dsn[x]==Low[x])	{++tot;vi[x]=0;while(stack[top]!=x){vi[stack[top]]=0;scc[tot].push_back(stack[top]);belong[stack[top--]]=tot;}scc[tot].push_back(stack[top]);belong[stack[top--]]=tot;}
}
inline void add(int u,int v)
{++num_e;u(num_e)=u;v(num_e)=v;n(num_e)=f(u);f(u)=num_e;
}
inline void add2(int u,int v)
{++num_e2;u2(num_e2)=u;v2(num_e2)=v;n2(num_e2)=f2(u);f2(u)=num_e2;
}
int f[MAXN][510];
void dfs(int x)
{f[x][w2[x]]=v2[x];for(int i=f2(x);i;i=n2(i)){dfs(v2(i));for(int j=m;j>=w2[x];j--)for(int k=0;k<=m;k++){if(j+k>m)break;f[x][j+k]=max(f[x][j+k],f[x][j]+f[v2(i)][k]);	}}
}
signed main()
{
//	freopen("in.txt","r",stdin);cin>>n>>m;for(int i=1;i<=n;i++)scanf("%d",&w[i]);for(int i=1;i<=n;i++)scanf("%d",&v[i]);for(int i=1;i<=n;i++){scanf("%d",&d[i]);if(d[i])add(d[i],i);}for(int i=1;i<=n;i++)if(!Dsn[i])tarjan(i);for(int i=1;i<=num_e;i++)if(belong[u(i)]!=belong[v(i)]){add2(belong[u(i)],belong[v(i)]);	du[belong[v(i)]]++;}for(int i=1;i<=tot;i++)if(!du[i])add2(0,i);for(int i=1;i<=tot;i++){for(int j=0;j<scc[i].size();j++){w2[i]+=w[scc[i][j]];v2[i]+=v[scc[i][j]];}}dfs(0);int ans=0;for(int i=1;i<=m;i++)ans=max(ans,f[belong[0]][i]);printf("%d\n",ans);
}

 

转载于:https://www.cnblogs.com/Al-Ca/p/11173831.html

http://www.lbrq.cn/news/2554273.html

相关文章:

  • 有没有发布需求的网站网络营销公司招聘
  • 河南省建设监理协会网站重庆做网络优化公司电话
  • 想做棋牌网站怎么做google下载安卓版下载
  • wordpress归档侧边栏按分类长沙做优化的公司
  • linux做网站西安官网seo技术
  • 江苏网站建设空间徐州百度推广公司
  • 做百度推广首先要做网站吗上海网站建设服务
  • 做网站学不需要做后台管理系统能打开各种网站的浏览器下载
  • wordpress的css文件在百度上如何做优化网站
  • 美术生最吃香的专业seo推广公司有哪些
  • 企业网站优化方案模板什么是网络营销的核心
  • 做网站后台数据库建设指数基金定投技巧
  • dw制作一个手机网站模板下载企业宣传软文
  • 做网站数据库表设计关键词百度网盘
  • 商品展示介绍网站源码柏乡seo快排优化
  • 全国十大装修公司windows优化大师有哪些功能
  • 手机代码网站有哪些问题吗沈阳优化推广哪家好
  • 上海人才引进网站百度一下你就知道移动官网
  • 怎么用IP做网站地址百姓网推广怎么收费标准
  • 国外wordpress主题破解版潍坊seo网络推广
  • 做网站什么空间好磁力神器
  • 备案的博客网站可以做别的吗缅甸最新新闻
  • 南通的网站建设品牌推广手段
  • 网站做加qq群链接地址谷歌引擎搜索入口
  • 免费速建网站关键词优化搜索排名
  • 公众号怎么做文章编辑短视频seo询盘获客系统软件
  • 全国旅游卡appseo网站搜索优化
  • 做付费网站站长全自动年赚30万免费推广网站排行榜
  • 大学新校区建设网站网络营销广告
  • app制作网站有哪些 请列举网站如何优化关键词排名
  • ubuntu22.04系统入门 linux入门(二) 简单命令 多实践以及相关文件管理命令
  • 从O(n²)到O(n log n):深度剖析快速排序的内存优化与cache-friendly实现
  • 微软发布Microsoft Sentinel数据湖国际版
  • Dify 从入门到精通(第 6/100 篇):配置你的第一个 LLM:OpenAI、Claude 和 Ollama
  • 深入探索Weaviate:构建高效AI应用的数据库解决方案
  • QT6 Python UI文件转换PY文件的方法