题意:给一个初始值1,每步操作将1替换为01,将0替换为10。问N步操作后有多少对连续的0。

解法:f[i]表示第i步后的答案。可以直接打表发现规律——奇数步后,f[i]=f[i-1]*2-1;偶数步后,f[i]=f[i-1]*2+1;
至于原因——我只能简单说一点。第i步后的答案可由i-1步后的“01”+“1”+“0”的个数推出,而“01”*2+“1”+“0”=01串的总个数。用x表示i-1步后的“01”的个数,则f[i]=x+(2^(i-1)-x*2);但这样复杂度挺高,我也不知道怎么优化了。

noi oj上的实际数据没有1000这么大,在65以内,用long long也可以过。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6 #define N 1010
7
8 int n;
9 long long f[N];
10
11 int main()
12 {
13 f[1]=0;
14 for (int i=2;i<=N;i++)
15 {
16 if (i%2) f[i]=f[i-1]*2-1;
17 else f[i]=f[i-1]*2+1;
18 }
19 while(~scanf("%d",&n)) printf("%lld\n",f[n]);
20 return 0;
21 }

无高精度

我高精度的不知为何在noi oj上AC,在poj上WA。若有大牛能纠正我,请多多指教~

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6 #define N 1000
7
8 struct node
9 {
10 int s[210];
11 int l;
12 node() {l=0;memset(s,0,sizeof(s));}
13 };
14 node f[N+10];
15
16 node operator*(node x,int y)//不可省掉构成运算符左右的整型
17 {
18 node z;
19 z.l=x.l;
20 for (int i=1;i<=z.l;i++)
21 {
22 z.s[i]+=x.s[i]*2;
23 if (z.s[i]>9) z.s[i+1]+=z.s[i]/10,z.s[i]%=10;
24 }
25 while (z.s[z.l+1]) z.l++;
26 return z;
27 }
28 node operator-(node x,int y)
29 {
30 node z=x;
31 int t=1;
32 z.s[t]--;
33 while (z.s[t]<0) z.s[t]+=10,z.s[++t]--;
34 while (!z.s[z.l]) z.l--;
35 return z;
36 }
37 node operator+(node x,int y)
38 {
39 node z=x;
40 int t=1;
41 z.s[t]++;
42 while (z.s[t]>9) z.s[t+1]+=z.s[t]/10,z.s[t++]%=10;
43 while (z.s[z.l+1]) z.l++;
44 return z;
45 }
46 void print(node x)
47 {
48 for (int i=x.l;i>=1;i--)
49 printf("%d",x.s[i]);
50 printf("\n");
51 }
52 int main()
53 {
54 freopen("a.in","r",stdin);
55 freopen("a.out","w",stdout);
56 f[1].l=1,f[1].s[1]=0;
57 for (int i=2;i<=N;i++)
58 {
59 if (i%2) f[i]=f[i-1]*2-1;
60 else f[i]=f[i-1]*2+1;
61 }
62 int n;
63 while(~scanf("%d",&n)) print(f[n]);
64 return 0;
65 }

高精度+重载运算符

P.S.重载运算符 不可省掉构成运算符左右的2个类型,例如:整型。

【noi 2.6_9290】&【poj 2680】Computer Transformation(DP+高精度+重载运算符)的更多相关文章

  1. 【noi 2.6_9280】&【bzoj 1089】严格n元树(DP+高精度+重载运算符)

    题意:定义一棵树的所有非叶节点都恰好有n个儿子为严格n元树.问深度为d的严格n元树数目. 解法:f[i]表示深度为<=i的严格n元树数目.f[i]-f[i-1]表示深度为i的严格n元树数目.f[ ...

  2. HOJ 2148&POJ 2680(DP递推,加大数运算)

    Computer Transformation Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4561 Accepted: 17 ...

  3. Computer Transformation(规律,大数打表)

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  4. HDU 1041 Computer Transformation (简单大数)

    Computer Transformation http://acm.hdu.edu.cn/showproblem.php?pid=1041 Problem Description A sequenc ...

  5. hdu_1041(Computer Transformation) 大数加法模板+找规律

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  6. (大数)Computer Transformation hdu1041

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  7. POJ.3624 Charm Bracelet(DP 01背包)

    POJ.3624 Charm Bracelet(DP 01背包) 题意分析 裸01背包 代码总览 #include <iostream> #include <cstdio> # ...

  8. Computer Transformation(简单数学题+大数)

    H - Computer Transformation Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &am ...

  9. POJ 2995 Brackets 区间DP

    POJ 2995 Brackets 区间DP 题意 大意:给你一个字符串,询问这个字符串满足要求的有多少,()和[]都是一个匹配.需要注意的是这里的匹配规则. 解题思路 区间DP,开始自己没想到是区间 ...

随机推荐

  1. Openstack Keystone 认证服务(四)

    Openstack Keystone 认证服务(四) keystone 的安装完全依赖ocata的源, 如果没有建议自己搭建. 否则用的源不对会产生各种奇葩问题. 创建keystone库和用户: ## ...

  2. 在 Azure 上执行一些简单的 python 工作

    1. 公司禁用了 python 我的主业是桌面开发,偶尔也需要搞搞数据和算法.最近在用 python 处理一些工作,正搞得热火朝天,突然 python 就不能用了,一查记录原来是 IT 管理员禁止我使 ...

  3. 【Linux】if中的逻辑运算符怎么在linux的帮助中看到

    今天在写shell的时候,突然想查看下if相关的一些逻辑运算的,像-f -d之类的这种 于是man if  或者if --help 可是返回的信息却都无济于事,一点帮助都没有 回想一下,if中调的判断 ...

  4. 【VNC】vnc安装oracle的时候不显示图形化界面

    背景: 在虚拟机搭建了一个环境,准备安装oracle.但是环境都配置完成后,执行./runInstaller的时候,没有界面显示,只显示下面的界面 多次尝试后,发现,还是这样,期初是因为没有配置DIS ...

  5. CTFshow萌新赛-萌新福利

    下载链接文件 拿到show.bin文件 使用010Editor工具打开文件 做取反操作 取反后可以看到 把show.bin改为show.m4a 使用音频播放软件播放,即可得到flag

  6. React 入门-redux 和 react-redux

    React 将页面元素拆分成组件,通过组装展示数据.组件又有无状态和有状态之分,所谓状态,可以简单的认为是组件要展示的数据.React 有个特性或者说是限制单向数据流,组件的状态数据只能在组件内部修改 ...

  7. Oracle 常用命令大全(持续更新)

    数据库 ----数据库启动 & 关闭 启动数据库 SQL> startup nomount; SQL> alter database mount; SQL> alter da ...

  8. wordpress迁移报错

    背景: 因为一些原因迁移wordpress的博客.备份好数据库和网站源码到另一台生产环境上线的时候报错: Warning: require(/www/wwwroot/pazzn/wp-includes ...

  9. jQuery 勾选显示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. 详解SpringMVC

    详解SpringMVC 一.什么是MVC? ​ MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范.就是将业务逻辑.数据.显示分离的方法来组织代码. ...