首页 > 其他分享 >第三次比赛E题.砝码

第三次比赛E题.砝码

时间:2024-01-27 20:11:25浏览次数:23  
标签:第三次 int sum cout else 砝码 200010 比赛

//01背包变形(三类情况,不增不减,增砝码,减砝码)
include<bits/stdc++.h>
using namespace std;
const int N=110,M=200010,b=M/2;
int v[N],f[N][M];
int main()
{
int n,sum;
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&v[i]),sum+=v[i];
f[0][b]=true;
for(int i=1;i<=n;i++)
for(int j=sum;j;j--)
{
if(j==v[i])f[i][j]=1;
else if(f[i-1][j])f[i][j]=1;
else if(f[i-1][abs(j-v[i])])f[i][j]=1;
else if(f[i-1][j+v[i]])f[i][j]=1;
}
int res=0;
for(int i=1;i<=sum;i++)if(f[n][i])res++;
cout<<res<<endl;
return 0;
}
//或者
include<bits/stdc++.h>
using namespace std;
const int N=110,M=200010,b=M/2;
int v[N];
bool f[N][M];
int main()
{
int n,sum;
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&v[i]),sum+=v[i];
f[0][b]=true;
for(int i=1;i<=n;i++)
for(int j=-sum;j<=sum;j++)
{
f[i][j+b]=f[i-1][j+b];
if(j-v[i]>=-sum)f[i][j+b]|=f[i-1][j-v[i]+b];
if(j+v[i]<=sum)f[i][j+b]|=f[i-1][j+v[i]+b];
}
int res=0;
for(int i=1;i<=sum;i++)if(f[n][i+b])res++;
cout<<res<<endl;
return 0;
}

标签:第三次,int,sum,cout,else,砝码,200010,比赛
From: https://www.cnblogs.com/violet-hty/p/17991862

相关文章

  • 第一次比赛C题.日期
    include<bits/stdc++.h>usingnamespacestd;vectorv;//vectormap的应用//先将所有情况用vector存入,再利用map容器的特性输出intd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intrun(inta,intb){if((a%40&&a%100!=0)||(a%4000)){if(b==2)return1;return0;}......
  • 比赛
     第3题    比赛查看测评数据信息N头奶牛,编号1∼N,一起参加比赛。奶牛的战斗力两两不同。这些奶牛之间已经进行了M轮两两对决。在对决中,战斗力高的奶牛一定会战胜战斗力低的奶牛。请问,通过上述M轮对决的结果,可以确定多少头奶牛的具体战斗力排名。1≤N≤100,1≤M≤4500,......
  • P5738 【深基7.例4】歌唱比赛
    1.题目介绍【深基7.例4】歌唱比赛题目描述\(n(n\le100)\)名同学参加歌唱比赛,并接受\(m(m\le20)\)名评委的评分,评分范围是\(0\)到\(10\)分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下\(m-2\)个评分的平均数。请问得分最高的同学分数是多少?......
  • 搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战
    搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战可以说,DeepFM是目前最受欢迎的CTR预估模型之一,不仅是在交流群中被大家提及最多的,同时也是在面试中最多被提及的:1、Deepfm的原理,DeepFM是一个模型还是代表了一类模型,DeepFM对FM做了什么样的改进,FM的公式如何化简并求......
  • UofTCTF 2024 比赛记录
    这次的题目挺有意思,难度适中,*开头的代表未做出,简单记录一下解题笔记。IntroductionGeneralInformation题目TheflagformatforallchallengesisUofTCTF{...},caseinsensitive.Ifyouareexperiencingtechnicaldifficultieswithchallenges,supportisonour......
  • 新开的信使——比赛总结
    7.7线上组队赛,队友:luomiao,305/400pts,rnk4/6。A题枚举保留的矩阵,坑点是\(k=0\)时可以不保留矩阵。B题简单构造,坑点是\(n=1,m=1\)。C题由于最小一半,可以用随机化,可以枚举模数再随机化判断,也可以随机两个数判断差的模数;也可以利用数量的限制优化枚举,如果模数是\(m\),则......
  • 开始新的新——比赛总结
    8.17小线下赛(小l到小n)T1:数据结构优化DP、最短路都可过,最短路可以用“前(后)缀优化建图的方式”。T2:哈夫曼树。T3:可以发现,对于两个弓箭手\(i,j\),如果\(r_i\leqr_j\),只要\(x_i-r_i\leqx_j\leqxi+r_i\),则这两个弓箭手能互相在对方的攻击范围,所以\(i,j\)能互相掩护的条......
  • 9.2 比赛总结
    E到H。T2简单树上DP。T4原题。首先将一个操作拆成两个操作,每个操作加入\((x,y,z),(x+1,y+1,z+2)\dots\)。用堆(队列也行)模拟kruskal的过程,讨论一条边之后,将它的后继加入堆。可以发现,如果一条边无法使用,则可以不加入它的后继,因为树上连接这两个点的路径上的边的边权都......
  • 9.18 比赛总结
    题目。A,B水,D随便一种算法找环,然后随便一种数据结构维护。C:两个点等价,当且仅当以两个点为根的树同构。如果存在一个点不与其它点等价,则以这个点作为根,否则一定有两个连有边的点等价,断开这条边形成两棵同构的子树。经过这步处理之后,等价的点一定在相同深度。状态采用一般的树......
  • 9.9 比赛总结
    P~S。A改成kruskal重构树或直接并查集合并,跑一个树上背包。C贪心1容易发现,从\(k\)到\(k+1\),最多有\(4\)种情况:增加一个A类。增加一个B类。减少一个A类,并增加组。减少一个B类,并增加组。如果不是这些,那\(k\)的方案不是最优的。用\(5\)个可删堆维护......