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 模拟的更多相关文章

  1. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  2. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  3. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  4. HTML 事件(四) 模拟事件操作

    本篇主要介绍HTML DOM中事件的模拟操作. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4.  ...

  5. 模拟AngularJS之依赖注入

    一.概述 AngularJS有一经典之处就是依赖注入,对于什么是依赖注入,熟悉spring的同学应该都非常了解了,但,对于前端而言,还是比较新颖的. 依赖注入,简而言之,就是解除硬编码,达到解偶的目的 ...

  6. webapp应用--模拟电子书翻页效果

    前言: 现在移动互联网发展火热,手机上网的用户越来越多,甚至大有超过pc访问的趋势.所以,用web程序做出仿原生效果的移动应用,也变得越来越流行了.这种程序也就是我们常说的单页应用程序,它也有一个英文 ...

  7. javascript动画系列第一篇——模拟拖拽

    × 目录 [1]原理介绍 [2]代码实现 [3]代码优化[4]拖拽冲突[5]IE兼容 前面的话 从本文开始,介绍javascript动画系列.javascript本身是具有原生拖放功能的,但是由于兼容 ...

  8. C++ 事件驱动型银行排队模拟

    最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...

  9. MSYS2——Windows平台下模拟linux环境的搭建

    最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...

  10. trigger事件模拟

    事件模拟trigger 在操作DOM元素中,大多数事件都是用户必须操作才会触发事件,但有时,需要模拟用户的操作,来达到效果. 需求:页面初始化时触发搜索事件并获取input控件值,并打印输出(效果图如 ...

随机推荐

  1. 关于ping命令的批处理问题

    需求描述:假设你的IP保存在名字为IP.txt的文本文档里,且每行一条ip.你想ping这些IP并得到结果 解决方案:用下面的批处理代码即可实现,将下面的代码保存为后缀为.bat的文件,比如test. ...

  2. CentOS下图形界面安装_Orcaale 11g

    1.安装说明 使用到的工具: 软件名称 版本 软件包 系统 centOS6.8 CentOS-6.8-x86_64-bin-DVD1.iso 数据库 ORACLE11g linux.x64_11gR2 ...

  3. 30)PHP,引用对象和克隆对象的区别

    复制文件.建立快捷方式的区别,克隆就是复制,引用就是快捷方式,引用的对象实际上同一个东西,修改任何一个变量,另外一个也会跟着变化.

  4. 让mybatis不再难懂(一)

    与hibernate相比,我无疑更喜欢mybatis,就因为我觉得它真的好用,哈哈.它简单上手和掌握:sql语句和代码分开,方便统一管理和优化:当然缺点也有:sql工作量很大,尤其是字段多.关联表多时 ...

  5. iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码

    iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状... Swift版Refresh(可以自定义多种样式)架构方面有 ...

  6. 吴裕雄--天生自然python学习笔记:python OpenCV 基本绘图

    Open CV 提供了绘制直线.圆形.矩形等基本绘 图的功能 . Open CV 画直线的语法为: 在画布上添加文字的语法为 : 用 Open CV 绘制基本图形 以 OpenCV 基本绘图绘制各种图 ...

  7. 谷歌眼镜、亚马逊音箱,5G时代隐私或将面临更大颠覆

    别看现在的智能手机.平板电脑.可穿戴设备.智能家居等那么火爆,但离开网络它们其实什么也不是.当然,智能终端设备的迭进也是与网络制式不断向前演变相辅相成的,二者算是互相成就.不过也由此衍生出很多问题,尤 ...

  8. npm镜像源

    1.国内用户,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度,先查看本机地址 npm config get registry 2.国内优秀npm镜像推荐及使用 淘宝npm镜像 ·搜索地址 ...

  9. 接口测试-chap5-使用正则表达式提取响应数据

    1.导入相关库 import re 2.re.findall(r"前(.+?)后", 匹配源) 3.前:表示要匹配的文本左边的内容 4.后:表示要匹配的文本右边的内容 5.它的返回 ...

  10. [洛谷P3391] 文艺平衡树 (Splay模板)

    初识splay 学splay有一段时间了,一直没写...... 本题是splay模板题,维护一个1~n的序列,支持区间翻转(比如1 2 3 4 5 6变成1 2 3 6 5 4),最后输出结果序列. ...