NOIP 2000 提高组 题解

时间:2022-09-04 12:29:38

NOIP2000 提高组 题解

No 1. 进制转换

https://www.rqnoj.cn/problem/295

水题

对于n和基数r, 每次用n mod r, 把余数按照逆序排列

注意 mod后余数必须为正

 int n,r;
 ]={','A','B','C','D','E','F','G','H','I','J'};

 int main()
 {
     ios_base::sync_with_stdio();

     while(cin>>n>>r)
     {
         cout<<n;

         string ans="";

         cout<<'=';

         int t=n;

         )
         {
             ;
             x=t%r;
             ) x=x-r;

             ans=a[x]+ans;
             t=(t-x)/r;
         }

         cout<<ans<<'('<<"base"<<r<<')'<<endl;
     }

     ;
 }

No 2. 乘积最大

  https://www.rqnoj.cn/problem/311

简单dp

预处理出s中的s.substr(i,j)

dp(i,j) 为前i个字符中用上k个乘号的种类数

dp[i][j]=max(dp[i][j],dp[k][j-1]*f[k+1][i]) 其中k是用于枚举最后一个乘号的位置

 ][];
 string s;
 long long n,m;
 ][];

 int main()
 {
     ios_base::sync_with_stdio();

     cin>>n>>m;

     cin>>s;

     ;i<n;i++)
     {
         ;
         for(long long j=i;j<n;j++)
         {
             num=num*+s[j]-';
             f[i+][j+]=num;
         }
     }

     ;i<=n;i++)
     {
         dp[i][]=f[][i];
     }

     ;i<=n;i++)
     {
         ;j<i;j++)
         {
             for(long long k=j;k<i;k++)
             {
                 dp[i][j]=max(dp[i][j],dp[k][j-]*f[k+][i]);
             }
         }
     }

     cout<<dp[n][m]<<endl;

     ;
 }

No 3.方格取数

https://www.rqnoj.cn/problem/314

简单的一个双线程dp 用贪心也可以

我感觉写两个dp好写多了

不过这样写代码短

 ][]= {},f[][][]= {},temp,n;

 void init()
 {
     int x,y;
     cin>>n;
     while(cin>>x>>y>>temp)
     {
         if(x)s[x][y]=temp;
         else break;
     }
 }

 int ty(int step,int x)
 {
     );
 }

 int max(int a,int b,int c,int d)
 {
     int x,y;
     x=a>b?a:b;
     y=c>d?c:d;
     return x>y?x:y;
 }

 int main()
 {
     int i,j,k,maxn;

     init();

     ; i<=*n-; i++)
         ; j<=n; j++)
             ; k<=n; k++)
             {
                 if (j>i) continue;
                 if (k>i) continue;
                 ][j-][k],f[i-][j][k-],f[i-][j][k],f[i-][j-][k-])+s[j][ty(i,j)];
                 ][j-][k],f[i-][j][k-],f[i-][j][k],f[i-][j-][k-])+s[j][ty(i,j)]+s[k][ty(i,k)];
             }

     cout<<f[*n-][n][n]<<endl;
     ;
 }

No 4.单词接龙

https://www.rqnoj.cn/problem/608

dfs+判断字符串能否首尾相连

判断字符串能否首尾相连用预处理也行,但我觉得没必要

dfs时记录一下长度和字符串使用次数即可

 ],ans;
 ][];

 void readdata()
 {
     cin>>n;
     ; i<=n; i++)
     {
         cin>>s[i];
     }

     cin>>st;

     ; i<=n; i++)
     {
         t[i]=;
     }
 }

 int check(int q,int w)
 {
     int x=strlen(s[q]),y=strlen(s[w]);

     ;

     ; i>; i--)
     {
         ok=;
         for(int j=i; j<x; j++)
         {
             ) continue;

             ok=;
         }

         ) return i;
     }

     ;
 }

 void dfs(int k,int l)
 {
     int x;

     ans=max(ans,l);

     ; i<=n; i++)
     {
         x=check(k,i);

         &&x>)
         {
             t[i]--;

             dfs(i,strlen(s[i])-strlen(s[k])+l+x);

             t[i]++;
         }
     }
 }

 void work()
 {
     ; i<=n; i++)
     {
         ]==st)
         {
             t[i]--;

             dfs(i,strlen(s[i]));

             t[i]++;
         }
     }

     cout<<ans<<endl;
 }

 int main()
 {
     readdata();
     work();

     ;
 }

