纪中17日T1 2321. 方程
纪中17日T1 2321. 方程
(File IO): input:cti.in output:cti.out
题目描述

输入

输出

样例输入

样例输出

数据范围限制

提示

吐槽
这些图片太模糊了吧……
还有那吓人的 mod 998244353
都使得我们对这道题的恐惧感叠加了998244353层……
没想到……只有三种答案!(三进制呵呵哒)
Solution
(约定:用line[i]表示第i个输入的数据,man[i]表示在第i位是否为男生(i from 1 to n))
step1
先对line[1]进行判断:
若line[1]==0
直接dfs
若line[1]==1
进行两遍dfs,其中一遍man[1]=1,另一边man[2]=1;
若line[1]==2
一遍dfs,man[1]=man[2]=1;
if(line[]==){
man[]=;
dfs();
memset(man,,sizeof(man));
man[]=;
dfs();
}
if(line[]==) dfs();
if(line[]==){
man[]=man[]=;
dfs();
}
处理完在边缘位置的line[1]后,接下来就好操作了。
step2
写dfs
int t,n,ans,line[];
bool man[];
IL void dfs(int depth)
{
int now=;
if(depth>) now+=man[depth-];
if(depth<n) now+=man[depth+];
now+=man[depth];
if(now!=line[depth]) return;
if(depth==n){
ans++;
return;
}
man[depth+]=;
dfs(depth+);
man[depth+]=;
dfs(depth+);
}
step3
按照题目的意思

怎么看上去像打了马赛克呢……
这个快读是专门给line的!
IL int read()
{
char ch=getchar();
while(ch<''||ch>'')
{
ch=getchar();
}
return (int)ch^;
}
for(int i=;i<=n;i++)
line[i]=read();
step4
输出答案
printf("%d\n",ans/);
别问我为什么要除以2
自己去推到dfs的结果吧。
我已经被接下来的问题折磨疯了……
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#define IL inline
using namespace std;
int t,n,ans,line[];
bool man[];
IL void dfs(int depth)
{
int now=;
if(depth>) now+=man[depth-];
if(depth<n) now+=man[depth+];
now+=man[depth];
if(now!=line[depth]) return;
if(depth==n){
ans++;
return;
}
man[depth+]=;
dfs(depth+);
man[depth+]=;
dfs(depth+);
}
IL int read()
{
char ch=getchar();
while(ch<''||ch>'')
{
ch=getchar();
}
return (int)ch^;
}
int main()
{
// freopen("cti.in","r",stdin);
// freopen("cti.out","w",stdout);
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
ans=;
memset(man,,sizeof(man));
for(int i=;i<=n;i++)
line[i]=read();
if(line[]==){
man[]=;
dfs();
memset(man,,sizeof(man));
man[]=;
dfs();
}
if(line[]==) dfs();
if(line[]==){
man[]=man[]=;
dfs();
}
printf("%d\n",ans/);
}
return ;
}
Problem
我不能通过#9!
运行时错误?
我又调试了很久很久……
发现了一个叫“段错误”的东西
program received signal SIGSEGV,segmentation fault
有些内存是内核占用的或者是其他程序正在使用,为了保证系统正常工作,所以会受到系统的保护,而不能任意访问。
或者时数组越界……
老师正在看另一个老师打游戏,不想理我……
哼唧……
纪中17日T1 2321. 方程的更多相关文章
- 纪中10日T1 2313. 动态仙人掌
纪中10日 2313. 动态仙人掌 (File IO): input:dinosaur.in output:dinosaur.out 时间限制: 1500 ms 空间限制: 524288 KB 具 ...
- 纪中5日T1 1564. 旅游
1564. 旅游 题目描述 输入N个数,从中选择一些出来计算出总和,问有多少种选法使得和为质数. 输入 第一行一个整数N. 第二行N个整数,表示这N个数的值. 输出 一个整数,表示方案数. 样例输入 ...
- 纪中12日T1 2307. 选择
2307. 选择 (File IO): input:choose.in output:choose.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Pr ...
- 纪中17日T2 2322. capacitor
2322. capacitor (File IO): input:capacitor.in output:capacitor.out 题目描述 输入 输出 样例输入 样例输出 数据范围限制 Solut ...
- 纪中10日T1 2300. 【noip普及组第一题】模板题
2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms 空间限制: 262144 K ...
- 纪中21日T3 2118. 【2016-12-30普及组模拟】最大公约数
纪中21日T3 2118. 最大公约数 (File IO): input:gcd.in output:gcd.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- 纪中23日c组T2 2159. 【2017.7.11普及】max 洛谷P1249 最大乘积
纪中2159. max 洛谷P1249 最大乘积 说明:这两题基本完全相同,故放在一起写题解 纪中2159. max (File IO): input:max.in output:max.out 时间 ...
- 纪中23日c组T3 2161. 【2017.7.11普及】围攻 斐波那契数列
2161. 围攻 (File IO): input:siege.in output:siege.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Prob ...
- 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并
洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...
随机推荐
- 四、Django学习之关系表介绍及使用
关系表介绍及使用 一对一关系 xx = models.OneToOneField(to='表名',to_field='字段名',on_delete=models.CASCADE) #on_delete ...
- 项目架构级别规约框架Archunit调研
背景 最近在做一个新项目的时候引入了一个架构方面的需求,就是需要检查项目的编码规范.模块分类规范.类依赖规范等,刚好接触到,正好做个调研. 很多时候,我们会制定项目的规范,例如: 硬性规定项目包结构中 ...
- HDU_2579_bfs
http://acm.split.hdu.edu.cn/showproblem.php?pid=2579 简单bfs题,刚开始在纠结怎么存放vis,因为步数可能有几百步,这么多格子开数组的话也太多了, ...
- Codeforces Round #600 (Div. 2) E. Antenna Coverage
Codeforces Round #600 (Div. 2) E. Antenna Coverage(dp) 题目链接 题意: m个Antenna,每个Antenna的位置是\(x_i\),分数是\( ...
- 程序员过关斩将--redis做消息队列,香吗?
Redis消息队列 在程序员这个圈子打拼了太多年,见过太多的程序员使用redis,其中一部分喜欢把redis做缓存(cache)使用,其中最典型的当属存储用户session,除此之外,把redis作为 ...
- Go语言实现:【剑指offer】正则表达式匹配
该题目来源于牛客网<剑指offer>专题. 请实现一个函数用来匹配包括 . 和 * 的正则表达式.模式中的字符.表示任意一个字符,而 * 表示它前面的字符可以出现任意次(包含0次). 在本 ...
- 《N诺机试指南》(七)排版类问题
1.菱形问题: 解析: 主要通过打印空格和星形来打印整个图形,将整体分为=上三角形+下三角形 首先观察上三角形可以发现:第一行2个空格1个星.第二行1个空格3个星.第三行0个空格5个星 空格数 ...
- javascript get set读取器
class Person{ constructor(name, id){ let _name = name, _id = id; Object.defineProperties(this, { nam ...
- 20200105--python学习第七天
今日内容 深浅拷贝 文件操作 内容回顾及补充 1.内容回顾 计算机基础 编码 语法 if/while/for 数据类型 type/id/range 运算符 2.面试题 a.公司线上的系统用的是什么? ...
- 利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现
#include <stdio.h> #include<conio.h> #include<stdlib.h> /* 利用十字链表存储有向图,可用于同时查找某个顶点 ...