[Lydsy1705月赛]失控的数位板

Time Limit: 30 Sec  Memory Limit: 256 MB
Submit: 148  Solved: 33
[Submit][Status][Discuss]

Description

绘画家小Q正在他的数位板上作画。当他在作画的时候,他的设备突然故障了!此时他的笔变成了擦除模式。在小Q
的脑海中,有一副漂亮的图案,他希望最后能将它呈现在板子上。他按照自己的创作风格,一步一步地绘画。他每
一步只可能是4种指令上(up)下(down)左(left)右(right)中的一种,同时指定一个距离d,每秒往那个方向移动一
步。在创作的一开始,他的笔位于数位板的左下角,且任意时刻他的笔都不会离开数位板。考虑6*8的数位板以及
如下图所示的指令集,如果笔在第17秒末故障了,数位板最终会变成第二幅图的样子。
小Q想知道最早和最晚的时刻t,满足如果数位板在第t秒末故障了,最终显示出来的图案与他预想的一致。注意数
位板可以在第0秒末故障,此时小Q的笔还没有触碰到数位板。

Input

第一行包含三个正整数h,w,n(1<=h,w,n<=10^6,1<=w*h<=10^6),分别表示数位板的高度与宽度以及指令的条数。
接下来h行,每行w个字符
每个字符要么是“#”,要么是“.”。表示小Q预想的效果,其中“#”表示有颜色,“.”表示空白。
接下来n行
每行一个字符串s和一个正整数d(1<=d<=10^6),分别表示方向和距离,输入数据保证操作不会使笔离开数位板。

Output

输出一行两个整数x与y,其中x表示最小的合法的t,y表示最大的合法的t
注意y不能超过最后一条指令执行完毕时的时间。若无解则输出“-1 -1”。

Sample Input

6 8 5
........
........
###.####
#......#
#..#####
#.......
up 3
right 7
down 2
left 4
up 3

Sample Output

17 17

HINT

[Lydsy1705月赛]线段游戏

Time Limit: 3 Sec  Memory Limit: 256 MB
Submit: 322  Solved: 184
[Submit][Status][Discuss]

Description

quailty和tangjz正在玩一个关于线段的游戏。在平面上有n条线段,编号依次为1到n。其中第i条线段的两端点坐
标分别为(0,i)和(1,p_i),其中p_1,p_2,...,p_n构成了1到n的一个排列。quailty先手,他可以选择一些互不相交
的线段,将它们拿走,当然他也可以一条线段也不选。然后tangjz必须拿走所有剩下的线段,若有两条线段相交,
那么他就输了,否则他就赢了。注意若quailty拿走了全部线段,那么tangjz也会胜利。quailty深深喜欢着tangjz
,所以他不希望tangjz输掉游戏,请计算他有多少种选择线段的方式,使得tangjz可以赢得游戏。

Input

第一行包含一个正整数n(1<=n<=100000),表示线段的个数。
第二行包含n个正整数p_1,p_2,...,p_n(1<=p_i<=n),含义如题面所述。

Output

输出一行一个整数,即tangjz胜利的方案数,因为答案很大,请对998244353取模输出。

Sample Input

5
1 2 4 5 3

Sample Output

8

HINT

 

Source

题解:对于数控板,对于一个数如果有颜色那么时间一定在其后,

   如果本应该有颜色但是现在没颜色了,那么时间一定在其之前。

   对于线段的话

   题意可理解为给定一个序列,求将这个序列分成两个上升序列的方案数

   先判断是否输出0,方法是用树状数组求最长下降序列,若长度>2,说明无解

   然后从左往右扫,将这些数一个一个加到set里,在加入之前,先将set中比当前数大的数全都删掉,

   然后将这些数中最大的数加到set中去,最后若set中还剩m个数,答案就是2^m

   为什么这样理解,对于小的数当然是随便选,想后面的,加入一个数,如果比当前最大的数大,那么直接加入

   否则,必然和前面构成矛盾,将这些数删除,留下最大是因为之后如果不影响的话,必须必当前最大值更大才行。

 #include<bits/stdc++.h>
