P4013 数字梯形问题 网络流二十四题
P4013 数字梯形问题
题目描述
给定一个由 nn 行数字组成的数字梯形如下图所示。
梯形的第一行有 m 个数字。从梯形的顶部的 m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径。
分别遵守以下规则:
从梯形的顶至底的 m 条路径互不相交;
从梯形的顶至底的 m 条路径仅在数字结点处相交;
从梯形的顶至底的 m 条路径允许在数字结点相交或边相交。
输入输出格式
输入格式:
第 1 行中有 2 个正整数 m 和 n ,分别表示数字梯形的第一行有 m 个数字,共有 n 行。接下来的 n 行是数字梯形中各行的数字。
第 1 行有 m 个数字,第 2 行有 m+1 个数字,以此类推。
输出格式:
将按照规则 1 ,规则 2 ,和规则 3 计算出的最大数字总和并输出,每行一个最大总和。
输入输出样例
输入样例#1:
2 5
2 3
3 4 5
9 10 9 1
1 1 10 1 1
1 1 10 12 1 1
输出样例#1:
66
75
77
说明
\(1\leq m,n \leq 20\)
7.19考试T3
LMC刚说了网络流字符串只会板子就行然后就考了网络流
s和t就不说了
规则1:
点和边都不能相交
边不能相交,我们可以把流量设为1
点的话,网络流最常用的方法就是拆点
点1连接入边,点2连接出边,然后点1和点2连接起来,流量为1
规则2:
点随便走的话,就不用管它了
边的流量为1
注意,最后一层向t连边的时候是inf
(一个1 AC变暴力考试细节爆炸)
规则三:
数字三角形
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#define maxn 50007
using namespace std;
int a[maxn];
int belong[maxn];
int vis[maxn];
int ans[maxn];
int n,m,k;
int mi,ma;
inline int read()
{
int x=0,f=1;char s=getchar();
while('0'>s||s>'9') {if(s=='-')f=-1;s=getchar();}
while('0'<=s&&s<='9') {x=x*10+s-'0';s=getchar();}
return x*f;
}
struct node{
int x,y,id,mod;
}q[maxn];
inline bool cmp(const node &a,const node &b) {
belong[a.x]==belong[b.x] ? a.y<b.y :a.x<b.x;
}
int gcd(int a,int b) {
return !b?a:gcd(b,a%b);
}
int main()
{
n=read();
m=read();
int k=sqrt(n);
for(int i=1;i<=n;++i)
belong[i]=(i-1)/k+1;
mi=0x3f3f3f3f;
ma=-mi;
for(int i=1;i<=n;++i)
{
a[i]=read();
mi=min(mi,a[i]);
ma=max(ma,a[i]);
}
for(int i=1;i<=m;++i)
{
q[i].x=read();
q[i].y=read();
q[i].mod=read();
q[i].id=i;
}
sort(q+1,q+1+m,cmp);
int l=0,r=0;
for(int i=1;i<=m;++i)
{
while(l > q[i].x) ++vis[a[--l]];
while(l < q[i].x) --vis[a[l++]];
while(r > q[i].y) --vis[a[r--]];
while(r < q[i].y) ++vis[a[++r]];
int now=0;
for(int j=mi;j<=ma;++j)
{
if(!vis[j]) continue
if(gcd(min(vis[j],q[i].mod),max(vis[j],q[i].mod))==1) now++;
}
ans[q[i].id].ans=now;
}
for(int i=1;i<=m;++i)
printf("%d\n",ans[i]);
return 0;
}
P4013 数字梯形问题 网络流二十四题的更多相关文章
- 网络流二十四题,题解summary
没有全部写完,有几题以后再补吧. 第一题:最简单的:飞行员配对方案问题 讲讲这个题目为什么可以用网络流? 因为这个题目是要进行两两之间的匹配,这个就可以想到用二分图匹配,二分图匹配又可以用网络流写. ...
- 网络流二十四题之P2764 最小路径覆盖问题
题目描述 给定有向图 G=(V,E)G=(V,E) .设 PP 是 GG 的一个简单路(顶点不相交)的集合.如果 VV 中每个定点恰好在PP的一条路上,则称 PP 是 GG 的一个路径覆盖.PP中路径 ...
- P2765 魔术球问题 网络流二十四题重温
P2765 魔术球问题 知识点::最小点覆盖 这个题目要拆点,这个不是因为每一个球只能用一次,而是因为我们要求最小点覆盖,所以要拆点来写. 思路: 首先拆点,然后就是开始建边,因为建边的条件是要求他们 ...
- P4013 数字梯形问题 网络流
题目描述 给定一个由 nn 行数字组成的数字梯形如下图所示. 梯形的第一行有 mm 个数字.从梯形的顶部的 mm 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径. 分别 ...
- 洛谷P4013数字梯形问题——网络流24题
题目:https://www.luogu.org/problemnew/show/P4013 最大费用最大流裸题: 注意:在第二种情况中,底层所有点连向汇点的边容量应该为inf,因为可以有多条路径结束 ...
- 网络二十四题 之 P2756 飞行员配对方案问题
题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外 ...
- leecode第一百二十四题(二叉树中的最大路径和)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- 3360: [Usaco2004 Jan]算二十四
3360: [Usaco2004 Jan]算二十四 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6 Solved: 6[Submit][Statu ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
随机推荐
- 使用 SendARP 获取 MAC 地址(使用SendARP API函数,很多相关文章)
ARP 协议地址解析协议(ARP)是通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议.ARP 最初在 1982 年的 RFC 826 中提出并纳入互联网标准 STD 3 ...
- 一致性 hash 算法(转)
add by zhj:介绍了什么是一致性hash,以及实现一致性hash的一种算法. 原文:http://my.oschina.net/u/195065/blog/193614 目录[-] 一致性 h ...
- HIVE表保存的路径
HIVE表保存的默认路径在${HIVE_HOME}/conf/hive-site.xml配置文件的hive.metastore.warehouse.dir属性指定
- npm的用户名添加不上的原因
npm添加不上的错误e401 1.用cnpm提交,会提交的tao.org这个域名了,用npm提交试试 2.如果npm提交不上,那就查看配置文件配置中 registry=http://registry. ...
- oracle(八)块清除
(1) 快速块清除(fast block cleanout), 当事务修改的数据库全部保存在buffer cache并且修改数据块的数据量没有超过cache buffer 的10%,快速清除事务信息 ...
- android(七)Looper Handler分析
一.总结 Looper有一个MessageQueue,用于封装消息循环. Handler封装了消息投递,消息处理等的辅助类 二.分析 1.从Looper的用法开始分析 class LooperTh ...
- 【Python】详解Python多线程Selenium跨浏览器测试
前言 在web测试中,不可避免的一个测试就是浏览器兼容性测试,在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,以检测不同浏 ...
- linux基础(1)-终端&shell类型&命令&文件系统&命令帮助的获取
终端 用于与主机交互,必然用到的设备. 物理终端 直接接入本机的显示器和键盘设备:Console. 虚拟终端 附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6 默认启动 6 个虚拟终端. ...
- spring的bean容器加载
1.在单独使用的时候可以通过ClassPathXmlApplicationContext(“配置文件.xml”);来启动容器. 2.在MVC下是通过启动servlet容器,初始化DispatcherS ...
- collections模块(收藏)
collections是Python内建的一个集合模块,提供了许多有用的集合类. 1. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >> ...