题目链接: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. MySQL案例-多源复制引起的内存泄漏
  2. 《微服务架构设计模式》总结,文末送书
  3. Office开发程序集版本及部署问题
  4. c语言中的set是置1嘛,c ++ - 如何检查元素是否在std :: set中?
  5. 不同系统可以用一个数据库服务器吗,同一个数据库 不同服务器吗
  6. [JavaScript] js获取Html元素的实际宽度高度
  7. 深入理解Python对象(源码深度解析)
  8. Java调用Memcache入门
  9. 联想小新打印机M7268W固件升级步骤
  10. 高斯过程回归python_GPR(高斯过程回归)详细推导
  11. python在直方图上画折线图_在python中,在柱状图上绘制一个折线图
  12. 南阳oj 题目10 skiing
  13. wex5 checkbox
  14. 主机耳机没声音win10
  15. python读取fits第三方库_python-astropy.io.fits从具有多个HDU的大型fits文件中读取行
  16. 美国国家安全局(NSA)“酸狐狸”漏洞攻击武器平台技术分析报告
  17. 牛客网网易机试模拟题(Android)记录
  18. oracle收集snop,SNAP收集服务器信息
  19. C语言输入三边求三角形面积
  20. zoj 2975 Kinds of Fuwas(数学题)

热门文章

  1. type在python中的用法_Python type的使用
  2. pycharm 光标闪烁问题
  3. ubuntu下安装迅雷
  4. Figma插件:Bitmap Tool
  5. Pwn2Own Tokyo 2020 用于挑战的Mobile和IOT设备清单
  6. 星辰天合亮相 2023 国际金融展,软件定义存储信创方案备受瞩目
  7. chm格式文件打开后不能浏览,怎么办?
  8. 2021年全球电涡流传感器市场销售额达到了5.8亿美元,预计2028年将达到7亿美元
  9. Input.mousePosition与hit.point的区别
  10. VirtualBox之虚拟机更换目录