LYDSY模拟赛day9 2048



/*
大模拟题,做的时候思路还是比较清晰的
*/
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#define ll long long
#define fo(i,l,r) for(int i = l;i <= r;i++)
#define fd(i,l,r) for(int i = r;i >= l;i--)
using namespace std;
const int maxn = ;
ll read(){
ll x=,f=;
char ch=getchar();
while(!(ch>=''&&ch<='')){if(ch=='-')f=-;ch=getchar();};
while(ch>=''&&ch<=''){x=x*+(ch-'');ch=getchar();};
return x*f;
}
int n,m;
int dx[] = {,,-,};
int dy[] = {-,,,};
int flag[][];
bool vis[][];
ll mp[][],d,k,v;
ll ans1,ans2;
ll judge(int y,int x,ll val){
if(y < || y > n || x < || x > n || vis[y][x]) return -;
if(!mp[y][x]) return val;
if(mp[y][x] == val) return val*;
return -;
}
bool tran(int op){
memset(vis,false,sizeof(vis));
bool cg = false;
int st1,ed1,dr1,st2,ed2,dr2;
int ny,nx,cy,cx;
ll tmp,rst;
d = read();
k = read();
v = read();
if(d == ){
st1 = n;
ed1 = ;
dr1 = -;
}else{
st1 = ;
ed1 = n;
dr1 = ;
}
if(d == ){
st2 = n;
ed2 = ;
dr2 = -;
}else{
st2 = ;
ed2 = n;
dr2 = ;
}
for(int i = st1;;i += dr1){
for(int j = st2;;j += dr2){
tmp = mp[i][j];
cy = i;
cx = j;
if(tmp)while(){
ny = cy + dy[d];
nx = cx + dx[d];
rst = judge(ny,nx,tmp);
if(rst == -) break;
else{
cg = true;
mp[cy][cx] = ;
mp[ny][nx] = rst;
if(rst != tmp){
ans2 += rst;
vis[ny][nx] = true;
break;
}
cy = ny;
cx = nx;
}
}
if(j == ed2) break;
}
if(i == ed1) break;
}
if(!cg) return false;
ans1++;
ll r = ;
memset(flag,,sizeof(flag));
fo(i,,n){
fo(j,,n){
if(!mp[i][j]) flag[i][j] = ++r;
}
}
fo(i,,n){
fo(j,,n){
if(flag[i][j] == + k%r) mp[i][j] = v;
}
}
return true;
}
int main(){
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
n = read();
m = read();
int x,y,v;
y = read();x = read();v = read();mp[y][x] = v;
y = read();x = read();v = read();mp[y][x] = v;
fo(op,,m){
if(!tran(op)) break;
}
cout<<ans1<<endl<<ans2<<endl;
return ;
}
LYDSY模拟赛day9 2048的更多相关文章
- LYDSY模拟赛day1 String Master
/* 暴力枚举两个后缀,计算最长能匹配多少前缀. 最优策略一定是贪心改掉前 k 个失配的字符. 时间复杂度 O(n3). */ #include<cstdio> ],b[]; int ma ...
- LYDSY模拟赛day1 Tourist Attractions
/* 假设路径是 a − b − c − d,考虑枚举中间这条边 b − c,计 算有多少可行的 a 和 d. 设 degx 表示点 x 的度数,那么边 b − c 对答案的贡献为 (degb − 1 ...
- LYDSY模拟赛day1 Walk
/* 依旧考虑新增 2^20 个点. i 只需要向 i 去掉某一位的 1 的点连边. 这样一来图的边数就被压缩到了 20 · 2^20 + 2n + m,然后 BFS 求出 1 到每个点的最短路即可. ...
- LYDSY模拟赛day2 Divisors
/* 注意分解质因数,如果i是,那么n/i也是,这样就可以解决分解质因数的时间问题了 当 k ≥ 1 时,只有这些数的约数才会对答案产生贡献. 求出 m 个数的所有不超过 n 的约数,去重后统计即可. ...
- LYDSY模拟赛day2 Market
/* orz claris,这个题的解法非常巧妙,首先是时间问题,其实这个问题只要离线处理一下就可以了,把物品和询问都按照时间排序,然后看一下能不能满足.然后,因为容量<=10^9,显然是不可能 ...
- LYDSY模拟赛day2 Dash Speed
/* 弃坑 */ #include<cstdio> #include<algorithm> using namespace std; ,M=N*; ],nxt[N<< ...
- LYDSY模拟赛day3 序列
NOIP不考可持久,弃坑
- LYDSY模拟赛day3 涂色游戏
/* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include < ...
- LYDSY模拟赛day3 平均数
[ 问题描述]有一天, 小 A 得到了一个长度为 n 的序列.他把这个序列的所有连续子序列都列了出来, 并对每一个子序列都求了其平均值, 然后他把这些平均值写在纸上, 并对它们进行排序,最后他报出了第 ...
随机推荐
- [iOS 基于CoreBluetooth的蓝牙4.0通讯]
一.首先大致介绍下蓝牙4.0的模式,中心和周边: 一般情况下,iPhone作为中心,接收来自周边传感器(比如手环等)采集的数据. 二.那整一个数据通讯的协议是怎样的呢? 为什么要一层层搞这么复杂呢?据 ...
- [IOS swift对比oc]
http://www.cocoachina.com/industry/20140605/8686.html WWDC 2014上苹果再次惊世骇俗的推出了新的编程语言Swift 雨燕, 这个消息会前没有 ...
- 一次pthread_kill引发的HA切换
记录这个坑 程序设计是这样的 socket server主线程A接收新来的连接,然后新建一个线程B用于处理数据接收,由B线程启动一个线程C进行数据的发送处理. 当 B线程出现异常,在异常处理过程中,会 ...
- hdu 2042 - 不容易系列之二
题意:(略)太长了 解法:找规律,发现A[i]=A[i-1]*2-2; 1: #include<stdlib.h> 2: #include<string.h> 3: #incl ...
- http+mysql结合keepalived做热备
preface 公司要求http+mysql+redis+二次开发的ldap要求做高可用,所以此处写写keepalived在这种 环境下的高可用.keepalived这个软件我就不啰嗦了,众所周知,基 ...
- 各种编码UNICODE、UTF-8、ASCII学习笔记
本文转自csdn博客:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html ,感谢作者的分享 作者: 阮一峰 日期: ...
- 如何用iframe标签以及Javascript制作时钟?
如何利用iframe标签以及Javascript制作时钟? 如何制作一个时钟呢?效果如下图所示: 这里的时钟会不停的走,但是下面的页面是不会变得,这样就实现了我们想要的效果了.下面我将分为以下几个方面 ...
- Docker distrubution in django
https://www.syncano.io/blog/configuring-running-django-celery-docker-containers-pt-1/ Update: Fig ha ...
- js021-Ajax与Comet
js021-Ajax与Comet 本章内容: 使用XMLHttpRequet对象 使用XMLHttpRequet事件 跨域Ajax通信的限制 Ajax技术的核心是XMLHttpRequet对象 21. ...
- 日志分析 第四章 安装filebeat
在进行前面准备之后可以开始安装了,我们的安装顺序是filebeat--->logstash--->elasticsearch filebeat安装很简单,先下载filebeat,这里我们使 ...