博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 2054: 疯狂的馒头
阅读量:4587 次
发布时间:2019-06-09

本文共 901 字,大约阅读时间需要 3 分钟。

2054: 疯狂的馒头

Description

Input

第一行四个正整数N,M,p,q

Output

一共输出N行,第i行表示第i个馒头的最终颜色(如果最终颜色是白色就输出0)。

Sample Input

4 3 2 4

Sample Output

2
2
3
0

HINT

题解:

m<=10^7,时限有10s,一开始就想到暴力模拟。

但是这题还是有些技巧的,首先对与一个点,影响它颜色的是最后一次修改,所以可以倒着枚举。

这没修改呢??

这边可以巧妙地运用并查集,如果改了一个点,那么下次就不用再改了,就把这个点直接指向下一个点,修改l,r这一段的时候直接跳过。

#include
#include
using namespace std;const int N=1000005;int n,m,p,q,k,i,j,x,y,f[N],a[N];int get(int x){ if(f[x]==x) return x;else return f[x]=get(f[x]);}int main(){ scanf("%d%d%d%d",&n,&m,&p,&q); for(i=1;i<=n+1;i++) f[i]=i; k=0; for(i=m;i>=1;i--) { x=(i*p%n+q)%n+1; y=(i*q%n+p)%n+1; if(x>y) swap(x,y); for(j=get(x);j<=y;j=get(j)) { a[j]=i,f[j]=j+1,k++; if(k==n) break; } } for(i=1;i<=n;i++) printf("%d\n",a[i]); return 0;}

 

转载于:https://www.cnblogs.com/lwq12138/p/5561394.html

你可能感兴趣的文章
Jboss EAP 6 EJB调用常见问题
查看>>
SQL优化 查询语句中,用 inner join 作为过滤条件和用where作为过滤条件的区别
查看>>
mongodb入门
查看>>
猫眼电影top100抓取
查看>>
【codeforces】【比赛题解】#862 CF Round #435 (Div.2)
查看>>
SpringCloud学习笔记(8)----Spring Cloud Netflix之负载均衡-Ribbon的负载均衡的策略
查看>>
并发编程学习笔记(3)----synchronized关键字以及单例模式与线程安全问题
查看>>
2-9
查看>>
python多线程(一)
查看>>
MindManager中读图工具的使用
查看>>
利用GridView 插入、删除、修改、分页的综合实例代码---转!!!
查看>>
2016年3月11日Android学习日记
查看>>
Android弹出Toast工具类总结
查看>>
吴恩达机器学习笔记(十) —— 推荐系统
查看>>
Linux下Ant安装与配置
查看>>
实验二 用机器指令和汇编指令编程
查看>>
大数据系列之kafka监控kafkaoffsetmonitor安装
查看>>
常用正则表达式
查看>>
Java基础知识
查看>>
Identity Server4学习系列三
查看>>