区间和(图论)

小明与小红在玩一个猜谜游戏。小红有一个长度为N的下标从1开始的数组A。起初时,小明并不知道数组里的任何数。但是小红会告诉小明Q个关于数组A的信息,每个信息包括三个数字L、R、W表示:
A[L] + A[L + 1] + ... + A[R] = W

现在小红要小明用这Q组信息来推出数组A的值,小明希望你能够帮助他。

输入格式:

第一行输入两个正整数N(1≤N≤2000)、Q(1≤Q≤3000)

接下来Q行,每行3个正整数,分别是L、R、W(1≤L,R≤N)

数据保证所有的W加起来不会超过int的最大范围。

输出格式:

若这Q组信息不矛盾,那么输出一行,共N个数。第i个数表示数组A[i]的值,如果无法推测出A[i]的值,那么用字母o代替

若这Q组信息出现矛盾,那么输出一个字符x即可

输入样例1:

4 3
1 3 2
2 3 1
1 2 5

输出样例1:

1 4 -3 o

题目给出了信息:A[1]+A[2]+A[3]=2、A[2]+A[3]=1、A[1]+A[2]=5

A[4]无法根据已知信息推导出来

A[1]=A[1]+A[2]+A[3]−(A[2]+A[3])=2−1=1

A[2]=A[1]+A[2]−A[1]=5−1=4

A[3]=A[2]+A[3]−A[2]=1−4=−3

输入样例2:

4 3
3 3 2
1 2 2
1 3 3

输出样例2:

x

题目给出了A[3]=2, 又有A[3]=A[3]+A[2]+A[1]−(A[1]+A[2])=3−2=1, 产生矛盾,因此只输出一个字符x

把和抽象成图 建边 

a[1]+a[2]+a[3]=2---> 0到3距离为2 

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=2200;
int g[N][N];
int dist[N];//虚拟原点0 dist[]数组表示0-其他点的距离
int n,m;
int flag;
void bfs()
{
	memset(dist,0x3f,sizeof dist);
	dist[0]=0;
	queue<int>q;
	q.push(0);
	while(q.size())
	{
		int t=q.front();
		q.pop();
		for(int i=0;i<=n;i++)
		{
			if(g[t][i]!=0x3f3f3f3f)
			{
				if(dist[i]==0x3f3f3f3f)
				{
					dist[i]=dist[t]+g[t][i];
					q.push(i);
				}
				else if(dist[i]!=dist[t]+g[t][i])
				{
					flag=1;
					break;
				}
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	memset(g,0x3f,sizeof g);
	while(m--)
	{
		int a,b,c;cin>>a>>b>>c;
		g[a-1][b]=c;
		g[b][a-1]=-c;
	}
	bfs();
	if(flag) cout<<"x"<<endl;
	else
	{
		int tt=0;
		for(int i=1;i<=n;i++)
		{
			if(tt)cout<<" ";
			if(dist[i]==0x3f3f3f3f||dist[i-1]==0x3f3f3f3f) cout<<"o";
			else cout<<dist[i]-dist[i-1];
			tt=1;
		}
	}
	return 0;
}

相关推荐

  1. |841钥匙房间

    2024-03-22 11:22:03       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 11:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 11:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 11:22:03       82 阅读
  4. Python语言-面向对象

    2024-03-22 11:22:03       91 阅读

热门阅读

  1. Android中广播的基本介绍

    2024-03-22 11:22:03       41 阅读
  2. STM32利用ADC和DMA外设读取4路电压值Oled显示

    2024-03-22 11:22:03       42 阅读
  3. js- find() 方法

    2024-03-22 11:22:03       36 阅读
  4. Mybatis之like、likeRight、likeLeft的使用

    2024-03-22 11:22:03       39 阅读
  5. 记录 Selenium 常用功能和API

    2024-03-22 11:22:03       37 阅读
  6. vue-pdf 预览pdf (数据流)

    2024-03-22 11:22:03       37 阅读
  7. 使用python和perl语言实现xlsx转化为csv

    2024-03-22 11:22:03       47 阅读
  8. Ubuntu20.04配置

    2024-03-22 11:22:03       42 阅读
  9. Elastic-Job 分布式任务调度

    2024-03-22 11:22:03       45 阅读
  10. Redis中的事务机制

    2024-03-22 11:22:03       41 阅读
  11. 脏牛提权漏洞

    2024-03-22 11:22:03       45 阅读