题目链接:http://acm.uestc.edu.cn/#/problem/show/1646

题意:求一个有n个元素的数列,满足任意连续p个数的和不小于s,
任意连续q个数的和不大于t。
解法:令sum[i]表示前i项的和(0<=i<=n,sum[0]=0)
那么题目的条件可转化为:
sum[i]-sum[i-p]>=s (p<=i<=n)
sum[i]-sum[i-q]<=t (q<=i<=n)
将第一个不等式取反,得到
sum[i-p]-sum[i]<=-s(p<=i<=n)

于是问题转化为求一系列不等式的解,这是一个典型的差分约束问题。

考虑最短路径的性质,令dis[i]表示从s到i的最短路,则对于图中存在的一条边(u,v),有
dis[v]<=dis[u]+w(u,v),即dis[v]-dis[u]<=w(u,v);
类比不等式,于是可建图,i向i-p引长度为-s的边,i-q向i引长度为t的边。

然后运行bellmanford,如果存在负环,则无解,
否则所得到的最短路的值就是sum[i]的一个解。

时间复杂度:O(VE)

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1010;
const int inf = 0x3f3f3f3f;
LL dis[maxn];
int head[maxn], edgecnt, n, p, q, s, t;
int cnt[maxn];
bool inq[maxn];
struct edge{int to,w,next;edge(){}edge(int to, int w, int next) : to(to), w(w), next(next) {}
}E[maxn*10];
void init(){edgecnt = 0;memset(head, -1, sizeof(head));
}
void add(int u, int v, int w){E[edgecnt].to = v, E[edgecnt].w = w, E[edgecnt].next = head[u], head[u] = edgecnt++;
}
bool spfa(){queue<int>que;for(int i=0; i<=n; i++) dis[i]=inf;memset(inq,0,sizeof(inq));memset(cnt,0,sizeof(cnt));dis[0]=0;que.push(0);inq[0]=1;for(int i=1; i<=n; i++){que.push(i);inq[i]=1;}while(!que.empty()){int u = que.front();que.pop();inq[u] = 0;for(int i=head[u]; ~i; i=E[i].next){int v = E[i].to;int w = E[i].w;if(dis[u] + 1LL*w < dis[v]){cnt[v]++;dis[v] = dis[u] + 1LL*w;if(cnt[v]>n) return false;if(!inq[v]){inq[v]=1;que.push(v);}}}}return 1;
}
int main()
{scanf("%d %d %d %d %d", &n, &p, &q, &s, &t);init();for(int i=0; i<=n; i++){if(i-p>=0) add(i,i-p,-s);if(i-q>=0) add(i-q,i,t);}if(spfa()){printf("Yes\n");printf("%lld", dis[1]);for(int i=2; i<=n; i++){printf(" %lld", dis[i]-dis[i-1]);}printf("\n");}else{printf("No\n");}return 0;
}

