AHOI1997彩旗飘飘 VIJOS1097合并果子(noip2007)
这是一题类似于排列组合的题目吧...递推状态
数组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;
}
这一题和合并石子有点像,但是不可混为一谈...题目的要求是有所不同的,要注意审题
说说这一题吧...这一题也是有很多解法的
因为之前没有打过优先队列,所以这里算是学习了一下吧
首先是头文件#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)的更多相关文章
- 【noip 2004】 合并果子
noip2016结束后的第一份代码--优先队列的练习 合并果子 原题在这里 #include <iostream> #include <queue> #include < ...
- 合并果子 2004年NOIP全国联赛普及组
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...
- NOIP2004合并果子
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- codevs 1063 合并果子//优先队列
1063 合并果子 2004年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 题目描述 Description 在一个果园里,多多已经将所有的果 ...
- [KOJ6024]合并果子·改(强化版)
[COJ6024]合并果子·改(强化版) 试题描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多把这些果子堆排成一排,然后所有的果子合成一堆. 每一次合并 ...
- [KOJ6023]合并果子·改
[COJ6023]合并果子·改 试题描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多把这些果子堆排成一排,然后所有的果子合成一堆. 每一次合并,多多可以 ...
- [KOJ0574NOIP200406合并果子]
[COJ0574NOIP200406合并果子] 试题描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两 ...
- NOIP提高组2004 合并果子题解
NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...
- 【NOIP合并果子】uva 10954 add all【贪心】——yhx
Yup!! The problem name reects your task; just add a set of numbers. But you may feel yourselvesconde ...
随机推荐
- JavaScript--基于对象的脚本语言学习笔记(三)
事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv=&q ...
- 栈 <stack>
STL: pop:完成的仅仅是移除最顶端的数据.如果访问最顶端的数据,需要使用top函数(这个操作通常也被称为peek). #include <stack> #include <cs ...
- Openstack本学习笔记——Neutron-server服务加载和启动源代码分析(三)
本文是在学习Openstack过程中整理和总结.因为时间和个人能力有限.错误之处在所难免,欢迎指正! 在Neutron-server服务载入与启动源代码分析(二)中搞定模块功能的扩展和载入.我们就回到 ...
- oracle_导入、导出数据
逐步整理oracle导入导出数据 1.单表,不同库之间的导入导出 导出exp system/manager@myoracle file=d:\daochu.dmp tables=(table1) sy ...
- MVC 发布到 windows2003遇到 'System.Web.WebPages.Razor 错误提示
摘自: http://blog.csdn.net/lanqiao825/article/details/7840606 http://bbs.maticsoft.com/forum.php?mod=v ...
- Android checkCallingPermission()方法返回值问题
Android开发检查权限时,发现调用checkCallingPermission()总是返回值-1,而Binder.getCallingPid() == Process.myPid()又总是返回tr ...
- linux c ping 实现
用c语言实现的linux中的ping命令 #include <stdio.h> #include <signal.h> #include <arpa/inet.h> ...
- OpenVPN多实例优化的思考过程
1.sss 当构建组件之间的关系已经错综复杂到接近于一张全然图的时候,就要换一个思路了,或者你须要重构整个系统,或者你将又一次实现一个. 2.TAP网卡和TUN网卡 2.1.TAP的优势 1.方便组网 ...
- 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...
- 浅谈JavaScript性能
最近在JavaScript性能方面有所感悟,把我的经验分给大家: 说到JavaScript,就不得不说它的代码的运行速度—— 在我初学JavaScript的时候,只是觉得它是一个很强大的脚本.渐渐的, ...