北大ACM(POJ1010-STAMPS)
Question:http://poj.org/problem?id=1010
问题点:DFS、剪枝。
Memory: 220K Time: 32MS
Language: C++ Result: Accepted #include <iostream>
using namespace std; #define MAX_STAMP_TYPE 100
int stamp[MAX_STAMP_TYPE];
bool tie,none;
int now[],ans[];//记录stamp的index
int max_stamp;//记录最大邮票
int getInfo(int sta[]){
int tmp_a,tmp_b,tmp_c;
tmp_a=;
tmp_b=;
tmp_c=sta[];
for(int i=;i< && sta[i]>;i++)
{
if(sta[i-]!=sta[i]) tmp_a++;//取种类数 千位
tmp_b++;//取总张数 百位
tmp_c=sta[i-]>sta[i]?sta[i-]:sta[i];//取最大值 十位和个位
}
return tmp_a*+(-tmp_b)*+tmp_c;
}
void compare(){
none=false;//只要有结果,none就置为false
int nowInfo=getInfo(now);
int ansInfo=getInfo(ans);
char r=nowInfo>ansInfo?'g':(nowInfo<ansInfo?'l':'e');//g:出现更优解 l:不如现有解 e:tie
if(r=='g'){//如果出现更优解,将now中的数据复制到ans中保存
memcpy(ans,now,sizeof(now));
tie=false;
}else if(r=='e'){
tie=true;
}
return;
}
void dfs(int num,int cnt){
if(num==){//剩余数为0,即为解的出现条件
compare();
return;
}else if(cnt>=){//邮票数不能大于4张
return;
}else if(num<){//剩余需分配数不能小于0
return;
}else if(num>max_stamp*(-cnt)){
return;
}
for(int i=(cnt>?now[cnt-]:);i<=stamp[];i++)
{
now[cnt]=i;
dfs(num-stamp[i],cnt+);
now[cnt]=;
}
}
int main()
{
do{
int tmp,i=;
max_stamp=;
memset(stamp,,sizeof(stamp));
while(cin>>tmp && tmp!=){
stamp[i++]=tmp;
max_stamp=max_stamp>tmp?max_stamp:tmp;
}
stamp[]=i-;//记录邮票种类数
while(cin>>tmp && tmp!=){
tie=false;
none=true;
memset(now,,sizeof(now));
memset(ans,,sizeof(ans));
dfs(tmp,);
if(tie){
cout<<tmp<<" ("<<getInfo(ans)/<<"): "<<"tie"<<endl;
}else if(none){
cout<<tmp<<" ---- none"<<endl;
}else{
cout<<tmp<<" ("<<getInfo(ans)/<<"):";
for(int i=;i< && ans[i]>;i++){
cout<<" "<<stamp[ans[i]];
}
cout<<endl;
}
}
}while(getchar()!=EOF);
return ;
}
北大ACM(POJ1010-STAMPS)的更多相关文章
- 北大ACM - POJ试题分类(转自EXP)
北大ACM - POJ试题分类 -- By EXP 2017-12-03 转载请注明出处: by EXP http://exp-blog.com/2018/06/28/pid-38/ 相关推荐文: 旧 ...
- 北大 ACM 分类 汇总
1.搜索 //回溯 2.DP(动态规划) 3.贪心 北大ACM题分类2009-01-27 1 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同 ...
- POJ1010 Stamps
题目来源:http://poj.org/problem?id=1010 题目大意: 某邮局要设计新的邮资管理软件,依据顾客的需要和现有的面值给顾客分派邮票. 该邮局有很多顾客是集邮爱好者.这些人希望得 ...
- 北大ACM题库习题分类与简介(转载)
在百度文库上找到的,不知是哪位大牛整理的,真的很不错! zz题 目分类 Posted by fishhead at 2007-01-13 12:44:58.0 -------------------- ...
- POJ-1010 Stamps
[题目描述] 题目大意是:邮票发行商会发行不同面值.不同种类的邮票给集邮爱好者,集邮爱好者有总目标面额,通过不同的邮票组合(总数在4张以内)达到该面值,卖给集邮爱好者.另外,发行商发行的邮票面值最多2 ...
- 北大ACM试题分类+部分解题报告链接
转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 部分解题报告添加新内容,除了原有的"大致题意&q ...
- 北大ACM - POJ试题分类
1.入门水题 可用于练手与增强自信 POJ-1003POJ-1004 POJ-1005 POJ-1207 POJ-3299 POJ-2159 POJ-1083POJ-3094 2.初级 2.1. 基本 ...
- 北大ACM(POJ1014-Dividing)
Question:http://poj.org/problem?id=1014 问题点:抽屉原理.dfs.多重背包. Memory: 248K Time: 16MS Language: C++ Res ...
- 北大ACM(POJ1013-Counterfeit Dollar)
Question:http://poj.org/problem?id=1013 问题点:排除+验证. Memory: 244K Time: 16MS Language: C++ Result: Acc ...
- 北大ACM(POJ1012-Joseph)
Question:http://poj.org/problem?id=1012 问题点:约瑟夫环. Memory: 220K Time: 329MS Language: C++ Result: Acc ...
随机推荐
- matlab reshape函数
语法 (1)B = reshape(A,m,n) 使用方法: B=reshape(A,m,n) 返回m*n矩阵B,它的元素是获得A的行宽度.假设A没有m*n元素,得到一个错误结果. 样例: <s ...
- Codeforces Round #310 (Div. 1) B. Case of Fugitive set
B. Case of Fugitive Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/555/p ...
- 点击次数(thinkphp)
protected function addHit($tbName, $id) { //定义变量:作为一个查询条件 $where = array( 'deleted' => 0, 'hidden ...
- [AngularJS] Accessing Data in HTML -- controllerAs, using promises
<!DOCTYPE html> <html> <head> <title>Access Data From HTML</title> < ...
- 重新组织 vs 重新生成索引
索引是数据库引擎中针对表(有时候也针对视图)建立的特别数据结构,用来帮助查找和整理数据.索引的重要性体现在能够使数据库引擎快速返回查询 结果.当对索引所在的基础数据表进行修改时(包括插入.删除和更新等 ...
- Linq lamda表达式Single和First方法
让我们来看看如何对一个整数数组使用 Single 操作符.这个整数数组的每个元素代表 2 的 1 到 10 次方.先创建此数组,然后使用 Single 操作符来检索满足 Linq Lambda表达 ...
- archlinux下wifi-menu显示连接超时
/etc/network.d/wlan0 增加: DHCP_TIMEOUT=30
- discuz(dz) SSO(单点,同歩,异步)登录 --转
原文地址:http://fc-lamp.blog.163.com/blog/static/1745666872012762520123/ discuz(dz) SSO(单点,同歩,异步)登录 一般流 ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 8.全局防护盲点的总结下篇
0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,接上篇http://www ...
- Makefile中指示符“include”、“-include”和“sinclude”的区别
转:http://www.cnblogs.com/xmphoenix/archive/2012/02/22/2363335.html 指示符“include”.“-include”和“sinclude ...