Codevs 1005 生日礼物
1005 生日礼物
9月12日是小松的朋友小寒的生日。小松知道小寒特别喜欢蝴蝶,所以决定折蝴蝶作为给小寒的生日礼物。他来到了PK大学最大的一家地下超市,在超市里,小松找到了n种可以用来折纸的本子。每种类型的本子里有若干不同颜色的纸若干张,当然同种类型的本子一定是完全一样的,而不同种类型的本子不一定完全不一样。他统计了一下,这里总共有n种不同类型的可以用来折纸的本子,每种本子各有bi本,所有的纸中有m种颜色是小寒所喜欢的颜色。小松希望他折的每种颜色的蝴蝶的数目是一样的。换句话说,小松必须折m*k只蝴蝶,其中k代表每种颜色蝴蝶的数目,这个数由小松自己来决定。但是小松又不能浪费纸,也就是说他买的本子中,只要是小寒喜欢的颜色的纸都要被折成蝴蝶。于是问题来了,每种类型的本子应该各买多少本,才能折出这m*k只蝴蝶呢?当然,由于小松是个很懒的人,他希望折的蝴蝶数目越少越好,只要表达了心意就可以了(也就是不能1只也不折)。而如果小松总共必须折1000只以上的蝴蝶才能满足要求,那么他就宁愿换一种礼物的方案了。
输入的第一行包含2个整数n(1≤n≤8),m(1≤m≤10)。表示有n种不同类型的本子和m种小寒喜欢的颜色。接下来一个n*m的矩阵。第i行第j列的整数aij表示在第i种类型的本子中包含小寒喜欢的颜色j的纸有aij(1≤aij≤100)张。再接下来的一排n个整数b1到bn,表示每种颜色的本子在超市中有多少本(1≤bi≤5)。
输出包含一个整数,表示小松最少需要折的蝴蝶数目,如果该数目超过1000,则输出”alternative!”。(由于可能存在多种买本子的方案,所以这里就不要求输出具体方案了)
2 3
2 1 2
4 8 4
5 5
36
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int a[10][12],f[12],sum[12],lim=1001;//限制边界次数 题目要求不超过1000 5 int n,m; 6 void dfs(int s){ 7 for(int i=0;i<=f[s];i++){ 8 for(int k=1;k<=m;k++) 9 sum[k]+=a[s][k]*i;//每种颜色的本子的数目; 10 if(s<n) dfs(s+1); 11 else{ 12 int flag=0; 13 for(int k=2;k<=m;k++){ 14 if(sum[k]!=sum[k-1]){ 15 flag=1;break; 16 } 17 } 18 if(!flag)//每种颜色的本子的数目都一样 sum[1..n]都可以 19 if(sum[1]*m<lim&&sum[1]>0) 20 lim=min(lim,sum[1]*m); 21 } 22 for(int k=1;k<=m;k++)//回溯 23 sum[k]-=a[s][k]*i; 24 } 25 } 26 int main(){ 27 scanf("%d%d",&n,&m); 28 for(int i=1;i<=n;i++)//第i行第j列的整数aij表示在第i种类型的本子中包含小寒喜欢的颜色j的纸有aij(1≤aij≤100)张 29 for(int j=1;j<=m;j++) 30 scanf("%d",&a[i][j]); 31 for(int i=1;i<=n;i++)//本子数目 32 scanf("%d",f+i); 33 dfs(1);//从第一本开始搜 34 if(lim<=1000) printf("%d\n",lim); 35 else printf("alternative!\n"); 36 return 0; 37 }
转载于:https://www.cnblogs.com/suishiguang/p/6217425.html
Codevs 1005 生日礼物相关推荐
- codevs 1005 生日礼物
1005 生日礼物 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 9月12日是小松的朋友小寒的生日.小松知 ...
- CODEVS——T 1005 生日礼物
http://codevs.cn/problem/1005/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 9月12日 ...
- codevs 搜索题汇总(黄金级)
2801 LOL-盖伦的蹲草计划 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 众所周知,LOL这款伟大的游戏,有个叫盖伦的 ...
- 【贪心】【codevs】1214 线段覆盖
http://codevs.cn/problem/1214/ 我去这个题...wa的我都没脾气了... 我写while(~scanf("%d", &n))竟然是不对的... ...
- 习题:codevs 2822 爱在心中 解题报告
这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...
- codevs 1373 射命丸文
codevs 1373 射命丸文 题目描述 Description 在幻想乡,射命丸文是以偷拍闻名的鸦天狗.当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕.假设现在文文面前有一块N行 ...
- Codevs 1021 玛丽卡
Codevs 1021 玛丽卡 题目地址:http://codevs.cn/problem/1021/ 题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他 ...
- codevs 1576 最长严格上升子序列
题目链接:http://codevs.cn/problem/1576/ 题目描述 Description 给一个数组a1, a2 ... an,找到最长的上升降子序列ab1<ab2< .. ...
- [ CodeVS冲杯之路 ] P1116
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1116/ 数据很小,DFS可A,每层枚举颜色,判断相邻的点是否有重复的颜色,记得回溯时把颜色染回0,即无颜色 这里我使用 ...
最新文章
- 钱包一般链接那个节点_Zcash屏蔽地址漏洞或揭示全节点IP地址(附解决方案)...
- Scrapy练习——爬取京东商城商品信息
- 互联网巨头基于全球产业链打造ARM CPU
- php渐变字,jQuery_jQuery实现的立体文字渐变效果,先截两个图看看: 效果很 - phpStudy...
- 交叉编译出现skipping incompatible_交叉编译bluez-5.50
- 相等运算符重载中的问题
- qtplaintextedit如何删除内容_数据库中的数据如何进行批量修改
- stm32控制步进电机程序
- java宠物商店_Java如何实现宠物商店管理 Java实现宠物商店管理代码示例
- 对网上一些Java笔试题的总结,答案与自我理解(400道)
- AT指令判断NBIoT网络质量
- GIC/ITS代码分析(11)LPI中断虚拟化之概述
- A1、A2、A3、A4纸都是多大尺寸
- 【apache lang3】import org.apache.commons.lang3.StringUtils error----Cannot resolve symbol ‘lang3‘
- 视力测试的软件,App Store 上的“测试你的眼睛 —— 视力锻炼检查”
- 基于RedHat6.5的Greenplum环境配置
- 发票样板 html+css
- 使用python下载图片(福利)
- 图片 bbox 翻转
- webgame qlj
热门文章
- TCP连接的建立和终止
- 搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
- python3使用requests模块完成get/post/代理/自定义header/自定义Cookie
- 自学linux指令分析-cat
- curl抓取页面时遇到重定向的解决方法(转)
- 【编程之美】2.12快速寻找满足条件的两个数
- 【2012年终总结】之一 opencv + ds采集摄像头视频 MFC点点滴滴
- Convert .Net Program To Mono
- 用户控件制作时设计模式加载报错的解决办法
- 让PasswordRecovery控件使用Email地址找回密码