The End

NOIP 2000 提高组 题解的更多相关文章

  1. NOIP 2014 提高组 题解

    NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...

  2. NOIP 2001 提高组 题解

    NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...

  3. noip 2016 提高组题解

    前几天写的那个纯属搞笑.(额,好吧,其实这个也不怎么正经) 就先说说day2吧: T1:这个东西应该叫做数论吧. 然而我一看到就照着样例在纸上推了大半天(然而还是没有看出来这东西是个杨辉三角) 然后就 ...

  4. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...

  5. &lbrack;NOIp 1998 提高组&rsqb;Probelm 2 连接多位数【2011百度实习生笔试题】

    /*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...

  6. noip2010提高组题解

    NOIP2010提高组题解 T1:机器翻译 题目大意:顺序输入n个数,有一个队列容量为m,遇到未出现元素入队,求入队次数. AC做法:直接开1000的队列模拟过程. T2:乌龟棋 题目大意:有长度为n ...

  7. 【NOIP2018】提高组题解

    [NOIP2018]提高组题解 其实就是把写过的打个包而已 道路铺设 货币系统 赛道修建 旅行 咕咕咕 咕咕咕

  8. 最优贸易 NOIP 2009 提高组 第三题

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...

  9. NOIP 2006 提高组 t1 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

随机推荐

  1. 【洛谷P2513】逆序对数列

    前缀和.滚动数组优化dp f[i][j]表示前i个数,逆序对数为j的方案数 我们知道,在第k个位置放第i个数,单步得到的逆序对数为i-k 则在前i个数,最多能产生的逆序对数为i个,最少0个,均可转移到 ...

  2. Memcached服务介绍及安装指南

    一.memcached服务介绍 1.为什么需要memcached服务 A:第一种场景 网站访问大多数情况下都需要查询数据库操作,如果网站的流量很大并且大多数的访问会造成数据库高负荷的状况下,由于大部分 ...

  3. std&colon;&colon;list

    1遍历 std::list<TYPE*>::const_iterator iter_list; for (iter_list = my_list.begin(); iter_list != ...

  4. Java学习之路&lpar;一&rpar; —— Java命名规范

    Package 的命名 Package 的名字应该都是由一个小写单词组成. Class 的命名 Class 的名字必须由大写字母开头而其他字母都小写的单词组成 Class 变量的命名 变量的名字必须用 ...

  5. JS~Boxy和JS模版实现一个标准的消息提示框

    面向对象的封装 面向对象一个入最重要的特性就是“封装”,将一些没有必要公开的方法和属性以特定的方式进行组装,使它对外只公开一个接口,外界在调用它时,不需要关注它实现的细节,而只要关注它的方法签名即可, ...

  6. Windows端口转发

    1. PortTunnel 2. windows 自带的 netsh -----windows下也有一个小工具:portforward.exe,图形界面容易操作,个人平常使用可以,但是也没有办法实现与 ...

  7. &lbrack;ExtJS5学习笔记&rsqb;第三十三节 sencha extjs 5 grid表格导出excel

    使用extjs肯定少不了使用表格控件,用到表格,领导们(一般)还是惯于使用excel看数据,所以用到extjs表格的技术猿们肯定也会有导出表格excel这一个需求,本文主要针对如何在用extjs将gr ...

  8. unittest生产html测试报告

    需要添加HTMLTestRunner.py文件,我用的ubuntu16.04下的python3.5.2,所以我放在/usr/lib/python3.5下 import unittest import ...

  9. Mac 电脑终端上传项目到github上

    1.安装Git  去官网自己研究(这个是很全的,也很详细:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b806 ...

  10. MAC快捷方式记录

    刚刚转到MAC,很多功能发现不能用,总结一下: 刷新页面:command+r 命令行,到行首:control+a 命令行,到行尾:control+e vim,到行尾:shift+$ vim,到行首:s ...