Codeforces Gym 101521A Shuttle Bus
题意:给定一个2*N的方格,从左上角开始走,有些格子不能走,问能否一次遍历所有能走的方格
在Gym上看到一场香港的比赛,很好奇就去看了一下,发现第一题很有趣,并且很水,似乎讨论一下奇偶性就行了,然后。。。我Wa了五次。。。
主要是以下三种情况比较坑:

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100000+10
struct point{int x,y;}p[MAXN];
int n,m,tot;
bool cmp(point a,point b){return a.x<b.x;}
int main(){
scanf("%d%d",&n,&m);
bool flag=;
for(int i=;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
swap(x,y);
if(x==&&y==){printf("No\n");return ;}
if(x==&&y==)flag=;
p[i].x=x;p[i].y=y;
}
if(flag){
sort(p+,p+m+,cmp);
tot=;
int t=m;
while(t){
if(p[t].x==p[t-].x){
if(p[t].x!=n){printf("No\n");return ;}
else {n--;m-=;}
}
else break;
t-=;
}
for(int i=;i<m;i++){
if(tot==*n-m)break;
if(p[i].y!=p[i+].y){
int dis=p[i+].x-p[i].x;
if(dis==){
if(tot==*n-m-)break;
else{printf("No\n");return ;}
}
else if(dis&){printf("No\n");return ;}
tot+=*(dis-)+;
}
else{
int dis=p[i+].x-p[i].x;
if(!(dis&)){printf("No\n");return ;}
tot+=*(dis-)+;
}
}
}
else{
m++;p[m].x=;p[m].y=;
tot=;
sort(p+,p+m+,cmp);
int t=m;
while(t){
if(p[t].x==p[t-].x){
if(p[t].x!=n){printf("No\n");return ;}
else {n--;m-=;}
}
else break;
t-=;
}
for(int i=;i<m;i++){
if(tot==*n-(m-))break;
if(p[i].y!=p[i+].y){
int dis=p[i+].x-p[i].x;
if(dis&){printf("No\n");return ;}
tot+=*(dis-)+;
}
else{
int dis=p[i+].x-p[i].x;
if(!(dis&)){printf("No\n");return ;}
tot+=*(dis-)+;
}
}
}
printf("Yes\n");
return ;
}
Codeforces Gym 101521A Shuttle Bus的更多相关文章
- Codeforces Gym 101252D&&floyd判圈算法学习笔记
一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...
- Codeforces Gym 101190M Mole Tunnels - 费用流
题目传送门 传送门 题目大意 $m$只鼹鼠有$n$个巢穴,$n - 1$条长度为$1$的通道将它们连通且第$i(i > 1)$个巢穴与第$\left\lfloor \frac{i}{2}\rig ...
- Codeforces Gym 101623A - 动态规划
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...
- 【Codeforces Gym 100725K】Key Insertion
Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...
- Codeforces gym 101343 J.Husam and the Broken Present 2【状压dp】
2017 JUST Programming Contest 2.0 题目链接:Codeforces gym 101343 J.Husam and the Broken Present 2 J. Hu ...
- codeforces gym 100553I
codeforces gym 100553I solution 令a[i]表示位置i的船的编号 研究可以发现,应是从中间开始,往两边跳.... 于是就是一个点往两边的最长下降子序列之和减一 魔改树状数 ...
- CodeForces Gym 100213F Counterfeit Money
CodeForces Gym题目页面传送门 有\(1\)个\(n1\times m1\)的字符矩阵\(a\)和\(1\)个\(n2\times m2\)的字符矩阵\(b\),求\(a,b\)的最大公共 ...
- Codeforces GYM 100876 J - Buying roads 题解
Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...
- codeforces Gym 100187J J. Deck Shuffling dfs
J. Deck Shuffling Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/pro ...
随机推荐
- Autofac学习之三种生命周期:InstancePerLifetimeScope、SingleInstance、InstancePerDependency
InstancePerLifetimeScope:同一个Lifetime生成的对象是同一个实例 SingleInstance:单例模式,每次调用,都会使用同一个实例化的对象:每次都用同一个对象: In ...
- HDU 5783 Divide the Sequence (训练题002 B)
Description Alice has a sequence A, She wants to split A into as much as possible continuous subsequ ...
- 关于安卓手机的牛逼软件termux使用
最近在学着用linux,偶尔发现了一款神奇的软件--termux,termux是一款来自国外的终端模拟器,是运行在内部存储上的程序(不在内存卡上),功能比较强大,启动程序之后会进入命令行终端,需要基本 ...
- css基础语法一(选择器与css导入方式)
页面中,所有的CSS代码,需要写入到<style></style>标签中.style标签的type属性应该选择text/css,但是type属性可以省略. CSS修改页面中的所 ...
- Redis的使用初探
Redis Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化. 与其它键值数据存储相比,Redis有一组相对丰富的数据类型. Redis可以将数据复制到任意数量的从机中 Redis的安装 官 ...
- java 冒泡排序与选择排序
//冒泡排序 package test;public class Maopaosort { public static void method(){ int[] arr=new int[10]; ...
- c#params应用
params 是C#开发语言中关键字, params主要的用处是在给函数传参数的时候用,就是当函数的参数不固定的时候. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允 ...
- Excel、Exchange 和 C# (摘要)
Excel.Exchange 和 C#Eric GunnersonMicrosoft Corporation 2003年4月21日 摘要:Eric Gunnerson 将向您介绍如何使用 Outloo ...
- List实现
1.元素添加 #include <stdio.h> #include <stdlib.h> struct ListNode{ struct ListNode* next; in ...
- ionic开发遇到的坑及总结
前言 ionic是一个用来开发混合手机应用的,开源的,免费的代码库.可以优化html.css和js的性能,构建高效的应用程序,而且还可以用于构建Sass和AngularJS的优化.ionic会是一个可 ...