#define ll long long
using namespace std;
const int M=1e6+;
int h,w,n,op[M],d[M],nex[][]={-,,,,,,,-},curx,cury;
ll t,L,R;
set<int> sx[M],sy[M];
char s[M];
int getop(char *s){
if(s[]=='u') return ;
if(s[]=='r') return ;
if(s[]=='d') return ;
if(s[]=='l') return ;
}
char ask(int x,int y,bool flag){
if(flag) swap(x,y);
return s[x*w+y];
}
void solve(set<int> &s,int st,int ed,ll tl,int wh,bool flag){
int l=st,r=ed;
if(l>r) swap(l,r);
for(set<int>::iterator it=s.lower_bound(l);it!=s.end()&&*it<=r;){
if(flag) sx[*it].erase(sx[*it].find(wh));
else sy[*it].erase(sy[*it].find(wh));
if(ask(wh,*it,flag)=='#') L=max(L,tl-abs(*it-st));
else R=min(R,tl-abs(*it-st)-);
s.erase(it++);
}
}
int main(){
scanf("%d%d%d",&h,&w,&n);
for(int i=;i<h;i++)
scanf("%s",s+i*w);
for(int i=;i<=n;i++){
char tmp[];
scanf("%s%d",tmp,&d[i]);
op[i]=getop(tmp);
}
for(int i=;i<h;i++)
for(int j=;j<w;j++) sx[i].insert(j);
for(int i=;i<w;i++)
for(int j=;j<h;j++) sy[i].insert(j);
curx=h-;
cury=;
t=;
for(int i=;i<=n;i++){
t+=d[i];
curx+=nex[op[i]][]*d[i];
cury+=nex[op[i]][]*d[i];
}
R=t;
for(int i=n;i;i--){
int tp=(op[i]+)%;
int nx=curx+nex[tp][]*d[i],ny=cury+nex[tp][]*d[i];
if(tp%) solve(sx[curx],cury,ny,t,curx,);
else solve(sy[cury],curx,nx,t,cury,);
t-=d[i];
curx=nx;
cury=ny;
}
for(int i=;i<h&&L<=R;i++){
for(set<int>::iterator it=sx[i].begin();it!=sx[i].end();it++){
if(ask(i,*it,)=='#'){
L=R+;
break;
}
}
}
if(L>R) L=R=-;
printf("%lld %lld\n",L,R);
}
 #include <cstdio>
#include <cstring>
#include <iostream>
#include <set>
using namespace std;
int n,ans,v[],tr[];
set<int> s;
void updata(int x,int val)
{
for(int i=x;i<=n;i+=i&-i) tr[i]=max(val,tr[i]);
}
int query(int x)
{
int i=x,ret=;
for(i=x;i;i-=i&-i) ret=max(ret,tr[i]);
return ret;
}
int main()
{
scanf("%d",&n);
int i,a,b;
set<int>::iterator it;
for(i=;i<=n;i++) scanf("%d",&v[i]);
for(i=n;i>=;i--)
{
a=query(v[i]-)+;
if(a>=)
{
printf("");
return ; }
updata(v[i],a);
}
for(i=;i<=n;i++)
{
b=v[i];
while(!s.empty())
{
it=s.upper_bound(b);
if(it==s.end()) break;
b=*it,s.erase(b);
}
s.insert(b);
}
b=s.size(),ans=;
while(b--) ans=(ans*)%;
printf("%d",ans);
return ;
}

