冲刺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模拟赛 玖」三 ...
随机推荐
- vim命令整理
最近使用vim比较多,整理一下!
- WallpaperEngine 导入 mp4 文件出现 failed opening video
WallpaperEngine 导入 mp4 文件出现 failed opening video 如图 下载这个插件 链接:点击打开链接 密码:dkf8
- Java枚举抽象方法实战
需求背景 需求已经确定了几个固定的常量值,并且每个常量值都有相同的行为,但是具体实现细节不同.建议使用枚举抽象方法,优点:结构清晰,便于扩展. 枚举类实现抽象方法 与常规抽象类一样,enum类允许我们 ...
- Java基础系列 - HashMap
package com.test3; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo ...
- "error":"bucket is protected"
这个是我做图片上传的时候,后台返回了图片,把图片链接放到浏览器 其实是因为后台配置了,图片必须以 结尾.就是压缩的图,所以其他格式结尾的是不会显示的哈
- linux系统普通用户设置密码
linux系统中如何给一个普通用户grindnt设置密码 一.新密码符合规则,用以下方式修改: #root用户直接更改gridnt密码,不需要输入旧密码 [root@subsname home]# p ...
- 我的BO之状态控制
我的BO 1-我的BO之强类型 2-我的BO之数据保护 3-我的BO之状态控制 4-我的BO之导航属性 MIS常有状态 信息管理系统(MIS)常常有流程,一个流程由多个环节构成,不同的环节的流转通过状 ...
- 个人学习分布式专题(二)分布式服务治理之分布式协调技术Zookeeper
分布式协调技术Zookeeper 2.1 zookeeper集群安装部署(略) 2.2 zookeeper的基本原理,数据模型 2.3 zookeeper Java api的使用 2.4 zookee ...
- 《Glibc内存管理》笔记DAY5
目录 分箱式内存管理 Unsorted bin Fast bins 核心结构体分析 malloc_state 内容来源 分箱式内存管理 Unsorted bin Unsorted bin 可以看作 ...
- Echarts 常用API之action行为
一.Echarts中的action echarts中支持的图表行为,通过dispatchAction触发. 1.highlight 高亮指定的数据图形 dispatchAction({ type: ' ...