冲刺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模拟赛 玖」三 ...
随机推荐
- <load-on-startup>1</load-on-startup>的作用
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法).2)它的值必须是一个整数,表示servlet应该被载入的顺序3)当值为0或者大 ...
- C++类中静态数据成员MAP如何初始化
conv_xxx.hpp class convolution { ... ... typedef std::map<int, std::string> ConvDtMap; static ...
- 【原创】go语言学习(十三)struct介绍2
目录: 方法的定义 函数和方法的区别 值类型和指针类型 面向对象和继承 结构体和json序列化 方法的定义 1.和其他语言不一样,Go的方法采⽤用另外一种方式实现. package main impo ...
- js的模块化之路
在ES6之前,官方没有出来import export这种模块化的语法. 为了提高代码复用.避免污染全局,民间写了很多模块化的实现: 1. 立即执行函数 (function(globalVariable ...
- 10月清北学堂培训 Day 3
今天是钟皓曦老师的讲授~ zhx:题很简单,就是恶心一些qwq~ T1 别人只删去一个字符都能AC,我双哈希+并查集只有40?我太菜了啊qwq 考虑到越短的字符串越难压缩,越长的字符串越好压缩,所以我 ...
- c++ 珊格画椭圆
#ifndef _TEST_H #define _TEST_H #include <iostream> #include <math.h> using namespace st ...
- Tkinter 之Menu菜单标签
一.参数说明 语法 作用 MenuBar = tk.Menu(window) 创建一个菜单栏 fileBar = tk.Menu(MenuBar, tearoff=0) 创建一个菜单项,不分窗. Me ...
- [Ubuntu] 移植Ubuntu16.04根文件系统到嵌入式平台
CPU:RK3288 1.通过 ubuntu cdimage 下载 ubuntu16.04 内核,以下两种方式都可以 在 windows 系统网页中下载 http://cdimage.ubuntu.c ...
- 会话技术cookie与session
目录 会话技术cookie 会话技术 cookie 服务器怎样把Cookie写 给客户端 服务器如何获取客户端携带的cookie session session简介 Session如何办到在一个ser ...
- The implementation of iterators in C# and its consequences (part 1) Raymond Chen
Likeanonymous methods, iterators in C# are very complex syntactic sugar. You could do it all yoursel ...