纪中20日c组T2 2122. 【2016-12-31普及组模拟】幸运票
2122. 幸运票
(File IO): input:tickets.in output:tickets.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
题目描述
给你一个数N(1<=N<=50),每张票有2N位,同时给你这2N位上的和S,如果这张票的前N位的和等于后N位的和,那我们称这张票是吉祥的,每一位可以取0-9。
你的任务是计算吉祥票的总数。
输入
输入N和S,S是所以位上的和,假设S<=1000
输出
输出吉祥票的总数
样例输入
2 2
样例输出
4
数据范围限制
见题目描述
Solution
此题很不友好……emmm……
Algorithm1
死命dfs
Code1
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#define IL inline
using namespace std; unsigned long long n,s,ans,sum;
IL void dfs(unsigned long long depth,unsigned long long now,unsigned long long sum)
{
if(sum*>s) return;
if(depth==n){
if(sum==s/)
ans++;
return;
}
for(int i=;i<;i++)
{
dfs(depth+,now*+i,sum+i);
}
}
int main()
{
// freopen("tickets.in","r",stdin);
// freopen("tickets.out","w",stdout);
cin>>n>>s;
dfs(,,);
cout<<ans*ans;
return ;
}
Code1
Algorithm2
打了一番表,发现真相……
一个斜着的杨辉三角形*2???
由于某些原因(换了电脑且插不了U盘)
没法详细的讲规律
这是ans,不是ans的平方!
0 0 0 0 0 0 0 0……
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 0 0 ……
1 1 3 3 6 6 10 10 15 15 21 21 28 28 36 36 45 45 55 55 63 63 ……0 0 0 0 ……
1 1 4 4 10 10 20 20 ……
可以用s/2向下取整+1先把重复的删除(calc(n,s/2+1))
然后这个矩阵就有有个规律了:
如果s/2+1小于11的话,memory[i][j]=memory[x-1][y]+memory[x][y-1]
否则memory[i][j]=memory[x-1][y]+memory[x][y-1]-1
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#define IL inline
using namespace std; unsigned long long n,s,ans,sum;
bool vis[][];
unsigned long long memory[][]={
{},
{,,,,,,,,,,,,,,,,,,,,,,,,,,,},
{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,},
{}
};
IL unsigned long long calc(int x,int y)
{
if(x==||x==)
{
if(y<=)
return ;
else
return ;
}
if(y==) return ;
if(vis[x][y]||memory[x][y]) return memory[x][y];
memory[x-][y]=calc(x-,y);
memory[x][y-]=calc(x,y-);
vis[x-][y]=vis[x][y-]=;
return memory[x][y]=memory[x-][y]+memory[x][y-]-(int)(y>=);
}
IL int read()
{
char ch;int x=;
ch=getchar();
while(ch<''||ch>'') ch=getchar();
while(ch>=''&&ch<='') x=(x<<)+(x<<)+(ch^),ch=getchar();
return x;
}
int main()
{
// freopen("tickets.in","r",stdin);
// freopen("tickets.out","w",stdout);
n=read();
s=read();
ans=calc(n,s/+);
cout<<ans*ans;
return ;
}
但是对拍之后,发现ans*ans很容易会超过unsigned long long!
高精度!
只要加上高精加法和高精乘法就好
纪中20日c组T2 2122. 【2016-12-31普及组模拟】幸运票的更多相关文章
- 纪中20日c组模拟赛
赛后感想 多写点东西总是好的,但是在最后,算法就不要改动了(就这样我少了10分) 题解 T1 2121. 简单游戏 T2 2122. 幸运票
- 纪中20日c组模拟赛T1 2121. 简单游戏
T1 2121. 简单游戏 (File IO): input:easy.in output:easy.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Pro ...
- 纪中21日T3 2118. 【2016-12-30普及组模拟】最大公约数
纪中21日T3 2118. 最大公约数 (File IO): input:gcd.in output:gcd.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- 纪中17日T1 2321. 方程
纪中17日T1 2321. 方程 (File IO): input:cti.in output:cti.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- 纪中10日T1 2313. 动态仙人掌
纪中10日 2313. 动态仙人掌 (File IO): input:dinosaur.in output:dinosaur.out 时间限制: 1500 ms 空间限制: 524288 KB 具 ...
- 纪中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堆合并成新的一堆,并将新的一堆的石 ...
- 纪中10日T1 2300. 【noip普及组第一题】模板题
2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms 空间限制: 262144 K ...
随机推荐
- Arduino系列之智能家居蓝牙语音遥控灯(四)
用到的材料 Arduino uno hc-05 蓝牙模块 安卓手机 安卓APP AMR—voice 通过安卓手机连接Arduino的蓝牙模块Hc-05,通过语音识别软件AMR-voice识别语音, ...
- PE可执行文件加载器
PE文件加载器 模仿操作系统,加载pe文件到内存中 该项目主要是为了检测pe的学习程度,是否都完全理解了.当然没有完全理解 实现功能的如下: 模仿操作系统,加载pe文件到内存中,然后执行待执行的pe文 ...
- QT5如何设置QLabel中字体的颜色
修改了wd的文章: 如何使用Qt5,设置QLabel中字体的颜色. 大致有几种做法: 一是使用setPalette()方法: 二是使用样式表: 三是可以使用QStyle: 四是可以在其中使用一些简单的 ...
- VC简单实现播放音乐
#define _CRT_SECURE_NO_WARNINGS #include <string.h> #include <stdio.h> #include <wind ...
- used in key specification without a key length
官方的解释: The error happens because MySQL can index only the first N chars of a BLOB or TEXT column. So ...
- 说说GAN(生成式对抗网络)
在Auto-encoder中,input data通过一个encoder神经网络得到一个维度的较低的向量,称这个向量为code,code经过一个decoder神经网络后输出一个output data. ...
- Go语言实现:【剑指offer】扑克牌顺子
该题目来源于牛客网<剑指offer>专题. LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)-他随机从中抽出了5张牌,想测测自己的手气 ...
- 【题解】P1908 逆序对——归并算法
先吐槽 这题做了两天,昨天讲分治,老师用归并讲了一遍,今天又用树状数组讲了一遍 归并不难,啊啊啊我居然才调出来 思路 归并两个数组时,对于第二个数组的元素a[c2],它与第一个数组中目前还没归到总数组 ...
- Spark RDD基本概念、宽窄依赖、转换行为操作
目录 RDD概述 RDD的内部代码 案例 小总结 转换.行动算子 宽.窄依赖 Reference 本文介绍一下rdd的基本属性概念.rdd的转换/行动操作.rdd的宽/窄依赖. RDD:Resilie ...
- ELF文件之四——使用链接脚本-2个函数-data
main.c ; int main() { ; } int add() { ; } main.o 反汇编可以看到多了.text节的反汇编,存储的是全局变量的初始化数值 main.o对比,text段后面 ...