T1.笨小猴

  给出一个单词求出现次数最多和最少之差是不是质数。

   很水的。统计一下反正就26个字母。

T2.火柴棒等式

   给出火柴棒数,求形如 a+b=c能拼成的等式个数。

   先减去4根(+,=),然后枚举a,b,判断根数。

T3.传纸条

   给出一个矩阵,求左上角到右下角走两次(每个格子最多一次)能取得的最大值。

   首先可以写出f[i][j][k][l],为第一张走到i,j,另一张走到k,l时的最大值(因为可视为同时从1,1出发)。

   f[i][j][k][l]=max(f[i-1][j][k-1][l],f[i-1][j][k][l-1],f[i][j-1][k-1][l],f[i][j-1][k][l-1]);

   但是可以优化空间。因为i+j==k+l所以可以用f[x][y][z]表示共走了x步,第一张向下走了y步,另一张向下走了z步的情况。这种情况下要确保一张走过的另一张不能再走。所以代码如下(我打的??时间久了不记得了。。。)

  

 #include <iostream>
#include <algorithm>
using namespace std; int m,n,v[][],f[][][]; int main(){
cin >> m >> n;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
cin >> v[i][j];
for(int i=;i<=m+n-;i++)
for(int j=;j<=i&&j<=m;j++)
for(int k=j;k<=i&&k<=m;k++)
{
if(j!=k||i==m+n-)
{
if(j<k-) f[i][j][k]=max(f[i][j][k],f[i-][j][k-]);
if(j-<k) f[i][j][k]=max(f[i][j][k],f[i-][j-][k]);
if(j-<k-) f[i][j][k]=max(f[i][j][k],f[i-][j-][k-]);
if(j<k) f[i][j][k]=max(f[i][j][k],f[i-][j][k]);
f[i][j][k]=f[i][j][k]+v[j][i-j+]+v[k][i-k+];
}
}
cout << f[m+n-][m][m] << "\n";
}

T4.双栈排序

   给出n个数的一种排列,求能否利用两个栈使出栈序列从小到大排序。

   这个要分步来,首先考虑单栈排序。一个栈要排序,必须不存在 (i<j<k 且  v[k]<v[i]<v[j])的情况

   那么双栈排序也是一样的,只是ij不能放到同一个栈里了。

   那么可以用二分图染色,ij之间连线。染色的时候如果冲突就无解。否则优先a,b,c,d,进行操作直到完全出栈。

   

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std; int n;
int a[];
int k[];
int nxt[],lst[],ed[],cnt;
int col[];
stack<int> q1,q2; void addedge(int a,int b)
{
nxt[++cnt]=lst[a];lst[a]=cnt;ed[cnt]=b;
nxt[++cnt]=lst[b];lst[b]=cnt;ed[cnt]=a;
} void dfs(int nw,int cl)
{
if (!col[nw])
col[nw]=cl;
else if(col[nw]!=cl)
{
cout << "0\n";
exit();
}
else
return;
for (int i=lst[nw];i;i=nxt[i]) dfs(ed[i],-cl);
} int main()
{
cin >> n;
for (int i=;i<=n;i++)
cin >> a[i];
k[n]=a[n];
for (int i=n-;i>=;i--)
k[i]=min(k[i+],a[i]);
for (int i=;i<=n;i++)
for (int j=i+;j<n;j++)
if (k[j-]<a[i] && a[j]>a[i])
addedge(i,j);
for (int i=;i<=n;i++)
if (!col[i])
dfs(i,);
int nww=,tt=;
while ()
{
if (nww>n) break;
if (col[tt]==&&(q1.empty()||q1.top()>a[tt]))
{
q1.push(a[tt]);
tt++;
cout << "a ";
continue;
}
if (!q1.empty() && q1.top()==nww)
{
cout << "b ";
nww++;
q1.pop();
continue;
}
if (col[tt]==&&(q2.empty()||q2.top()>a[tt]))
{
q2.push(a[tt]);
tt++;
cout << "c ";
continue;
}
if (!q2.empty() && q2.top()==nww)
{
cout << "d ";
nww++;
q2.pop();
continue;
}
}
return ;
}

noip2008解题报告的更多相关文章

  1. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  2. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  3. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  4. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  5. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  6. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  7. 习题:codevs 1519 过路费 解题报告

    今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...

  8. NOIP2016提高组解题报告

    NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合

  9. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

随机推荐

  1. Python开发入门与实战6-表单

    6. 表单 从简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的重要交互手段.本章介绍如何用Django如何对用户通过表单提交的数据进行访问. ...

  2. 传智播客JavaWeb day09-mysql入门、数据库操作、数据库表操作、数据行操作

    不知不觉已到了第九天了,今天主要讲了关系数据库的基本概述.安装.数据库.表和数据行的操作 1. 基本概述 1.1 数据库就是用来存储数据的.早期是存在文件里面的操作起来效率低而且不是很安全. 1.2 ...

  3. python学习:函数的学习

    我们写东东的时候,往往有一些东西要频繁去复用,那么每个功能是10行代码,复用2次就是20行,这样看来我们的程序如果频繁利用某些代码的话,那么会是我们开发的东西越来越臃肿.那么好的方法有没有呢,那就是函 ...

  4. JDK各版本新特性!

    1.JDK1.5 新特性 1.自动装箱与拆箱:自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中.自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取 ...

  5. 2015GitWebRTC编译实录14

    libvpx 尝试用脚本编译了下,发现有问题,就偃旗息鼓,改用他自己的configure了,在网上找了下,Git上有个现成的,直接用,更好些. https://github.com/brion/VPX ...

  6. oracle中的装换函数

    日期装换成字符的函数:TO_CHAR(date[,fmt[,params]]) 默认格式:DD-MON-RR 参数说明: date:将要装换的日期 fmt:装换的格式 params:日期的语言(可以不 ...

  7. JAVA中精确计算金额BigDecimal

    package com.chauvet.utils; import java.math.BigDecimal; import java.text.DecimalFormat; import java. ...

  8. [NOIP2009] 靶形数独(搜索+剪枝)

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

  9. CentOS中Device eth0 does not seem to be present错误解决办法

    今天克隆的虚拟机,当需要多台虚拟机的时候,试用克隆真是方便,不过遇到了 Device eth0 does not seem to be present 的问题,在网上找到遇到同样问题的解决方法, 很顺 ...

  10. JS识记

    1.重新按照URL地址加载本页? window.location.reload(); 2.JS中实现命名空间一例? <script type="text/javascript" ...