首页 > 其他分享 >P2901 [USACO08MAR] Cow Jogging G (拓扑序+归并排序)

P2901 [USACO08MAR] Cow Jogging G (拓扑序+归并排序)

时间:2024-07-09 10:32:40浏览次数:12  
标签:std 归并 Cow int long Jogging P2901 排序 define

P2901 [USACO08MAR] Cow Jogging G

拓扑序+归并排序

容易看出图是有向无环图,考虑在拓扑序上维护每个点的 \(k\) 短路。假如遍历到 \(u\),有边 \((u,v,w)\),\(u\),\(v\) 各自有自己的 \(k\) 短路,我们需要将 \(u\) 上的 \(k\) 短路加 \(w\) 后与 \(v\) 上排序,然后去前 \(k\) 小。直接做是 \(O(k\log k)\) 的,但是不难想到两个有序数组可以用归并排序,这样是 \(O(k)\)。

每个边都需要合并一次,复杂度 \(O(mk)\)。

#include <bits/stdc++.h>
#define pii std::pair<int, int>
#define mk std::make_pair
#define fi first
#define se second
#define pb push_back

using i64 = long long;
using ull = unsigned long long;
const i64 iinf = 0x3f3f3f3f, linf = 0x3f3f3f3f3f3f3f3f;
const int N = 1e3 + 10;
int n, m, k;
std::vector<pii> e[N];
struct path {
	int p[110];
} a[N];
int b[N], c[N], ret[N];
void merge() {
	int bpos = 1, cpos = 1, rpos = 0;
	memset(ret, 0x3f, sizeof(ret));
	while(bpos <= k && cpos <= k) {
		if(b[bpos] <= c[cpos]) ret[++rpos] = b[bpos++];
		else ret[++rpos] = c[cpos++];
	}
	while(bpos <= k) ret[++rpos] = b[bpos++];
	while(cpos <= k) ret[++rpos] = c[cpos++];
}
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
	std::cin >> n >> m >> k;
	for(int i = 1; i <= m; i++) {
		int u, v, d;
		std::cin >> u >> v >> d;
		e[u].pb({v, d});
	}

	std::queue<int> q;
	q.push(n);
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= k; j++) a[i].p[j] = iinf;
	}
	a[n].p[1] = 0;
	for(int u = n; u >= 0; u--) {
		for(auto x : e[u]) {
			int v = x.fi, w = x.se;
			bcnt = ccnt = 0;
			for(int i = 1; i <= k; i++) b[i] = a[u].p[i] + w * (a[u].p[i] != iinf);
			for(int i = 1; i <= k; i++) c[i] = a[v].p[i];
			merge();
			for(int i = 1; i <= k; i++) a[v].p[i] = ret[i];
		}
	}

	for(int i = 1; i <= k; i++) {
		std::cout << (a[1].p[i] != iinf ? a[1].p[i] : -1) << "\n"; 
	}

	return 0;
}

标签:std,归并,Cow,int,long,Jogging,P2901,排序,define
From: https://www.cnblogs.com/FireRaku/p/18291228

相关文章

  • P7411 [USACO21FEB] Comfortable Cows S (搜索)
    P7411[USACO21FEB]ComfortableCowsS搜索容易知道任意时刻的不合法的位置,并且决策只有将空着的位置补起来。每次加入一个点,判断其自身、上下左右是否变得不合法,往下递归即可。复杂度分析,每个点只会不合法一次(修改后就变得合法),所以只会遍历一次,复杂度是\(O(n^2)\)。#inclu......
  • P8271 [USACO22OPEN] COW Operations S (思维)
    P8271[USACO22OPEN]COWOperationsS思维题遇到不明白的操作,尝试在纸上模拟操作过程,找到性质。第一种操作目前没有什么特别的,有一个它不会改变字符的奇偶性。重点是第二个。我们容易发现CO->W->OC这样的过程,它实现了相邻位置的互换,这个性质正是冒泡排序的过程,所以字符的排......
  • 有趣的Python库——CowSay
    有趣的Python库——CowSay安装:pipinstallcowsay命令式使用:cowsay-cpig-t你好,我是一只猪哦!输出:__________|你好,我是一只猪哦!|==========\\\\,.(_|,......
  • P3056 [USACO12NOV] Clumsy Cows S
    [USACO12NOV]ClumsyCowsS题目描述Bessiethecowistryingtotypeabalancedstringofparenthesesintohernewlaptop,butsheissufficientlyclumsy(duetoherlargehooves)thatshekeepsmis-typingcharacters.Pleasehelpherbycomputingthemi......
  • ProxmoxVE(PVE)使用IMG镜像文件,img/raw转qcow2
    第一步,创建虚拟机。第二步,登陆SHELL,具体登陆方法自己探索。使用WinSCP之类的软件把img2kvm和IMG镜像上传到ROOT目录,当然也可以使用wget命令下载到PVE宿主机。img2kvm下载地址:*注:第二种方法无需img2kvm。第三步:IMG转换第一种:chmod+ximg2kvm./img2kvmLEDE.img101vm-1......
  • P1474 [USACO2.3] Money System / [USACO07OCT]Cow Cash G
    有点水,但是细究还是有点意思的题目https://www.luogu.com.cn/problem/P1474一开始的代码:#define_CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<......
  • 【题解】 [USACO 2009 Mar] Cow Frisbee Team S
    题目描述题意分析从\(N\)个整数中取若干个(不能不选),且取的数之和为\(F\)的倍数的总方案数对\(10^8\)取余的值。思路这道题是一道二维线性DP。那么根据线性DP的解题方法。首先,找出题目的阶段性。这道题显而易见方案数随着选择的个数而变化,那么这道题就以选择的个数作为阶段......
  • P3611 [USACO17JAN] Cow Dance Show S
    原题链接题解一句话总结:第\(i\)头奶牛继承场上\(k\)头奶牛里结束时间最短的code#include<bits/stdc++.h>usingnamespacestd;intn,t;intd[100005];intcheck(intk){priority_queue<int,vector<int>,greater<int>>q;for(inti=1;i<=n;i++)......
  • P3007 [USACO11JAN] The Continental Cowngress G
    P3007[USACO11JAN]TheContinentalCowngressG题目链接思路:2-SAT模板,经典的或条件,那么直接建图即可,对于可行解,我们直接枚举每个方案支持和反对,然后染色判断即可。代码:#include<bits/stdc++.h>usingnamespacestd;#definefffirst#definesssecond#definepbpush_......
  • The cowherd and the weaving maid
    ThecowherdandtheweavingmaidInthecelestialcourtoftheJadeEmperorlivedsevenprincesses.Eachhadtheirchosenplaceincourt,buttheyoungestprincesshadaspecialskill.Shecouldpluckcloudsfromtheskyandspinthemintothesoftestrob......