冲刺Noip2017模拟赛8 解题报告——五十岚芒果酱
1、鼎纹
【问题描述】
据说鼎纹的 种制造 式是 铜模印出来的,这是我国古代劳动 智慧
的结晶。铜模印过的地 ,会留下深深的印记,经过时间的炼化,洗
练成历史的遗存。
聪明的古代劳动人民拥有一个 a 行 b 列的铜模,每个位置要么是 (代表
这个点是平的),要么是 (代表这个点是凸起的)。他们想造 个 n 行 m 列
的鼎 ,其中每个位置也都是 或 ,表示经过若干 次印后,每个位置的结果。
有一些要求。铜模是不能旋转和翻转的;在印的过程当中,铜模的凸起不
能出现在鼎面的外面(平的部分是可以出现在外面的),鼎面上的同一个位置
不能被多个凸起印下(在任意两次印时,鼎面上不存在一个点,使得这两次都
有铜模上为 的点覆盖它)。
请你判断这个鼎面能不能被印出来。
【输入格式】
输入文件件名为 grain.in。
本题多测。
第一行,一个整数 T ,表示测试
点数量。接下来 T 个测试点,每
个测试点中:
第一行包含 个整数 n,m,a,b。
接下来 n 行 ,每行 m 个字符,描述鼎面 。“”表示
平,“”表示凸起。接下来 a 行,每行 b 个字符,
描述铜模。“”表示平,“”表示凸起。
【输出格式】
输出 件名为 grain.out。
共有 T 行 ,对于每个测试点,输出 “YES”(能)或“NO”(不能)。
【样例】
grain.in grain.out
YES
NO
【数据规模与约定】
对于 % 的数据,n,m,a, b <= 。
对于 % 的数据, <= T <=; <=n,m, a, b <= 。
【问题描述】
据说鼎纹的 种制造 式是 铜模印出来的,这是我国古代劳动 智慧
的结晶。铜模印过的地 ,会留下深深的印记,经过时间的炼化,洗
练成历史的遗存。
聪明的古代劳动人民拥有一个 a 行 b 列的铜模,每个位置要么是 (代表
这个点是平的),要么是 (代表这个点是凸起的)。他们想造 个 n 行 m 列
的鼎 ,其中每个位置也都是 或 ,表示经过若干 次印后,每个位置的结果。
有一些要求。铜模是不能旋转和翻转的;在印的过程当中,铜模的凸起不
能出现在鼎面的外面(平的部分是可以出现在外面的),鼎面上的同一个位置
不能被多个凸起印下(在任意两次印时,鼎面上不存在一个点,使得这两次都
有铜模上为 的点覆盖它)。
请你判断这个鼎面能不能被印出来。
【输入格式】
输入文件件名为 grain.in。
本题多测。
第一行,一个整数 T ,表示测试
点数量。接下来 T 个测试点,每
个测试点中:
第一行包含 个整数 n,m,a,b。
接下来 n 行 ,每行 m 个字符,描述鼎面 。“”表示
平,“”表示凸起。接下来 a 行,每行 b 个字符,
描述铜模。“”表示平,“”表示凸起。
【输出格式】
输出 件名为 grain.out。
共有 T 行 ,对于每个测试点,输出 “YES”(能)或“NO”(不能)。
【样例】
grain.in grain.out
YES
NO
【数据规模与约定】
对于 % 的数据,n,m,a, b <= 。
对于 % 的数据, <= T <=; <=n,m, a, b <= 。
题目
tag:模拟
思路:题意一定要看懂哦。用铜模的1去消除鼎的1,铜模的每个1都必须找到对应的,最后要保证鼎的1被消完。暴力模拟能拿60分。通过观察我们发现,这个题目跟0没有什么关系,所以只要记录1的位置。那么消除呢,必须是两个矩阵偏左上角的1为起始点,如果不这样,就会有左上方多余的1没被消除。每次默认这两个1必须对上,然后用之前记录的铜模其他的1与起始1的相对位置去找。记得每行读入整个字符串不然scanf("%c")会T。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#define maxn 1010
using namespace std;
int T,n,m,a,b,cnt1,cnt2,mp[maxn][maxn],x[maxn*maxn],y[maxn*maxn],X[maxn*maxn],Y[maxn*maxn];
char ch[maxn];
void init()
{
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
mp[i][j]=;
for(int i=;i<=cnt1;++i) x[i]=y[i]=;
for(int i=;i<=cnt2;++i) X[i]=Y[i]=;
cnt1=cnt2=;
}
bool check(int xx,int yy)
{
mp[xx][yy]=;
for(int i=;i<=cnt2;++i){
int XX=xx+X[i],YY=yy+Y[i];
if(XX<||XX>n||YY<||YY>m||!mp[XX][YY]) return false;
mp[XX][YY]=;
}
return true;
}
void solve()
{
init();
scanf("%d%d%d%d",&n,&m,&a,&b);
for(int i=;i<=n;++i){
scanf("%s",ch+);
for(int j=;j<=m;++j){
if(ch[j]-''){
x[++cnt1]=i;
y[cnt1]=j;
mp[i][j]=;
}
}
}
//记录鼎的1
for(int i=;i<=a;++i){
scanf("%s",ch+);
for(int j=;j<=b;++j){
if(ch[j]-''){
X[++cnt2]=i;
Y[cnt2]=j;
}
}//记录模的1
}
for(int i=;i<=cnt2;++i){
X[i]-=X[];
Y[i]-=Y[];
}//模版的几个1到第一个1的距离
for(int i=;i<=cnt1;++i)
if(mp[x[i]][y[i]])
if(!check(x[i],y[i])){
puts("NO");
return;
}
puts("YES");
}
int main()
{
//freopen("grain.in","r",stdin);
//freopen("grain.out","w",stdout);
scanf("%d",&T);
while(T--) solve();
return ;
}
2、看球赛
年 里奥迪奥带领的十星巴西对战莱昂纳多带领的阿根廷的世界杯决赛马
上开始了!前来在巨型球场观看比赛的观众数不甚数,但是由于突如其来的系统
原因,大家不能网上购票,只能到售票窗口,排成长龙买票. 按售票处规定,每一个限购一张门票,且每一张门票 美元。 在排成长龙的球
迷中有 n 个人手持 美元,另外有 n 个人手持 美元。假设售票处开始的时
候没有零钱,试问这 2n 个球迷有多少种排队方式使得售票处不会出现找不出钱
的尴尬局面,导致拖延球迷看球时间。
【输入与输出说明】
输入两行,第一行一个正整数 T,表示数据个数。
第二行有 T 个正整数,n1,n2,....nT. 输出 T 行,每一行为被 ^+ 模过的结果。
【样例输入1】 【样例输出1】 【样例输入2】 【样例输出2】 【样例说明】
例如当 n= 时,用 A 表示手持面值 美元的球迷,用 B 表示手持面值为 美
元的球迷,则最多可得到以下两组不同的排队方式使得售票处不会出现找不出钱
的情况。
售票处 A A B B
售票处 A B A B
【数据范围】
对于 % n <= , T <=
对于 % n <= , T <=
对于 % n <= , T <=
对于其中 % < n <= ^, T <=
对于其中 % ^ < n <= *^, T =
题目
tag:数学
思路:裸的卡特兰数(可是我不会写啊,只能打表)。公式是C(2n,n)/(n+1)。注意要用逆元哦。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int mod=1e9+;
int T,n;
int ksm(int x,int y)
{
int ret=,b=y;
while(b)
{
if(b&) ret=1ll*ret*x%mod;
x=1ll*x*x%mod;
b>>=;
}
return ret;
}
int solve()
{
int ret1=,ret2=;
for(int i=;i<=n;++i){
ret1=1ll*ret1*(n+i)%mod;
ret2=1ll*ret2*i%mod;
}
return 1ll*ret1*ksm(ret2,mod-)%mod;
}
int main()
{
//freopen("football.in","r",stdin);
//freopen("football.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d",&n);
printf("%d\n",solve());
}
return ;
}
再补充:n个1 m个0 公式为C(n+m,m)-C(n+m,m-1)
3、靶形数独
单独拿出来写题解了,-->链接<--
芒果君:分割线懒得画=_= 最近好颓,真的很想改变现状,我不想做一个只会打表的OIer 要好好学习QAQ
冲刺Noip2017模拟赛8 解题报告——五十岚芒果酱的更多相关文章
- 冲刺Noip2017模拟赛2 解题报告——五十岚芒果酱
题1 牛跑步(running) [题目描述] 新牛到部队,CG 要求它们每天早上搞晨跑,从 A 农场跑到 B 农场.从 A 农场到 B 农场中有 n- 个路口,分别标上号,A 农场为 号,B 农场为 ...
- 冲刺Noip2017模拟赛1 解题报告——五十岚芒果酱
题1 国际象棋(chess) [问题描述] 有N个人要参加国际象棋比赛,该比赛要进行K场对弈.每个人最多参加2场对弈,最少参加0场对弈.每个人都有一个与其他人都不相同的等级(用一个正整数来表示).在对 ...
- 冲刺Noip2017模拟赛5 解题报告——五十岚芒果酱
1. 公约数(gcd) [问题描述] 给定一个正整数,在[,n]的范围内,求出有多少个无序数对(a,b)满足 gcd(a,b)=a xor b. [输入格式] 输入共一行,一个正整数n. [输出格式] ...
- 冲刺Noip2017模拟赛3 解题报告——五十岚芒果酱
题1 素数 [问题描述] 给定一个正整数N,询问1到N中有多少个素数. [输入格式]primenum.in 一个正整数N. [输出格式]primenum.out 一个数Ans,表示1到N中有多少个素 ...
- 冲刺Noip2017模拟赛7 解题报告——五十岚芒果酱
1.二叉树(binary) .二叉树 (binary.cpp/c/pas) [问题描述] 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: ()若左子树不空,则左子树上所有结点的值均小于它的根结 ...
- 冲刺Noip2017模拟赛6 解题报告——五十岚芒果酱
1.ksum(ksum) [问题描述] Peter喜欢玩数组.NOIP这天,他从Jason手里得到了大小为n的一个正整数 数组. Peter求出了这个数组的所有子段和,并将这n(n+)/2个数降序排序 ...
- 冲刺Noip2017模拟赛4 解题报告——五十岚芒果酱
题1 韬韬抢苹果(apple) [问题描述] 又到了收获的季节,树上结了许多韬韬,错了,是许多苹果,有很多个小韬韬都来摘苹 果.每个韬韬都想要最大的苹果,所以发生了争执,为了解决他们的矛盾,出题人定了 ...
- 20161005 NOIP 模拟赛 T2 解题报告
beautiful 2.1 题目描述 一个长度为 n 的序列,对于每个位置 i 的数 ai 都有一个优美值,其定义是:找到序列中最 长的一段 [l, r],满足 l ≤ i ≤ r,且 [l, r] ...
- 【HHHOJ】NOIP模拟赛 玖 解题报告
点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...
随机推荐
- PostgreSQL 数据目录结构
根目录介绍 data ├── base # use to store database file(SELECT oid, datname FROM pg_database;) ├── global # ...
- DOM操作2
一.API和WebAPI API就是接口,就是通道,负责一个程序和其他软件的沟通,本质是预先定义的函数. Web API是网络应用程序接口.包含了广泛的功能,网络应用通过API接口,可以实现存储服务. ...
- [转]protobuf的编译安装
github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在centos7下编译源码进行安装. github上有详细的安装说明: ...
- (转)kvm初识
一 虚拟化介绍 1 常见虚拟化软件VMware系列VMware workstation.VMware vsphere(VMware esxi).VMware Fusion(Mac) Xen 开源 半虚 ...
- (转)Linux 磁盘IO性能测试
Linux 如何测试 IO 性能(磁盘读写速度) 这几天做MySQL性能测试,偌大一个公司,找几台性能测试机器都很纠结,终于协调到两台,IO的性能如何还不知道.数据库属于IO密集型的应用,所以还是先评 ...
- Java核心复习 —— J.U.C 并发工具类
一.CountDownLatch 文档描述 A synchronization aid that allows one or more threads to wait until* a set of ...
- 20165223《网络对抗技术》Exp7 网络欺诈防范
目录 -- 网络欺诈防范 实践说明 实践目标 基础知识问答 实验工具学习 实践内容 简单应用SET工具建立冒名网站 ettercap DNS spoof 结合应用两种技术,用DNS spoof引导特定 ...
- How To Install P4 Tutorials
安装一些依赖 sudo apt-get update sudo apt-get upgrade sudo apt-get install automake cmake libjudy-dev libp ...
- 调用微信公众平台扫一扫示例及解决接口报错 { "errMsg": "config:invalid signature" }
一.解决报错问题 单从报错信息 invalid signature 就可以看出是 签名signature 有问题, 查了很多资料,终于知道了问题点, 后台让我直接调接口是不对的,签名是根据请求接口的页 ...
- Android插件化(二):OpenAtlas插件安装过程分析
Android插件化(二):OpenAtlas插件安装过程分析 转 https://www.300168.com/yidong/show-2788.html 核心提示:在前一篇博客 Andro ...