bzoj 2375: 疯狂的涂色
2375: 疯狂的涂色
Time Limit: 5 Sec Memory Limit: 128 MB
Description
Input
为四个整数n,m,p,q。
Output
n行,第I行代表最后第I个格子的颜色。白色编号为0。
HINT
1≤n≤1000000,1≤m≤10000000;1≤m*p+q,m*q+p≤231-1;
友情提示:
加入编译开关{$M 100000000,0,100000000},可防栈溢出。
一千多行的样例,不粘了
m≤10000000,肯定不能每个操作挨着做一遍
染色就是覆盖,所以最终答案是最后一次染色
所以倒着染,并查集fa[i]=j 表示自i往后第一个没有染颜色的是j
每次染一个点后,令fa[i]=find(j+1)
当find(1)==n+1时,全部染色完毕,break
这样保证每个点只被染一遍,时间复杂度O(n)
#include<cstdio>
#include<algorithm>
using namespace std;
int fa[],ans[];
inline int read()
{
int x=,f=; char c=getchar();
while(c<''||c>'') { if(c=='-') f=-; c=getchar(); }
while(c>=''&&c<='') { x=x*+c-''; c=getchar(); }
return x*f;
}
inline int find(int i) { return fa[i]==i ? i : fa[i]=find(fa[i]); }
int main()
{
int n,m,p,q,l,r,tmp;
n=read(); m=read(); p=read(); q=read();
for(int i=;i<=n+;i++) fa[i]=i;
for(int i=m;i;i--)
{
l=(i*p+q)%n+; r=(i*q+p)%n+;
if(l>r) swap(l,r);
for(int j=find(l);j<=r;j=tmp)
{
ans[j]=i;
tmp=find(j+);
fa[j]=tmp;
}
if(find()==n+) break;
}
for(int i=;i<=n;i++) printf("%d\n",ans[i]);
}
bzoj 2375: 疯狂的涂色的更多相关文章
- BZOJ2375: 疯狂的涂色
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2375 小t非常喜爱画画,但是他还是一个初学者.他最近费尽千辛万苦才拜到已仙逝的达 芬奇为师(神 ...
- BZOJ 1260:[CQOI2007]涂色paint
(⊙o⊙)-,常规课考试又炸了!目测此次我要完蛋了... 又玩脱了,考数学的时候装B装大了! 算了,先进入正题... 题目描述:Description假设你有一条长度为5的木版,初始时没有涂过任何颜色 ...
- [bzoj 1260][CQOI 2007]涂色paint
Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续 ...
- 【BZOJ 1260】[CQOI2007]涂色paint
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 区间DP 设f[i][j]表示i..j这个区间变成目标需要的最少染色次数. f[i][i] = 1 然后考虑f[i][j]的产生方法 ...
- 【BZOJ】1260 [CQOI2007]涂色paint(区间dp)
题目 传送门:QWQ 分析 区间dp, 详见代码 代码 /************************************************************** Problem: ...
- [BZOJ 1260][CQOI2007]涂色paint 题解(区间DP)
[BZOJ 1260][CQOI2007]涂色paint Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为 ...
- 【DP】BZOJ 1260: [CQOI2007]涂色paint
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 893 Solved: 540[Submit][Stat ...
- BZOJ 1260: [CQOI2007]涂色paint( 区间dp )
区间dp.. dp( l , r ) 表示让 [ l , r ] 这个区间都变成目标颜色的最少涂色次数. 考虑转移 : l == r 则 dp( l , r ) = 1 ( 显然 ) s[ l ] = ...
- bzoj千题计划185:bzoj1260: [CQOI2007]涂色paint
http://www.lydsy.com/JudgeOnline/problem.php?id=1260 区间DP模型 dp[l][r] 表示涂完区间[l,r]所需的最少次数 从小到大们枚举区间[l, ...
随机推荐
- VMware提示无法打开内核设备 \\.\Global\vmx86: 系统找不到指定的文件解决方案
1.右键单击[我的电脑],选择[管理] 2.在[服务]中找到VMware Workstation Server服务右键启动
- HDU 5465 Clarke and puzzle Nim游戏+二维树状数组
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5465 Clarke and puzzle Accepts: 42 Submissions: 26 ...
- OSG学习:使用OSG中预定义的几何体
常用的内嵌几何体包括: osg::Box //正方体 osg::Capsule //太空舱 osg::Cone //椎体 osg::Cylinder //柱体 osg::HeightField //高 ...
- Hibernate(五)
注解高级(原文再续书接上一回) 7.继承映射 第一种:InheritanceType.JOINED 查询时会出现很多join语句. package com.rong.entity.joined; im ...
- HTML&CSS实体
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- CCF——图像旋转201503-1
问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可. 输入格式 输入的第一行包含 ...
- 【final】评价①
飞天小女警添加猜你喜欢功能,个人很喜欢.当推荐产品不喜欢的时候还有其他的选择,很人性化. 金州勇士将管理人员的角色分开,使整个系统的分工更明确,也更清晰. 新蜂的俄罗斯方块随着等级的提升有直观的颜色变 ...
- fsockopen 异步非阻塞式请求数据
index.php <?php ini_set ( "max_execution_time", "0" ); // 要传递的数据 $form_data = ...
- 图解用HTML5的popstate如何玩转浏览器历史记录
一.popstate用来做什么的?简而言之就是HTML5新增的用来控制浏览器历史记录的api. 二.过去如何操纵浏览器历史记录? window.history对象,该对象上包含有length和stat ...
- 【前端学习笔记03】JavaScript对象相关方法及封装
//Object.create()创建对象 var obj = Object.create({aa:1,bb:2,cc:'c'}); obj.dd = 4; console.log(obj.cc); ...