【2019上海网络赛】

B题:分成两序列,A>B,A-(a[i]属于A里面的)<=B;

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
const ll inf=1e18;
ll dp[300*500+5];
int a[300];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,s=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),s+=a[i];
sort(a+1,a+1+n);
for(int i=1;i<=s;i++)dp[i]=0;
dp[0]=1;
for(int i=1;i<=n;i++)
for(int j=s;j>=a[i];j--)
(dp[j]+=dp[j-a[i]])%=mod;
ll ans=0;
for(int i=1;i<=n;i++)
{
for(int j=a[i];j<=s;j++)///表示去a[i]后的方案数
dp[j]=(dp[j]-dp[j-a[i]]+mod)%mod;
for(int j=max((s+1)/2-a[i],0);j<=s-j-a[i];j++)///因为我们减掉的a【i】得是任意的,那肯定是最小的也得满足,所以我们上面先排序了后一个一个枚举
ans=(ans+dp[j])%mod;
}
printf("%lld\n",ans);
}
return 0;
}

原文地址:https://www.cnblogs.com/hgangang/p/11526688.html

时间: 2024-11-06 03:35:16

【2019上海网络赛】的相关文章

2019 上海网络赛G 手写哈希map+字符串hash

https://nanti.jisuanke.com/t/41415 因为对于询问$\sum |s|<=1e5$,因此$|s|$的种类数$<=\sqrt{1e5}$ 我们分组标记,就变成了$\sqrt{1e5}$次询问了,我们暴力去跑, 复杂度$1e5\sqrt{1e5}*hashmap$ 暴力+哈希+$unordermap$计数,嗯,果然TLE了 然后手写一个$hashmap$,跑的飞快... #include<bits/stdc++.h> #define ull unsigne

2019徐州网络赛 XKC&#39;s basketball team 线段树

网址:https://nanti.jisuanke.com/t/41387 题意: 大家好,我是训练时长两年半的个人练习生蔡徐坤,我的爱好是唱,跳,rap,篮球. 给出一段长度为$n,(n \leq 1e5)$的序列,对每一个数,求出它和它后面比它大$m$的数中间夹着的数的数量,没有输出$-1$. 题解: 直接建线段树,维护最大值,然后查询时对第$i$个数,搜索区间$[i,n]$之中大于$num[i]+m$的值的位置的最大值,具体操作是先限定区间,然后求出所有合法位置,取最大值,如果搜索不到则返

ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval

ACM-ICPC 2019南昌网络赛I题 Yukino With Subinterval 题目大意:给一个长度为n,值域为[1, n]的序列{a},要求支持m次操作: 单点修改 1 pos val 询问子区间中某个值域的数的个数,连续的相同数字只记为一个.(即统计数字段的个数) 2 L R x y 数据范围: 1 ≤ n,m ≤ 2×10^5 1 ≤ a[i] ≤ n 解题思路: 连续重复的数字只记一次.所以考虑将每个数字段除第一个出现外的数字都删去(记为0).在读入操作的时候暴力模拟,同时维护

2019 CCPC网络赛

一到网络赛,大家都是东亚之光 1001 00:23:46 solved by hl 签到 枚举一下位就行了 #include <map> #include <set> #include <ctime> #include <cmath> #include <queue> #include <stack> #include <vector> #include <string> #include <bitset

2019 ACM-ICPC 上海网络赛 B. Light bulbs (差分)

题目链接:Light bulbs 比赛链接:The Preliminary Contest for ICPC Asia Shanghai 2019 题意 给定 \(N\) 个灯泡 (编号从 \(0\) 到 \(N - 1\)),初始都是关闭的. 给定 \(M\) 个操作,每个操作包含 \(L\) 和 \(R\),对 \([L, R]\) 内的所有灯泡改变状态. 求最后有几个灯泡是亮的. 思路 题目挺简单的,翻转奇数次的灯泡是亮的,所以要求每个灯泡翻转的次数. 容易想到可以用差分. 对所有操作的两

2019 ICPC上海网络赛 G. Substring 哈希+尺取法+unordered_map

题目链接:https://nanti.jisuanke.com/t/41415 赛后补题. 参考博客:https://blog.csdn.net/bjfu170203101/article/details/100889468 题意:给出一个主串(假设长度为m),再给出n个模式串,对于每一个模式串,如果在主串中有一个子串,它的第一个字符和最后一个字符分别与这个模式串的开头字符和结尾字符相同,并且每一种字符出现的次数相同,那么就把这个模式串和这个子串看成是相同的,认为模式串在主串中出现过一次,比如模

【2019.09.15】2019icpc上海网络赛

题目地址:https://www.jisuanke.com/contest/3003?view=challenges A: B: C: D: E: F: G: H: I: J: K: L: 原文地址:https://www.cnblogs.com/ncu2019/p/11565345.html

query 2019徐州网络赛(树状数组)

query \[ Time Limit: 2000 ms \quad Memory Limit: 262144 kB \] 题意 补题才发现比赛的时候读了一个假题意.... 给出长度为 \(n\) 的排列,在给出 \(m\) 次询问,每次询问有一对 \(l.r\),问满足 \(min(ai, aj) = gcd(ai, aj)\) 的 \(pair(i, j)\) 对数. 思路 考虑离线做 先把每个数出现的位置记录下来,然后预处理出所有的 \(pair\). 对于一个数字 \(x\),其满足条件

2019 南昌网络赛icpc I题 cdq分治或分块

题意:给你一个数组,然后每次有两种操作,操作一是修改数组里的数,操作二是查询区间[ l , r ] 里有多少个子区间满足以下条件:1.子区间内的数全部相同.2.子区间内的数在x到y之间.3.子区间得是不能延伸的. 题目链接:https://nanti.jisuanke.com/t/41356 题解:首先转化问题,设 b[ i ] = a[i]==a[i-1] ? 0 : a[i],然后问题就变成了问询区间内有多少个x到y之间的数.(注意左端点特判)这不就是主席树....带修改...好,树状数组加