poj1949Chores(建图或者dp)
/*
题意:n个任务,有某些任务要在一些任务之前完成才能开始做!
第k个任务的约束只能是1...k-1个任务!问最终需要最少的时间完成全部的
任务!
思路:第i个任务要在第j个任务之前做,就在i,j之间建立一条有向边!
如果第i个任务之前没有任务,那么就是0和i建立一条有向边!
最后求一条0到所有节点距离的最大值!不一定是最后一个任务完成的
时间是最长的时间.......
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#define N 10005
using namespace std; struct Edge{
int v, w;
Edge(){} Edge(int v, int w){
this->v=v;
this->w=w;
}
}; queue<int>q;
vector<Edge>g[N];
int d[N];
int vis[N];
int maxT;
void spfa(){
q.push();
vis[]=;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=;
int len=g[u].size();
for(int i=; i<len; ++i){
int v=g[u][i].v, w=g[u][i].w;
if(d[v]<d[u]+w){
d[v]=d[u]+w;
if(maxT<d[v]) maxT=d[v];
if(!vis[v]){
q.push(v);
vis[v]=;
}
}
}
}
}
int main(){
int n;
scanf("%d", &n);
for(int i=; i<=n; ++i){
d[i]=vis[i]=;
int tt, m;
scanf("%d%d", &tt, &m);
if(m==) g[].push_back(Edge(i, tt));
while(m--){
int v;
scanf("%d", &v);
g[v].push_back(Edge(i, tt));
}
}
maxT=;
spfa();
printf("%d\n", maxT);
return ;
}
/*
思路:其实是一个简单的dp题目!
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 10005
using namespace std;
int dp[N];
int main(){ int n, maxT=;
scanf("%d", &n);
for(int i=; i<=n; ++i){
int w, m;
scanf("%d%d", &w, &m);
if(m==) dp[i]=w;//不仅仅只有1节点没有约束节点 while(m--){
int v;
scanf("%d", &v);
dp[i]=max(dp[i], dp[v]+w);
}
if(maxT<dp[i]) maxT=dp[i];
}
printf("%d\n", maxT);
return ;
}
poj1949Chores(建图或者dp)的更多相关文章
- Fantasia (点强连通分量建图 + 树形DP)
简化一下题意,我们先看成一副强连通的图,这时候应该是最简单了,去点任意点都是其他的乘积.那再加强一点难度,改为两个强连通图连接的非强连通图呢?那应该就是找出关键的那个点,并求出两边的乘积.但是一个一个 ...
- [十二省联考2019]字符串问题——后缀自动机+parent树优化建图+拓扑序DP+倍增
题目链接: [十二省联考2019]字符串问题 首先考虑最暴力的做法就是对于每个$B$串存一下它是哪些$A$串的前缀,然后按每组支配关系连边,做一遍拓扑序DP即可. 但即使忽略判断前缀的时间,光是连边的 ...
- bzoj5017 炸弹 (线段树优化建图+tarjan+拓扑序dp)
直接建图边数太多,用线段树优化一下 然后缩点,记下来每个点里有多少个炸弹 然后按拓扑序反向dp一下就行了 #include<bits/stdc++.h> #define pa pair&l ...
- BZOJ 1924 && Luogu P2403 [SDOI2010]所驼门王的宝藏 恶心建图+缩点DP
记住:map一定要这么用: if(mp[x[i]+dx[j]].find(y[i]+dy[j])!=mp[x[i]+dx[j]].end()) add(i,mp[x[i]+dx[j]][y[i]+dy ...
- [SDOI2010] 所驼门王的宝藏 [建图+tarjan缩点+DAG dp]
题面传送门: 传送门 思路: 看完题建模,容易得出是求单向图最长路径的问题 那么把这张图缩强联通分量,再在DAG上面DP即可 然而 这道题的建图实际上才是真正的考点 如果对于每一个点都直接连边到它所有 ...
- 一个神秘的oj2587 你猜是不是dp(线段树优化建图)
哇 这难道不是happiness的翻版题嘛? 从\(S\)向一个点连染成白色的收益 从这个点向\(T\)连染成黑色的收益 对于额外的收益,建一个辅助点,跟区间内的每个点连\(inf\),然后向S/T, ...
- 【BZOJ-4289】Tax 最短路 + 技巧建图
4289: PA2012 Tax Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 168 Solved: 69[Submit][Status][Dis ...
- [NOI2008][bzoj1061] 志愿者招募 [费用流+巧妙的建图]
题面 传送门 思路 引入:网络流? 看到这道题,第一想法是用一个dp来完成决策 但是,显然这道题的数据并不允许我们进行dp,尤其是有10000种志愿者的情况下 那么我们就要想别的办法来解决: 贪心?这 ...
- BZOJ1924 [Sdoi2010]所驼门王的宝藏 【建图 + tarjan】
题目 输入格式 第一行给出三个正整数 N, R, C. 以下 N 行,每行给出一扇传送门的信息,包含三个正整数xi, yi, Ti,表示该传送门设在位于第 xi行第yi列的藏宝宫室,类型为 Ti.Ti ...
随机推荐
- iOS开发 swift3.0中文版
swift3.0中文版: http://pan.baidu.com/s/1nuHqrBb
- strncpy和memcpy的区别
今天不小心在该用memcpy的时候,用了strncpy使自己吃了亏,所以写出这个博文. memcpy就是纯字节拷贝,而strncpy就不同了,字符串是以'\0'结尾的.如果一个字符buffer长度为6 ...
- jquery事件委托遇到的小坑记录
<script type="text/javascript" src="../../lib/jquery-1.11.2.min.js"></s ...
- install openvpn and openvpn manager in ubuntu
sudo apt-get install openvpn sudo apt-get install network-manager-openvpn
- 初步了解yield_python
yield 关键字是在学习python生成器(Generator)时遇到的,对于它及Generator至今我还不能很深入的理解,当前只是把所理解的知识作下记录,以便以后翻查. yield关键字是用来定 ...
- Mybatis 后台SQL不输出
在正确设置log4j.properties之后还是无法输出想要的SQL语句 经过搜索,发现是跟slf4j-api-1.6.1.jar这个jar包冲突了. 删掉之后就正常了, 但是这个包删掉的话acti ...
- A Silverlight Bug ?
昨日在写Silverlight程序的时候,遇到一个问题,感觉是Silverlight的Bug.使用版本是Silverlight5.异常信息如下: 行: 56错误: Silverlight 应用程序中未 ...
- 你以为的ASP.NET文件上传大小限制是你以为的吗
我们以为的文件大小限制 我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传文件大小限制,那么我们可以在web.confi ...
- sublime Text 2 制表符
写python的时候经常会有提示indent expected错误很常见,比如同一个文件有的是用空格敲出来的,有的是用tab键出来的这时候错误很难排查,这里说说在notepad++跟sublime下的 ...
- ORACLE EXP/IMP的使用详解
导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp 是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的 ...