bzoj 4879 失控的数位板 4881 线段游戏 贪心,瞎搞的更多相关文章

  1. bzoj 1610: [Usaco2008 Feb]Line连线游戏【瞎搞】

    阴沟翻船.jpg 居然忘了除0的情况 枚举两两之间的线,把斜率装起来排个序去个重就好了 真是水的一晚上呢 #include<iostream> #include<cstdio> ...

  2. bzoj 2563: 阿狸和桃子的游戏 贪心

    这个真的好巧妙啊~ 如果只考虑点权的话显然直接按照权值大小排序即可. 但是加入了边权,就有了一个决策的问题. 于是,我们将边权分一半,分给两个端点. 如果一个人拿了两个端点,则边权都会加上. 否则,边 ...

  3. bzoj 3720 Gty的妹子树 树分块?瞎搞

    Gty的妹子树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2149  Solved: 781[Submit][Status][Discuss] D ...

  4. bzoj 3573: [Hnoi2014]米特运输【树形dp+瞎搞】

    阅读理解题,题意是以1为根的有根树,每个点有点权,求修改最少点权能使每个点的权值等于其所有子节点权值之和并且每个点的所有子节点权值相等的个数 然后就比较简单了,就是有个技巧是数太大,需要对所有操作都取 ...

  5. bzoj 5277: [Usaco2018 Open]Out of Sorts【冒泡排序瞎搞】

    首先考虑快排的递归什么时候停下,显然是当前段只剩下一个数了,也就是一个数两边出现分隔符 然后再考虑计算冒泡长度这个操作,因为有分割,所以我们可以把这些放到一起冒泡,这和递归每个区间冒泡是等价的 所以答 ...

  6. BZOJ 4881: [Lydsy2017年5月月赛]线段游戏

    4881: [Lydsy2017年5月月赛]线段游戏 Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 164  Solved: 81[Submit][St ...

  7. BZOJ4881: [Lydsy1705月赛]线段游戏(二分图)

    4881: [Lydsy1705月赛]线段游戏 Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 359  Solved: 205[Submit][Stat ...

  8. #6034. 「雅礼集训 2017 Day2」线段游戏 李超树

    #6034. 「雅礼集训 2017 Day2」线段游戏 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统 ...

  9. 【loj6034】「雅礼集训 2017 Day2」线段游戏

    #6034. 「雅礼集训 2017 Day2」线段游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:Special Judge 上传者: 匿名 题目描述 ...

随机推荐

  1. java入门---简介&简单输出小例子&开发前准备

        Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.J ...

  2. Hue 工具使用

    Hue 是一个 Web 接口的 Hadoop 分析数据工具,由 Cloudra 公司开源 官方网址 Github 地址 -> 安装方法 文档地址 一.Build 1.ubuntu安装所需环境(以 ...

  3. 11 TCP实现QQ聊天

    1.客户端参考代码 #coding=utf-8 from socket import * # 创建socket tcpClientSocket = socket(AF_INET, SOCK_STREA ...

  4. 【jQuery】 资料

    [jQuery] 资料 1. 选择器 http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp 2. 事件 http://www.w3sch ...

  5. unity3d NavMeshAgent 寻路画线/画路径

    今天在群里看见有个小伙在问Game视图寻路时怎么画线 正好前几天写了个寻路,而且自己也不知道具体怎么在寻路时画线,所以决定帮帮他,自己也好学习一下 在百度查了一下资料,直接搜寻路画路径.寻路画线... ...

  6. 虚拟现实-VR-UE4-获取UE4

    UE4现在虽然是开源,但是并不是免费的,在你的游戏成功后,回收取5%费用和每个月19美元的费用 所以,第一步,进去UE4官网:https://www.unrealengine.com/zh-CN/wh ...

  7. 安装QC的心(新)路历程 纯记录 无技术

    之前就只是看来软件测试原书第二版学习力理论知识,关于书中提到的缺陷管理工具,测试管理工具等也没有亲自去安装使用,感觉太不应该了.于是我就上网了解了一些测试管理工具后,决定先选择QC来学习.说实话,当初 ...

  8. 梳理 Opengl ES 3.0 (五)shader运行原理

    先来看看一张图 shader都是在运行时编译和执行的,每个shader都有一个main函数作为它的入口. vertex shader的功能有两个:一个是计算顶点坐标变换,另一个就是为片元shader计 ...

  9. HDU 3698 Let the light guide us(DP+线段树)(2010 Asia Fuzhou Regional Contest)

    Description Plain of despair was once an ancient battlefield where those brave spirits had rested in ...

  10. NO2——最短路径

    [Dijkstra算法] 复杂度O(n2) 权值必须非负 /* 求出点beg到所有点的最短路径 */ // 邻接矩阵形式 // n:图的顶点数 // cost[][]:邻接矩阵 // pre[i]记录 ...