AHOI彩旗飘飘

这是一题类似于排列组合的题目吧...递推状态

数组f[100][100][100][2];表示红旗数目,黄旗数目,颜色改变的次数,末尾的旗的颜色(0为黄,1为红)

之后就是如何写递推式了:

    for(int k=2;k<=m;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
for(int l=1;l<=i;l++){
f[i][j][k][0]+=f[i-l][j][k-1][1];
}
for(int l=1;l<=j;l++){
f[i][j][k][1]+=f[i][j-l][k-1][0];
}
}

就拿循环中的for(int l=1;l<=i;l++)这个循环说说我自己的想法吧

因为是从上一个状态推下来的,k-1这个应该没有问题,那为什么以黄旗结尾的是加上k-1时以红旗结尾的呢?

其实这个也很好理解...改变k-1次时,以红旗结尾,改变k次时,当然是以黄旗结尾的了

i-l是啥?枚举状态啊....这个需要feel

附上完整代码:

#include<cstdio>
#include<iostream>
using namespace std;
int n,m;
int f[100][100][100][2];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
f[i][j][1][0]=f[i][j][1][1]=1;
}
for(int k=2;k<=m;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
for(int l=1;l<=i;l++){
f[i][j][k][0]+=f[i-l][j][k-1][1];
}
for(int l=1;l<=j;l++){
f[i][j][k][1]+=f[i][j-l][k-1][0];
}
}
cout<<f[n][n][m][1]+f[n][n][m][0];
return 0;
}

VIJOS1097合并果子

这一题和合并石子有点像,但是不可混为一谈...题目的要求是有所不同的,要注意审题

说说这一题吧...这一题也是有很多解法的

因为之前没有打过优先队列,所以这里算是学习了一下吧

首先是头文件#include<queue>

priority_queue<int> qi;//普通的优先级队列,按从大到小排序(默认)

priority_queue<int, vector<int>, greater<int> > qi2;//从小到大的优先级队列

//可将greater改为less,即为从大到小

然后调用起来和queue的操作没有什么区别

但是注意一下q.top和q.front的使用吧,front不一定是最优先的

再套上这一题的思路:

每次选最小的两个数拿出来,加和后再加入队列里,排序。

这个思路有点类似于贪心思想...很容易证明

因为每次合并都是把之前合并的加上现在的某一堆,所以之前合并的果子越小越优

附上代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> >q;
int n,x,y;
long long ans=0;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&x);
q.push(x);
}
while(!q.empty()){
x=q.top();
q.pop();
if(q.empty()) break;
y=q.top();
q.pop();
q.push(x+y);
ans+=(x+y);
}
cout<<ans;
return 0;
}

晚安....

AHOI1997彩旗飘飘 VIJOS1097合并果子(noip2007)的更多相关文章

  1. 【noip 2004】 合并果子

    noip2016结束后的第一份代码--优先队列的练习 合并果子 原题在这里 #include <iostream> #include <queue> #include < ...

  2. 合并果子 2004年NOIP全国联赛普及组

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...

  3. NOIP2004合并果子

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  4. codevs 1063 合并果子//优先队列

    1063 合并果子 2004年NOIP全国联赛普及组  时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石    题目描述 Description 在一个果园里,多多已经将所有的果 ...

  5. [KOJ6024]合并果子·改(强化版)

    [COJ6024]合并果子·改(强化版) 试题描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多把这些果子堆排成一排,然后所有的果子合成一堆.    每一次合并 ...

  6. [KOJ6023]合并果子·改

    [COJ6023]合并果子·改 试题描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多把这些果子堆排成一排,然后所有的果子合成一堆.    每一次合并,多多可以 ...

  7. [KOJ0574NOIP200406合并果子]

    [COJ0574NOIP200406合并果子] 试题描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆.    每一次合并,多多可以把两 ...

  8. NOIP提高组2004 合并果子题解

    NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...

  9. 【NOIP合并果子】uva 10954 add all【贪心】——yhx

    Yup!! The problem name reects your task; just add a set of numbers. But you may feel yourselvesconde ...

随机推荐

  1. 第11章 享元模式(Flyweight Pattern)

    原文 第11章 享元模式(Flyweight Pattern) 概述:   面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是在某些情况下,对象的数量可能会太多,从而导致了运行时 ...

  2. Android环境结构Android Studio解决方法不能启动,第一次

    android Studio 下载和eclipse 的android开发环境的搭建下载包: 联系: http://pan.baidu.com/s/1kTKJZkN password: qxqf And ...

  3. oracle_PLSQL 快捷键使用技巧

    PLSQL 快捷键使用技巧 2012-01-17 09:32:50标签:PLSQL PLSQL 编程工具快捷设置 PLSQL使用技巧 PLSQL 快捷键 oracle PLSQL 最近在开发过程中,遇 ...

  4. php_ThinkPHP的RBAC(基于角色权限控制)详解

    一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通 ...

  5. Sicily 1732 Alice and Bob (二进制最大公约数)

    联系: http://soj.me/1732 Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description: Alice is a b ...

  6. js小记 function 的 length 属性

    原文:js小记 function 的 length 属性 [1,2,3]., ,这个略懂js的都知道. 但是  eval.length,RegExp.length,"".toStr ...

  7. HDU Billboard

    题目分析:给你n张海报,一个宣传板.让你在满足海报能够贴在最高位置的时候则贴的最高,无法满足时贴的最靠左,输出海报所贴的高度.假设不能贴则输出-1. 一道非常easy,可是我没想出的基础线段树. 算法 ...

  8. The Swift Programming Language-官方教程精译Swift(4)字符串和字符

    String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...

  9. Enum:枚举

    原文:Enum:枚举 枚举 (enum) 是值类型的一种特殊形式,它从 System.Enum 继承而来,并为基础的基元类型的值提供替代名称.枚举类型有名称.基础类型和一组字段.基础类型必须是一个内置 ...

  10. 一步一步写算法(之n!中末尾零的个数统计)

    原文:一步一步写算法(之n!中末尾零的个数统计) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在很多面试的题目中,求n!结果中零的个数也是 ...