首页 > 其他分享 >The sol of coin(搜索减脂版)

The sol of coin(搜索减脂版)

时间:2024-10-24 10:47:36浏览次数:4  
标签:return 减脂版 int sol TOT XX coin define

The sol of coin(搜索减脂版)

https://www.luogu.com.cn/problem/P3878

这题是模拟退火的板子,但这里先讲搜索(刚好练练搜索)

搜索减脂

\(1.\) 按价值从大到小排序,你一不小心取的价值太大会被剪枝

\(2.\)最多取n/2个金币,你取得太多是要被剪枝的

code with 注解

#include<bits/stdc++.h>
#define Ying using
#define AK namespace
#define IOI std;
Ying AK IOI
#define int long long
#define il inline
il int read(){
    int x=0;int f=1;char c=getchar_unlocked();
    while(c<'0'||c>'9'){
        if(c=='-') f=-1;
        c=getchar_unlocked();
    }
    while(c>='0'&&c<='9'){
        x=x*10+c-'0';
        c=getchar_unlocked();
    }
    return x*f;
}
il void print(int x){
    if(x<0) putchar('-'),x=-x;
    if(x>9) print(x/10);
    putchar(x%10+'0');
}
int T;
int n;
const int N=35;
int a[N];
#define FOR(i,_l,_r) for(int i=(_l);i<=(_r);i++)
bool cmp(int a,int b){
    return a>b;
}
int h[N];
int sum(int l,int r){
    return h[r]-h[l-1];
}
const int Max=1e18;
int TOT;
int min(int a,int b){
    if(a<=b) return a;
    else return b;
}
//c-当前讨论第几个数,x-左边的数量,X-左边的值,y-右边的数量,Y-右边的值
int dfs(int c,int x,int X,int y,int Y){
    if(x>n/2||y>n/2) return Max;
    //讨论x最大都小于y
    int XX=X+sum(c,c-1+(n/2-x));
    if(XX<=TOT-XX) return (TOT-XX)-XX;
    //讨论x最小都大于y
    XX=X+sum(n-(n/2-x)+1,n);
    if(XX>=TOT-XX) return XX-(TOT-XX);
    //放在x上
    int p=dfs(c+1,x+1,X+a[c],y,Y);
    //放在y上
    int q=dfs(c+1,x,X,y+1,Y+a[c]);
    return min(p,q);
}
signed main(){
    #ifndef ONLINE_JUDGE
    freopen("coin.in","r",stdin);
    freopen("coin.out","w",stdout);
    #endif
    T=read();
    while(T--){
        n=read();
        FOR(i,1,n) a[i]=read();
        if(n&1) a[++n]=0;
        sort(a+1,a+n+1,cmp);
        FOR(i,1,n) h[i]=h[i-1]+a[i];
        TOT=h[n];

        print(dfs(1,0,0,0,0));puts("");
    }
    return 0;
}

标签:return,减脂版,int,sol,TOT,XX,coin,define
From: https://www.cnblogs.com/yingxilin/p/18499168

相关文章

  • Solon 之 STOMP
    一、STOMP简介如果直接使用WebSocket会非常累,就像用Socket编写Web应用。没有高层级的交互协议,就需要我们定义应用间所发消息的语义,还需要确保连接的两端都能遵循这些语义。如HTTP在TCP套接字之上添加了请求-响应模型层一样,STOMP是在WebSocket之上提供了基于帧的线......
  • CVE-2021-27905(Apache Solr SSRF)漏洞复现
    CVE-2021-27905(ApacheSolrSSRF)ApacheSolr是一个开源的搜索服务,使用Java编写、运行在Servlet容器的一个独立的全文搜索服务器,是ApacheLucene项目的开源企业搜索平台。该漏洞是由于没有对输入的内容进行校验,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行SSRF攻击,......
  • SOLIDWORS许可证错误问题分析
    当大家在安装SOLIDWORKS可能遇到无法获得下列许可,该文章主要介绍常见几种情况与解决办法。1.当在下载的过程中遇到该问题我们首先因该检测电脑名称是为中文字符,如果为中文字符请将中文字符更改为字母字符,在下图中的重命名中更改。然后在重新破解。2.如果在安装后出现该情况......
  • Exploring Qualcomm IPQ5332 and IPQ5322: The Champions of WiFi 7 Solutions
    AsWiFi7technologyrapidlyadvances,Qualcomm'sIPQ5332andIPQ5322chipshaveemergedaspopularchoicesforusers.Thesetwochipsnotonlyexhibitoutstandingperformancebutalsopossessuniquefeaturestailoredtodifferentnetworkrequirement......
  • 【题解】Solution Set - NOIP2024集训Day58 字符串
    【题解】SolutionSet-NOIP2024集训Day58字符串https://www.becoder.com.cn/contest/5658「CF1466G」SongoftheSirens考虑对于\(s_i\),算钦定必须覆盖到\(t_i\)的匹配个数\(f_i\)。注意到\(s\)每次长度都会\(\times~2\)左右,其长度在\(O(\log|w|)\)的时候就......
  • [POI2012] Cloakroom - Solution
    POI2012Cloakroom题目描述(搬自洛谷)有\(n\)件物品,每件物品有三个属性\(a_i,b_i,c_i\(a_i<b_i)\)。再给出\(q\)个询问,每个询问由非负整数\(m,k,s\)组成,问是否能够选出某些物品使得:对于每个选的物品\(i\),满足\(a_i\lem\)且\(b_i>m+s\)。所有选出物品的\(c_i......
  • [ARC185A] mod M Game 2 Solution
    ARC185A-modMGame2简要题意Alice和Bob玩卡牌游戏。每个人都有一副\(N\)张卡牌,分别标上数字\(1\simN\)。现从Alice开始,两人轮流出牌放入牌堆,每人每局恰好出一张牌,出过的牌不能再出;如果在某一时刻,牌堆里所有牌的数字总和是\(M(N<M)\)的倍数,则刚刚出牌的玩家输,......
  • “Cannot resolve symbol XXX”问题。
    问题+解决方法:刚才从Github导入别人的项目,改了全部的爆红,满心期待能编译成功,结果出现报错“CannotresolvesymbolXXX”,我崩溃了。importio.swagger.v3.oas.annotations.media.Schema;这串爆红。并显示Cannontresolvesymbolannotations;后来发现是pom文件缺少swagger......
  • 【题解】Solution Set - NOIP2024集训Day57 字符串
    【题解】SolutionSet-NOIP2024集训Day57字符串https://www.becoder.com.cn/contest/5653「CF213E」TwoPermutations「CF961F」k-substrings「CF580E」KefaandWatch「CF504E」MishaandLCPonTree......
  • 【贪心】【堆】tokitsukaze and Soldier
    https://ac.nowcoder.com/acm/contest/22904/10041.为什么要排序?排序是为了先处理人数限制大的士兵。因为人数限制小的士兵会影响后续的选择,优先处理人数限制大的士兵可以让我们选出更多的士兵,最大化战斗力。如果不排序,可能会先处理人数限制小的士兵,导致过早地剔除高战斗力的......