E. Air Conditioners

可以图论虚拟点做,也可以直接DP

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define int long long
const int N = 1e6+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}


int n,q,m;
int pos[N],temp[N];
// int e[N],ne[N],w[N],h[N],idx;
// void add(int a,int b,int c){
	// e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
// }
int dp[N];

void solve()
{
	cin>>n>>m;
	for(int i=0;i<=n+1;i++)dp[i] = 0x3f3f3f3f;
	for(int i=1;i<=m;i++)cin>>pos[i];
	for(int i=1;i<=m;i++)cin>>temp[i];
	
	for(int i=1;i<=m;i++)dp[pos[i]] =  temp[i];
	
	for(int i=1;i<=n;i++)dp[i] = min(dp[i],dp[i-1]+1);
	for(int i=n;i>=1;--i)dp[i] = min(dp[i],dp[i+1]+1);
	
	for(int i=1;i<=n;i++)cout<<dp[i]<<" \n"[i==n];
	
	

}

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _;
	cin>>_;
	//_ = 1;
	while(_--)solve();
	return 0;
}
cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define int long long
const int N = 1e6+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}


int n,q,m;
int pos[N],temp[N];
// int e[N],ne[N],w[N],h[N],idx;
// void add(int a,int b,int c){
	// e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
// }
int dp[N];

void solve()
{
	cin>>n>>m;
	for(int i=0;i<=n+1;i++)dp[i] = 0x3f3f3f3f;
	for(int i=1;i<=m;i++)cin>>pos[i];
	for(int i=1;i<=m;i++)cin>>temp[i];
	
	for(int i=1;i<=m;i++)dp[pos[i]] =  temp[i];
	
	for(int i=1;i<=n;i++)dp[i] = min(dp[i],dp[i-1]+1);
	for(int i=n;i>=1;--i)dp[i] = min(dp[i],dp[i+1]+1);
	
	for(int i=1;i<=n;i++)cout<<dp[i]<<" \n"[i==n];
	
	

}

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _;
	cin>>_;
	//_ = 1;
	while(_--)solve();
	return 0;
}
相关推荐
Swift社区10 分钟前
LeetCode 399 除法求值
算法·leetcode·职场和发展
仰泳的熊猫18 分钟前
LeetCode:98. 验证二叉搜索树
数据结构·c++·算法·leetcode
CC.GG24 分钟前
【C++】STL容器--list的使用
开发语言·c++·list
洲覆27 分钟前
基于 clangd 搭建 Redis 6.2 源码阅读与调试环境
开发语言·数据库·redis·缓存
Python智慧行囊31 分钟前
图像处理(三)--开运算与闭运算,梯度运算,礼帽与黑帽
人工智能·算法·计算机视觉
前端小L33 分钟前
动态规划的“细节魔鬼”:子序列 vs 子数组 —— 最长重复子数组
算法·动态规划
草莓熊Lotso34 分钟前
《算法闯关指南:优选算法--二分查找》--19.x的平方根,20.搜索插入位置
java·开发语言·c++·算法
旭意38 分钟前
C++蓝桥杯之函数与递归
开发语言·c++·蓝桥杯
。TAT。38 分钟前
C++ - vector
开发语言·c++·学习
杨福瑞39 分钟前
C语言数据结构:算法复杂度(1)
c语言·开发语言·数据结构