Day 1 模拟
1. P1088 火星人
利用STL中的next_permutation();函数求一种排列的下一种排列,循环m次即为答案。(STL大法好~~C++是世界上最好的语言~~逃
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = ;
int n, m, s[MAXN];
int main()
{
scanf("%d%d", &n, &m);
for(int i = ; i <= n - ; ++i)
scanf("%d", &s[i]);
for(int i = ; i <= m; ++i)
next_permutation(s, s + n);
for(int i = ; i <= n - ; ++i)
printf("%d ", s[i]);
return ;
}
2. P1015 回文数
将高精加推广到n进制即可,不再赘述,代码如下。高精 * 1
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAXL = ;
int n, ans;
string s1, map = "0123456789ABCDEF";
bool judge(string s1)
{
string s2 = s1;
reverse(s2.begin(), s2.end());
if(s1 == s2) return true;
else return false;
}
string add(string s1)
{
int a[MAXL], b[MAXL], c[MAXL], len = s1.size(), lenc = s1.size();
memset(a, , sizeof(a));
memset(b, , sizeof(b)); memset(c, , sizeof(c));
string s2 = s1, sum;
reverse(s2.begin(), s2.end());
for(int i = ; i <= len; ++i)
{
if(isdigit(s1[len - i])) a[i] = s1[len - i] - '';
else a[i] = s1[len - i] - 'A' + ;
if(isdigit(s2[len - i])) b[i] = s2[len - i] - '';
else b[i] = s2[len - i] - 'A' + ;
}
for(int i = ; i <= lenc; ++i)
{
c[i] += a[i] + b[i]; if(c[i] >= n)
{
c[i] %= n;
++c[i + ];
}
}
++lenc;
while(c[lenc] == && lenc > ) --lenc;
for(int i = lenc; i >= ; --i)
sum += map[c[i]];
return sum;
}
int main()
{
cin >> n >> s1;
for(int i = ; i <= ; ++i)
{
s1 = add(s1); if(judge(s1) == true)
{
cout << "STEP=" << i << endl;
return ;
}
}
cout << "Impossible!" << endl;
return ;
}
3. P1604 B进制星球
与上题基本同理。高精 * 2
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN = ;
int k, a[MAXN], b[MAXN], c[MAXN];
char s1[MAXN], s2[MAXN];
int max(int a, int b)
{
if(a >= b) return a;
return b;
}
int main()
{
scanf("%d%s%s", &k, s1, s2);
a[] = strlen(s1);
b[] = strlen(s2);
for(int i = ; i <= a[]; ++i)
{
if(s1[a[] - i] >= '' && s1[a[] - i] <= '')
a[i] = s1[a[] - i] - '';
else if(s1[a[] - i] >= 'A' && s1[a[] - i] <= 'Z')
a[i] = s1[a[] - i] - 'A' + ;
}
for(int i = ; i <= b[]; ++i)
{
if(s2[b[] - i] >= '' && s2[b[] - i] <= '')
b[i] = s2[b[] - i] - '';
else if(s2[b[] - i] >= 'A' && s2[b[] - i] <= 'Z')
b[i] = s2[b[] - i] - 'A' + ;
}
int len = max(a[], b[]);
for(int i = ; i <= len; ++i)
{
c[i] += a[i] + b[i];
if(c[i] >= k)
{
c[i] %= k;
++c[i + ];
}
}
++len;
while(c[len] == && len > ) --len;
for(int i = len; i >= ; --i)
{
if(c[i] <= )
printf("%c", char(c[i] + ''));
else if(c[i] >= )
printf("%c", char(c[i] - + 'A'));
}
return ;
}
4. P1402 乒乓球
字符串模拟,码农题。
#include <iostream>
using namespace std;
const int MAXN = ;
int now = , win[MAXN], w = , l = ;
char c;
int main()
{
for(int i = ; cin >> c && c != 'E'; ++i)
{
if(c == 'W') win[i] = ;
else if(c == 'L') win[i] = ;
}
for(int i = ; ; ++i)
{
if(win[i] == )
{
cout << w << ":" << l << endl;
w = ;
l = ;
break;
}
else if(win[i] == ) ++w;
else if(win[i] == ) ++l;
if((w - l >= || l - w >= ) && (w >= || l >= ))
{
cout << w << ":" << l << endl;
w = ;
l = ;
}
}
cout << endl;
for(int i = ; ; ++i)
{
if(win[i] == )
{
cout << w << ":" << l << endl;
w = ;
l = ;
break;
}
else if(win[i] == ) ++w;
else if(win[i] == ) ++l;
if((w - l >= || l - w >= ) && (w >= || l >= ))
{
cout << w << ":" << l << endl;
w = ;
l = ;
}
}
return ;
}
5. P1255 数楼梯
递推,第k阶的方法=第k-1阶+第k-2阶,其中k的数量比较大,需用高精。高精 * 3
#include <cstdio>
using namespace std;
const int MAXL = , MAXN = ;
int n, f[MAXN][MAXL];
int max(int a, int b)
{
if(a >= b) return a;
return b;
}
void add(int k)
{
int len = max(f[k - ][], f[k - ][]);
for(int i = ; i <= len; ++i)
{
f[k][i] += f[k - ][i] + f[k - ][i];
if(f[k][i] >= )
{
f[k][i] %= ;
++f[k][i + ];
}
}
++len;
while(f[k][len] == && len > ) --len;
f[k][] = len;
return ;
}
int main()
{
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
f[][] = ;
scanf("%d", &n);
if(n == || n == || n == )
{
printf("%d\n", f[n][]);
return ;
}
for(int i = ; i <= n; ++i)
add(i);
for(int i = f[n][]; i >= ; --i)
printf("%d", f[n][i]);
printf("\n");
return ;
}
6. P1192 台阶问题
和上一题差不多,只是每次上迈的阶数从2变为n,另外本题不用高精,答案%100003
#include <cstdio>
using namespace std;
const int MAXN = ;
int n, k;
long long f[MAXN];
int min(int a, int b)
{
if(a <= b) return a;
return b;
}
int main()
{
scanf("%d%d", &n, &k);
f[] = ;
f[] = ;
for(int i = ; i <= n; ++i)
for(int j = min(i, k); j >= ; --j)
{
f[i] += f[i - j];
if(f[i] >= ) f[i] %= ;
}
printf("%lld\n", f[n]);
return ;
}
By ZRQ
Day 1 模拟的更多相关文章
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- HTML 事件(四) 模拟事件操作
本篇主要介绍HTML DOM中事件的模拟操作. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4. ...
- 模拟AngularJS之依赖注入
一.概述 AngularJS有一经典之处就是依赖注入,对于什么是依赖注入,熟悉spring的同学应该都非常了解了,但,对于前端而言,还是比较新颖的. 依赖注入,简而言之,就是解除硬编码,达到解偶的目的 ...
- webapp应用--模拟电子书翻页效果
前言: 现在移动互联网发展火热,手机上网的用户越来越多,甚至大有超过pc访问的趋势.所以,用web程序做出仿原生效果的移动应用,也变得越来越流行了.这种程序也就是我们常说的单页应用程序,它也有一个英文 ...
- javascript动画系列第一篇——模拟拖拽
× 目录 [1]原理介绍 [2]代码实现 [3]代码优化[4]拖拽冲突[5]IE兼容 前面的话 从本文开始,介绍javascript动画系列.javascript本身是具有原生拖放功能的,但是由于兼容 ...
- C++ 事件驱动型银行排队模拟
最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...
- MSYS2——Windows平台下模拟linux环境的搭建
最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...
- trigger事件模拟
事件模拟trigger 在操作DOM元素中,大多数事件都是用户必须操作才会触发事件,但有时,需要模拟用户的操作,来达到效果. 需求:页面初始化时触发搜索事件并获取input控件值,并打印输出(效果图如 ...
随机推荐
- tensorflow(五)
一.单机编程框架 单机程序是指启动和运行都在一台机器的一个进程中完成,因为没有网络开销,非常适合参数不多.计算量小的模型. 步骤,创建单机数据流图,创建并运行单机会话. saver = tf.trai ...
- Thinkphp中js报错,Uncaught SyntaxError: Unexpected token }
tp中js在行末使用注释报错Uncaught SyntaxError: Unexpected token } if (new_directors==1) {// 注释 解决办法:注释换成单行 if ( ...
- vbox NAT 设置端口映射(NAT+8080端口转发)
VirtualBox的提供了四种网络接入模式,它们分别是: 1.NAT 网络地址转换模式(NAT,Network Address Translation) 2.Bridged Adapter 桥接模式 ...
- 多对多表创建、forms组件、cookie与session
多对多表的三种创建方式 1.全自动(较为推荐) 优势:不需要你手动创建第三张表 不足:由于第三张表不是你手动创建的,所以表字段是固定的无法扩展 class Book(models.Model): ti ...
- 吴裕雄--天生自然python学习笔记:python文档操作插入图片
向 Word 文件中插入图片 向 Word 文件插入图片的语法为: 例如,在 cl ip graph.docx 文件的第 4 段插入 ce ll.jpg 图片,井将图片文件保存于 Word 文件内: ...
- 次小生成树题(k) poj1679The Unique MST
http://poj.org/problem?id=1679 #include<iostream> #include<vector> #include<cstdio> ...
- UMLet的使用与类图的设计
本实验是为后续实验做准备的.在本书中,各个程序实例都要画类图,所以读者必须掌握用某种UML建模工具来画类图,本书选择 UMLet 作为 UML 的建模工具.实验目的本实验的主要目的如下. 理解类的基本 ...
- windows下redis的配置和jedis api的最基本的使用
redis的安装直接跳过 1.注册redis服务 在DOM窗口下,进入redis的安装目录(可以先进入安装目录,然后shift+右键,选择在此处打开powershell窗口), 输入命令: redis ...
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- 源码中TODO、FIXME和XXX的含义
前言: 今天在阅读Qt Creator的源代码时,发现一些注释中有FIXME英文单词,用英文词典居然查不到其意义! 实际上,在阅读一些开源代码时,我们常会碰到诸如:TODO.FIXME和XXX的单词 ...