【2016常州一中夏令营Day4】
小 W 走迷宫
【问题描述】
小 W 被小 M 困在了一个方格矩阵迷宫里,矩阵边界在无穷远处,我们做出如下的
假设:
a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;
b. 走过的格子立即塌陷无法再走第二次;
c. 只能向北、东、西三个方向走。
小 W 走了没多久就累坏了,他很想知道如果允许在方格矩阵上走 N 步,共有多少种不同的方案。( 开始时小 W 就在方格矩阵上的任意位置, 2 种走法只要有一步不一样,即被认为是不同的方案)
【输入格式】
一行输入 N。
【输出格式】
一行输出方案个数。
【输入输出样例】
game.in
2
game.out
7
【数据规模】
对于 30%的数据:N<=20
对于 100%的数据:N<=100
题解
表示最后一步向左走到达第i个格,它上一格不能是从右边走得到,易得
表示最后一步向右走到达第i个格,它上一格不能是从左边走得到的,易得
表示最后一步先上走到达第i个格,易得
所以 套上高精度即可
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std; int n;
struct hh
{
int n,a[105];
};
hh a,b,ans; hh sum(hh a,hh b)
{
int i;
hh c;
c.n=max(a.n,b.n);
memset(c.a,0,sizeof(c.a));
for(i=1;i<=c.n;i++)
{
c.a[i]+=a.a[i]+b.a[i];
if(c.a[i]>=10)
{
c.a[i+1]+=c.a[i]/10;
c.a[i]=c.a[i]%10;
}
}
while(c.a[c.n+1])
{
++c.n;
if(c.a[c.n]>9)
{
c.a[c.n+1]+=c.a[c.n]/10;
c.a[c.n]=c.a[c.n]%10;
}
}
return c;
}
hh mul(hh a,int k)
{
int i,j;
hh c;
c=a;
for(i=1;i<=c.n;i++) c.a[i]*=k;
for(i=1;i<=c.n;i++)
if(c.a[i]>9)
{
c.a[i+1]+=c.a[i]/10;
c.a[i]=c.a[i]%10;
}
while(c.a[c.n+1])
{
c.n++;
if(c.a[c.n]>=10)
{
c.a[c.n+1]+=c.a[c.n]/10;
c.a[c.n]=c.a[c.n]%10;
}
}
return c;
} int main()
{
int i,j;
hh temp;
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
scanf("%d",&n);
a.n=b.n=1;a.a[1]=1;
for(i=1;i<=n-1;i++)
{
b=sum(a,b);a=sum(a,b);
temp=a;
a=b;
b=temp;
}
ans=sum(mul(a,3),mul(b,2));
for(i=ans.n;i;i--)
printf("%d",ans.a[i]);
fclose(stdin);
fclose(stdout);
return 0;
}
小 W 砍大树
【问题描述】
小 W 走出了迷宫,发现小 M 正等着他出城约会。不妙的的是,一棵大树挡在他们面前。这是一棵奇怪的树(当然是计算机领域的树,而且不一定是二叉树),所有叶子节点都是 True 或者 False。对于从上往下奇数层的非叶子节点是 and,偶数层非叶子节点为 or。
树上每个节点的值是所有孩子节点的值进行该节点的运算操作。砍树的方法就藏在树根的值里!小 W 需要计算机大神你的帮助!
上天为了撮合小 W 和小 M,大树以简单的括号序列给出: 上图可以描述为((A(BC))(DE))
【输入格式】
数据包括若干组,每组数据包含一行一个字符串。输入()表示结束。
【输出格式】
每组数据输出一行,包含:数据编号,点,空格,true 或 false。
【输入输出样例】
form.in
((F(TF))(TF))
(TFT)
((TFT)T)
()
form.out
1. false
2. false
3. true
【数据规模】
对于 10%的数据:每行只包含一对括号;
对于 30%的数据:只有嵌套的括号,没有并列的括号
题解
用栈维护即可
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std; int len,top,cnt,t;
int s[50005];
char str[50005];
int main()
{
int i,now;
freopen("form.in","r",stdin);
freopen("form.out","w",stdout);
while(true)
{
scanf("%s",str+1);
len=strlen(str+1);
if(len==2&&str[1]=='('&&str[2]==')') break;
cnt=top=1;
s[top]='(';
for(i=2;i<=len;i++)
{
if(str[i]=='T'){s[++top]=1;continue;}
if(str[i]=='F'){s[++top]=0;continue;}
if(str[i]=='('){s[++top]=2;cnt++;continue;}
if(cnt&1) now=1;
else now=0;
while(s[top]==1||s[top]==0)
{
if(cnt&1) now=now&s[top];
else now=now|s[top];
top--;
}
s[top]=now;
cnt--;
}
t++;
if(s[1]) printf("%d. true\n",t);
else printf("%d. false\n",t);
}
return 0;
}
小 W 数线段
【问题描述】
小 W 和小 M 终于携手走到了城市门前,却发现门上刻了一个 N*M 的点阵,相邻两点距离
为 1,点阵里任取两点可连成线段。门上标注了:我问你 T 次,每次给你一个 L,你要答出
有多少对线段长度是 L。答都对了你才可以进门。
【输入格式】
第一行三个整数:N,M,T。
第二行为 T 个整数,即每个 L。
【输出格式】
一行 T 个整数,表示 T 个询问的答案。
只有整数间存在空格。
【输入输出样例】
dist1.in
3 3 3
1 2 3
dist1.out
12 6 9
dist2.in 4 5 1
5
dist2.out 2
【数据规模】
对于 20%的数据:N,M<=20,T<=10
对于 40%的数据:N,M<=1000,T<=100
对于 60%的数据:N,M<=100000
对于 100%的数据:N,M<=1000000000,T<=1000,L<=2*MAX(N,M)
题解
本原勾股数公式
由 得
设
则
设
则
由 并且
得A和B都是完全平方数
设
由 得
所以 是
的因数
先枚举 再枚举
即可
【2016常州一中夏令营Day4】的更多相关文章
- 【2016常州一中夏令营Day7】
序列(sequence)[题目描述]蛤布斯有一个序列,初始为空.它依次将 1-n 插入序列,其中 i插到当前第 ai 个数的右边 (ai=0 表示插到序列最左边).它希望你帮它求出最终序列.[输入数据 ...
- 【2016常州一中夏令营Day6】
小 W 算树[问题描述]山有苞棣,隰有树檖.未见君子,忧心如醉~小 W 养了一棵有 N 个点的无根树,由于小 M 最喜欢二叉树了,为了讨小 M 欢喜,小 W想知道有多少个点作为根后,这棵树是一棵二叉树 ...
- 【2016常州一中夏令营Day5】
小 W 拼图[问题描述]小 W 和小 M 一起玩拼图游戏啦~小 M 给小 M 一张 N 个点的图,有 M 条可选无向边,每条边有一个甜蜜值,小 W 要选K 条边,使得任意两点间最多有一条路径,并且选择 ...
- 【2016常州一中夏令营Day3】
小 W 摆石子[问题描述]小 W 得到了一堆石子,要放在 N 条水平线与 M 条竖直线构成的网格的交点上.因为小 M 最喜欢矩形了,小 W 希望知道用 K 个石子最多能找到多少四边平行于坐标轴的长方形 ...
- 【2016常州一中夏令营Day2】
小 W 学数学[问题描述]为了测试小 W 的数学水平,果果给了小 W N 个点,问他这 N 个点能构成的三角形个数.[输入格式]第一行一个整数 N,代表点数.接下来 N 行,每行两个非负整数 X.Y, ...
- 【2016常州一中夏令营Day1】
Problem 1. suffix给定一个单词,如果该单词以 er. ly 或者 ing 后缀结尾,则删除该后缀(题目保证删除后缀后的单词长度不为 0),否则不进行任何操作.Input输入一行,包含一 ...
- [2016湖南长沙培训Day4][前鬼后鬼的守护 chen] (动态开点线段树+中位数 or 动规 or 贪心+堆优化)
题目大意 给定一个长度为n的正整数序列,令修改一个数的代价为修改前后两个数的绝对值之差,求用最小代价将序列转换为不减序列. 其中,n满足小于500000,序列中的正整数小于10^9 题解(引自mzx神 ...
- 2019中山纪念中学夏令营-Day4[JZOJ]
Begin (题目的排序方式:难易程度) 什么是对拍: 对拍是一种在写完程序后,验证自己程序是不是正解的比较方便的方法. 实现过程: 对同一道题,再打一个暴力程序,然后用一些大数据等跑暴力程序来进行验 ...
- 【FJ省队训练&&NOIP夏令营】酱油&&滚粗记
FJOI2016省队训练滚粗记 2016.07.03~2016.07.06(Day1~5) 在学校期末考.因为才省选二试too young too simple爆蛋了所以下半个学期只能滚回去读文化课, ...
随机推荐
- srand函数
srand函数是随机数发生器的初始化函数. 原型: void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第九章:贴图
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第九章:贴图 代码工程地址: https://github.com/j ...
- Directx11学习笔记【二十一】 封装键盘鼠标响应类
原文:Directx11学习笔记[二十一] 封装键盘鼠标响应类 摘要: 本文由zhangbaochong原创,转载请注明出处:http://www.cnblogs.com/zhangbaochong/ ...
- KiCad EDA 5.1.4 发布了
KiCad EDA 5.1.4 发布了 KiCad EDA 自豪地宣布 KiCad 5 系列最新稳定版发布.5.1.4 稳定版修复了来自 5.1.2 和 5.1.3 版本的关键错误修复和其他一些小改进 ...
- [Java]ssh网上商城总结 标签: hibernatessh 2016-05-15 21:03 1099人阅读 评论(32)
前几日敲完了ssh网上商城,虽然现在已经敲完了整个系统,却发现自己对于ssh,了解的一点都不多,什么是struts2,什么是spring,什么是hibernate,自己都是稀里糊涂,然后看了一下后面的 ...
- ArcGIS 发布高程服务。10.4
ArcGIS 发布高程必须是10.21以上,我用10.4. 前端用ArcGIS For API 4.x. ARCGIS很早之前有CS版本的ArcScene,可查看高程TIF文件,但机制和BS的完全不同 ...
- 13-4 jquery操作标签(文本,属性,class,value)
一 文本操作 $().html() $().text() 文本赋值操作 $().html("") $().text("") 二 属性操作 $().attr(属性 ...
- Django ORM------Mysql
ORM操作 select * from tb where id > 1 #对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.fi ...
- @hdu - 6594@ Double Tree
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定两棵 N 个点的树,以及树上每条边的权值 w(u, v),每 ...
- Hive高阶聚合函数 GROUPING SETS、Cube、Rollup
-- GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起 ...