首页 > 其他分享 >洛谷P2036 PERKET题解

洛谷P2036 PERKET题解

时间:2023-01-22 22:55:08浏览次数:52  
标签:P2036 15 int 题解 酸度 食材 PERKET 苦度

 先来审题,主要有以下几个条件:

酸度求乘积,苦度求和,两者相减的值最小(当然是绝对值)。


下面附上AC代码:

#include<bits/stdc++.h>  //万能头文件 
using namespace std;  //命名空间 
int n,s[15],b[15];  //s为酸度,b为苦度 。 
int vis[15];  //表示访问的第几组食材。 
int S=1,B=0,minn=2147483647;
//S为酸度乘积,B为苦度之和,minn赋int最大值。 

void dfs(int x){
    if(abs(S-B)<minn&&x!=0)    minn=abs(S-B);
    //至少要一种,所以x!=0,差小于minn,就对minn重新赋值。
    if(minn==0)return ; 
    //因为不可能比零小,特判优化算法。 
    if(x==n)return ;  //食材选满,结束这一层,倒推(回溯)。 
    for(int i=1;i<=n;i++){
        if(!vis[i]){  //食材还未被访问(使用)过。 
            S*=s[i];B+=b[i];vis[i]=1;
            //记录酸度,苦度,同时占位(食材已被使用) 。 
            dfs(x+1);
            //使用下一种食材,食材数量+1。 
            S/=s[i];B-=b[i];vis[i]=0;
            //还原酸度,苦度,同时取消占位。 
        }
    }
}

int main(){
    cin>>n;  //输入不说多少。 
    for(int i=1;i<=n;i++){
        cin>>s[i]>>b[i];  //每组食材对应的酸度和苦度。 
    } 
    dfs(0);  //从零种食材开始搜索。 
    cout<<minn;  //输出搜索得到的最小值。 
    return 0;//完美结束。
}

 

标签:P2036,15,int,题解,酸度,食材,PERKET,苦度
From: https://www.cnblogs.com/zhangqixun/p/17064773.html

相关文章

  • 【题解】CF193D Two Segments
    题意给定一个\(1\simN\)的排列,在这个排列中选出两段互不重叠的区间,求使选出的元素排序后构成公差为1的等差数列的方案数。选出的两段区间中元素构成的集合相同时视为同一......
  • 【题解】P5787 二分图 /【模板】线段树分治
    概念线段树分治是一种用于维护时间轴等的离线算法,本质上是通过维护时间轴的连续区间得到某一时刻的状态。时间复杂度和普通线段树相同,空间复杂度为\(O(n\logn)\)例题......
  • Codeforces Round #845 (Div. 2) D题解
    D.ScoreofaTree题目链接:https://codeforces.com/contest/1777/problem/D个人感觉还是比较简单的一道计数题题意是给你一颗有n(n<=2e5)节点的树,初始时每个节点有一个......
  • 【题解】P4755 Beautiful Pair
    麻了,这么多典题没做过……思路分治/笛卡尔树。这一类和区间最值相关的区间端点对计数应该都可以用这种做法做。由于求的是最大值,不妨从大到小考虑每个\(a_i\)的贡......
  • 【题解】Codeforces Round #845 (Div. 2) and ByteRace 2023
    建议开题顺序:A->B->C->F->E->D诈骗差评,典题差评,想易写难数据结构差评。A.EverybodyLikesGoodArrays!好像是结论题,但是一力降十会。显然最后合并完后,每个......
  • P5030 题解
    前言题目传送门!更好的阅读体验?一道没啥意思的题目,但是好像很多题解都过不了现在的数据?思路只不过是把正常题目的马(\(1,2\))换成了另一种东西(\(1,3\))。很套路地,黑白......
  • 洛谷 P1123 取数游戏 (又是写了好久 最后还是无奈看了题解……)
    对于这个题感觉是一个比较典型的dfs.本题的状态是对于每个数字你可以选也可以不选,但是一旦你选定某个数字之后,他会对其周围的数字产生影响所以一定要标记好(注意这里标记的......
  • AT_abc286d 题解
    板子首先我们看到值域并不大。因此可以维护值域,跑完全背包。具体而言维护某一个值(小于\(10000\))是否能被凑出来,然后枚举物品种类以及物品数量即可。一般而言,完全背包......
  • AT_abc286e 题解
    首先观察到\(n\leq300\)加上全源“最短路”便可以自然而然的想到floyd。注意到floyd算法的可行性只依赖统计的东西具有优先级。这里我们定义优先级为最短路最短且......
  • ABC286 A-E题解
    题目虽然是大年三十,但是玩手机没写题有意思。从50分钟才开始看题。A题意:将数组中\([p,q]\)与\([r,s]\)的元素交换并输出。sbt。B大意:将字符中的na换成nya。......