冲刺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模拟赛 玖」三 ...
随机推荐
- Python获取百度浏览记录
Python模拟百度登录实例详解 http://www.jb51.net/article/78406.htm Python实战计划学习作业2-1 http://blog.csdn.net/python ...
- jQuery的ajax()方法提交数组问题
http://blog.csdn.net/thc1987/article/details/7278269 解决办法是添加一个属性 traditional:true $.ajax({ type: ...
- Bacteria (Gym - 101911C)
2018-2019 ACM-ICPC, NEERC, Southern Subregional Contest, Qualification Stage Bacteria Gym - 101911C ...
- 下载安装tomcat 部署本地项目
原文地址:https://blog.csdn.net/weixin_40396459/article/details/81706543 下载地址:http://tomcat.apache.org 点击 ...
- C++ 结构体指针的定义
struct node { …… } ; struct node *p1, *p2 ; typedef struct node { …… }Node; typedef Node* pNode; typ ...
- P4410 [HNOI2009]无归岛
P4410 [HNOI2009]无归岛 显然这还是一个仙人掌图 对于同一个岛上的任意两个生物,他们有且仅有一个公共朋友 要求求最大独立集,和树形dp一样,遇到环时单独提出来处理一下就好了 #inclu ...
- Python3 输入和输出(一)
1.输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数. 第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用. 如果希望输出 ...
- JS-七大查找算法
顺序查找 二分查找 插值查找 斐波那契查找 树表查找 分块查找 哈希查找 查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录).查找算法分类:1)静态查找和动态查找:注 ...
- 导入项目后,http://schemas.android.com/apk/res/android报错
1.复制出现红色字体的路径 2.File - Settings - Language & Frameworks - schemas and DtDs - 粘贴显红路径
- mac使用vnc远程登录ubuntu16.04桌面
mac使用vnc远程登录ubuntu16.04桌面 1.安装在Ubuntu上安装x11vnc,如下: sudo apt-get install x11vnc 2.配置vnc密码 x11vnc -sto ...