UESTC 1646 穷且益坚, 不坠青云之志。相关推荐

  1. UESTC 1646 穷且益坚, 不坠青云之志。 差分约束、Fellman-ford

    穷且益坚, 不坠青云之志. Time Limit: 6000/2000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  2. 穷且益坚,不坠青云之志——忆我的大学四年

    文章目录 一.前言 二.大学之前 1.从小的经历以及家庭的困境 2.一切的根源--自卑 3.不愉快的初高中经历 三.大一:所谓追梦--改变的起点 1.敏感而自卑的内心 2.百团大战,与协会埋下不解之缘 ...

  3. 【差分约束系统】【最短路】【spfa】CDOJ1646 穷且益坚, 不坠青云之志。

    求一个有n个元素的数列,满足任意连续p个数的和不小于s, 任意连续q个数的和不大于t. 令sum[i]表示前i项的和(0<=i<=n,sum[0]=0) 那么题目的条件可转化为: sum[ ...

  4. 开发之路,穷且益坚,不坠青云之志(入门开发者共勉)

    引言 2023毕业季,距离笔者毕业已过2年有余. 互联网从业环境由盛转衰,互联网从业者数量剧增,市场竞争异常激烈,原本的利润空间被不断挤压,以至于很多开发者对互联网已经失去了信心与激情. 互联网的市场 ...

  5. JAVA预习3-IO流(不坠青云之志)

    IO的含义: Stream流 1.流只能单方向流动      2.in输入流     3.out输出流     4.数据值从头到尾读写一次 流分为字节流和字符流 字符流:针对文本文件 字节流:针对二进 ...

  6. 团队项目介绍--基于区块链的教育信息管理系统

    1. 队名 EduChain小组 2. 队员风采 ①  姓名:马宁 职务:组长 学号:2017011742 风格:积极向上,乐观开朗,热情大方 擅长的技术:擅长html,css,js,bootstra ...

  7. 若有恒,何必三更眠五更起;最无益,莫过一日曝十日寒

    若有恒,何必三更眠五更起:最无益,莫过一日曝十日寒. --这是明代学者胡居仁自勉联,凸现出先贤刻苦攻读.持之以恒,并注重科学学习方法的治学经验. 颜真卿的是"三更灯火五更鸡,正是男儿读书时. ...

  8. 字符串拼接:语言C#(CSharp)

    今天我们来介绍一下C#语言的字符串花式拼接方式 1. 基本使用 废话少说,我们直接上代码,介绍一下字符串的拼接的方式 using System; using System.Collections.Ge ...

  9. 学习自旋电子学的笔记01:微磁模拟软件OOMMF的教程(中文版)10-15章

    穷且益坚,不坠青云之志.--王勃 <滕王阁序 > 目录 10 2D微磁求解器 10.1 2D微磁交互求解器:mmSolve2D. 10.2 OOMMF 2D微磁求解器批处理系统. 10.2 ...

最新文章

  1. oralce 增加表字段命令|oralce 增加表字段类型命令
  2. RocketMQ-初体验RocketMQ(06)-使用API操作RocketMQ ,理解RocketMQ的存储结构
  3. 安装Windows10,Ubuntu双系统14.04LTS记录
  4. 从C ++定义QML类型
  5. Teams Bot开发系列:初识Bot
  6. linux下安装nginx1.10,Linux(RHEL7.0)下安装nginx-1.10.2(示例代码)
  7. Fiddler过滤指定域名
  8. 网络编程之 application/x-www-form-urlencoded MIME编码
  9. Android开发:4-2、不同Activity数据的传递
  10. pintos project (2) Project 1 Thread -Mission 1 Code
  11. paip. mysql如何临时 暂时 禁用 关闭 触发器
  12. DeepRacer 资源合集
  13. 有关 delphi7读取 excel 报错EoleException with message '未找到提供程序,该程序可能未能正确安装' 解决方式
  14. 难道真的是RPWT-LFS日记1
  15. Shell脚本加密工具——Shc
  16. 【Microsoft Azure 的1024种玩法】三十四.将本地数据文件快速迁移到Azure Blob云存储最佳实践
  17. 信道容量受哪三个要素_连续信道容量与
  18. 服务器pd接口不显示,服务器新盘无法识别(JBOD)
  19. VUE v-modle 实现 |||| uniapp 父子组件实现 v-modle
  20. 下面程序的功能是调用fun函数以删除字符串中指定的字符

热门文章

  1. cnpm显示:无法加载文件 C:\Users\hp\AppData\Roaming\npm\cnpm.ps1
  2. 【基于STM32F103C8T6的智能风扇控制】
  3. FL Studio水果编曲20.8.4更新内容及新增功能介绍
  4. 【复旦微(Procise安装篇)】
  5. 频谱分析-FFT之后的那些事情
  6. MySQL连接查询——MySQL 基础查询你会了吗?
  7. 微软面试题目意义深远:制度建设问题
  8. 红帽子设置SSH基于密钥的用户登陆
  9. 寿星万年历---java算法实现
  10. 秋招|阿里测试开发岗面经(一共七次面试)