摘要: 将存在特殊关系的城市之间连边,才用哈希表统计具有特殊关系的城市对数 注意:若某个城市自身到自身存在边,则忽略,因为题目要求是不同的两个城市之间存在特殊的关系 unordered_map<string,int> mp; int n; int main() { ios; cin>>n; int ans= 阅读全文
posted @ 2020-09-02 22:33 Dazzling! 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 为使整张图连通,还应增加的边数为连通块数减一 const int N=5010; int p[N]; int n,m,q; int find(int x) { if(x != p[x]) p[x]=find(p[x]); return p[x]; } int main() { while(cin>> 阅读全文
posted @ 2020-09-02 12:20 Dazzling! 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 从k个奶牛分别dfs,用cnt[i]表示第i个牧场可以被多少头奶牛抵达,只有cnt[i]==k的牧场满足条件。 const int N=1010; vector<int> g[N]; int cow[110]; int cnt[N]; bool vis[N]; int k,n,m; void dfs 阅读全文
posted @ 2020-09-02 12:00 Dazzling! 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 这个城市的路线只能由前面的城市过来(拓扑结构),因此跟自己前面最大经过城市数 +1 比较取最大即可 const int N=1e5+10; vector<int> g[N]; int f[N]; int din[N]; int n,m; void topo() { for(int i=1;i<=n; 阅读全文
posted @ 2020-09-01 18:15 Dazzling! 阅读(220) 评论(0) 推荐(0) 编辑
摘要: spfa const int N=1510; vector<PII> g[N]; LL dist[N]; bool vis[N]; int n,m; void spfa() { memset(dist,-0x3f,sizeof dist); queue<int> q; q.push(1); dist 阅读全文
posted @ 2020-09-01 18:01 Dazzling! 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题目链接 注意最后统计要包含所有出度为0的点上的食物链个数 const int N=5010; vector<int> g[N]; int din[N],dout[N]; int f[N]; int n,m; int topo() { queue<int> q; for(int i=1;i<=n;i 阅读全文
posted @ 2020-09-01 17:08 Dazzling! 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 显然地,本题中各项工作是有一定的依赖条件的,也就是说我们在进行工作 X 之前可能需要先进行一些其他的工作。 而完成工作 X 所需的时间和所有 X 所依赖的工作完成的时间的最大值有关。(应该还好理解吧) 在这道题中,我们可以列出一个简单的 DP 转移方程: $$f_i=\max\{pre_i\}+a_ 阅读全文
posted @ 2020-09-01 11:43 Dazzling! 阅读(128) 评论(0) 推荐(0) 编辑
摘要: const int N=1e5+10; vector<int> g[N]; bool vis[N]; int n,m; void dfs(int u) { vis[u]=true; cout<<u<<' '; sort(g[u].begin(),g[u].end()); for(int i=0;i< 阅读全文
posted @ 2020-09-01 10:59 Dazzling! 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 暴力:\(O(n^4)\) const int N=10; int f[N][N][N][N]; int g[N][N]; int n; int main() { cin>>n; while(1) { int a,b,c; cin>>a>>b>>c; if(!a && !b && !c) break 阅读全文
posted @ 2020-09-01 10:18 Dazzling! 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 倒序处理即可 const int N=10010; struct carpet { int a,b,c,d; }e[N]; int n; int main() { cin>>n; for(int i=0;i<n;i++) { cin>>e[i].a>>e[i].b>>e[i].c>>e[i].d; 阅读全文
posted @ 2020-08-30 18:23 Dazzling! 阅读(106) 评论(0) 推荐(0) 编辑