题目:https://nanti.jisuanke.com/t/41420

题意:给你一个集合,然后让你拆成两个集合 x,y    求满足  x>y  &&  x-(x集合中最小值) <=y  的方案数

思路:首先我们先拆分问题,我们能不能求出集合不同值的方案数,这个很简单,我们dp[i],i代表当前重量的方案数,然后我们很容易就能得知枚举重量  推导式就是  dp[i]=dp[i]+dp[i-a[i]],现在我们如何求出方案数我们已经知道了,我们怎么得到满足题目给的条件的方案数呢,我们知道总共集合和是多少,我们又知道当前重量是多少 ,我们只要知道当前集合的最小值x是多少,  i>sum-i &&  (i-x)<= sum-i, 现在问题就在我们如何确定最小值,其实很简单,我们只要把物品从大到小排序,我们就能确定当前放的物品一定是当前最小,然后判断即可

#include<bits/stdc++.h>
#define maxn 305
#define mod 1000000007
using namespace std;
typedef long long ll;
int t,n;
int a[maxn];
int sum,num;
int vis[maxn];
int dp[];
void init(){
scanf("%d",&n);
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
num+=a[i];
}
}
int pan(int j,int x){
if(j>=num-j&&j-x<=num-j) return ;
return ;
}
int cmp(int x,int y){
return x>y;
}
int main(){
scanf("%d",&t);
while(t--){
sum=;num=;
init();
sort(a+,a+n+,cmp);
dp[]=;
for(int i=;i<=n;i++){
for(int j=num;j>=a[i];j--){
dp[j]=(dp[j]+dp[j-a[i]])%mod;
if(pan(j,a[i])){
sum=(sum+dp[j-a[i]])%mod;
}
}
}
printf("%d\n",(sum+mod)%mod);
}
}

2019 上海网络赛 J stone name (01背包)的更多相关文章

  1. [2019上海网络赛J题]Stone game

    题目链接 CSLnb! 题意是求出给定集合中有多少个合法子集,合法子集的定义为,子集和>=总和-子集和$\& \&$子集和-(子集的子集和)<=总和-子集和. 其实就是很简 ...

  2. 2019上海网络赛 F. Rhyme scheme 普通dp

    Rhyme scheme Problem Describe A rhyme scheme is the pattern of rhymes at the end of each line of a p ...

  3. [2019上海网络赛F题]Rhyme scheme

    题目链接 题意,求出合法的长度为n的字典序第k小字符串,合法的定义为除了最后一位,每一位的取值范围为'A'到'A'+pos-1,而最后一位的取值范围'A'到当前字符串最大值+1. 队友tql,Orz ...

  4. 2019 上海网络赛 F Rhyme scheme (字典树DP)

    题目:https://nanti.jisuanke.com/t/41414 题意:求长度为n的第k个bell number  ,  就是第i位的选取范围在 1-(i-1)位的最大值 +1,第一位固定为 ...

  5. 2019南昌网络赛 J Distance on the tree 主席树+lca

    题意 给一颗树,每条边有边权,每次询问\(u\)到\(v\)的路径中有多少边的边权小于等于\(k​\) 分析 在树的每个点上建\(1​\)到\(i​\)的权值线段树,查询的时候同时跑\(u,v,lca ...

  6. 2019上海网络赛B题(差分 + 离散化 or 差分 + 思维)

    这题.....队里都没怎么训练差分,导致败北...写了一堆线段树嘤嘤嘤,到最后也是超时,比赛结束后看到了差分的思想于是就去学了一手. 其实了解差分思想的一眼就能看出来是差分了.但是如果对n差分的话很明 ...

  7. [2019徐州网络赛J题]Random Access Iterator

    题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率.son[x]为x节点的儿子节点个数. 又又又又没做出来,心态崩了. 下来看了官方题解后发觉自己大体思 ...

  8. ICPC 2019 徐州网络赛

    ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才 ...

  9. luogu 1327 数列排序 & 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J题 循环节

    luogu 1327 数列排序 题意 给定一个数列\(\{an\}\),这个数列满足\(ai≠aj(i≠j)\),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? ...

随机推荐

  1. 获取react中高阶组件方法

    什么是高阶组件? 高阶组件就是接受一个组件作为参数并返回一个新组件的函数.这里需要注意高阶组件是一个函数,并不是组件,这一点一定要注意.同时这里强调一点高阶组件本身并不是 React API.它只是一 ...

  2. lua-resty-kafka erro xxxx could not be resolved (3: Host not found)

    问题:使用 lua-resty-kafka 向 kafka 发送数据失败,报错如下: slave6 could not be resolved (: Host not found) 配置信息: lua ...

  3. Leaflet

    https://leafletjs.com/ https://github.com/Leaflet/Leaflet

  4. python爬虫——爬取淘票票正在热映电影

    今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货——源 ...

  5. 面试题思考:Stack和Heap的区别 栈和堆的区别

    堆栈的概念: 堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常 ...

  6. 给当当同学的random data

    m**o 00'57"32街**o 00'52"23c**6 00'44"15斗**6 00'57"58n**5 00'32"04s**p 00'51 ...

  7. k3 cloud中获取年月日

    日期类型字段元素.Date.Year(获取年) 日期类型字段元素.Date.Month(获取月)日期类型字段元素.Date.Day(获取天)

  8. 如何设置移动端的tab栏

    这是添加tab栏的代码: {                     "id": "tabBar1",                     "st ...

  9. TensorFlow学习笔记2:逻辑回归实现手写字符识别

    代码比较简单,没啥好说的,就做个记录而已.大致就是现建立graph,再通过session运行即可.需要注意的就是Variable要先初始化再使用. import tensorflow as tf fr ...

  10. Sql Server 显示插入Identity字段

    先像下面这样写 SET IDENTITY_INSERT [表名] ON   ...INSERT INTO ...   别忘了在插入完数据后再执行下面的语句 SET IDENTITY_INSERT [表 ...