atcoder上的题目

链接

一道思维题目

可以发现如果X是可有可无的,那么所有小于X的数也一定是可有可无的,

所有我们只要找出最大的那个可有可无的数字就好了

进一步分析,发现

若A1, A2, . . . , Ai 的和为 S,当且紧当 Ai+1, Ai+2, . . . , AN 凑不出任何个 K − S 到 K − 1 之 间的数字, A1, A2, . . . , Ai 都是可有可无的。

我们来不太严谨的证明一下

若A1, A2, . . . , Ai 的和为 S,如果 Ai+1, Ai+2, . . . , AN 凑不出任何个 K − S 到 K − 1 之 间的数字,那么 A1, A2, . . . , Ai 都是可有可无的。

这显然是成立的

当sum=Ai+1, Ai+2, . . . , AN 凑出任何个 K − S 到 K − 1 之 间的数字时,我们一定有sum+s>=K

我们从小到大将sum+s减去Ai,一定会有一个j使得sum+s<k那么Aj就一定不是可有可无的

我们将A从小到大排序

01背包就好了

一个小技巧,0一定是可有可无的,所以循环到0是一定会输出,可以适当代码更加优美

# include<iostream>
# include<cstdio>
# include<cmath>
# include<algorithm>
# include<cstring>
using namespace std;
const int mn = ;
int a[mn];
bool vis[mn];
int n,k,s;
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
a[i]=min(a[i],k);
s+=a[i];
}
sort(a+,a++n);
vis[]=;
for(int i=n;i>=;i--)
{
bool flag=false;
for(int j=k-;j>=k-s && j>=;j--)
if(vis[j]) {
flag=true;
break;
}
if(!flag)
{
printf("%d",i);
return ;
}
for(int j=k;j>=a[i];j--)
vis[j]=(vis[j] | vis[j-a[i]]);
s-=a[i];
}
return ;
}

AT2346 No Need的更多相关文章

  1. AT2346 [ARC070B] No Need

    这里介绍几种做法. 解法一 首先可以转化一下题意,\(\forall i\) 如果 \(i\) 不是可有可无的当且仅当不用 \(i\) 能拼出 \([K - a_i, K)\) 中的数. 基于观察可以 ...

随机推荐

  1. hbase设计方案1

    好的方案应该挺多的,比如:可以将[日.周.月]以3,2,1来表示(拼接到ROW_KEY中){离线跑job时候,可以分为月job(每月末run一下,周job(每周末run一下),日job(每天run一下 ...

  2. jqGrid首次加载时不加载任何数据

    1. 首次加载时候设置 jqGrid 属性 datatype: 'local' $("#grid").jqGrid({ url:"#", datatype:&q ...

  3. 2019-8-31-dotnet-控制台读写-Sqlite-提示-no-such-table-找不到文件

    title author date CreateTime categories dotnet 控制台读写 Sqlite 提示 no such table 找不到文件 lindexi 2019-08-3 ...

  4. 在Ubuntu Server 14.04上源码安装Odoo 9.0

    1. 更新Ubuntu服务器软件源 sudo apt-get update #更新软件源 sudo apt-get dist-upgrade #更新软件包,自动查找依赖关系 sudo shutdown ...

  5. HTML5中的数据集dataset和自定义属性data-*

    在html5中可为所有元素添加一种自定义的属性,这种属性的前缀以data-开头,比如:data-name,目的是为元素提供与页面渲染无关,但与dom元素强相关的属性.添加完自定义属性后我们可以通过元素 ...

  6. [jnhs]未完待续HttpServletRequest示例

    uri: /kaihu/showip.html method: GET QueryString: null Parameters: Headers: Name: host Value: localho ...

  7. Python实例 包机制

    每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子: # a.py def add_func(a,b):     return a+b # b.py from a im ...

  8. python 模拟实验

  9. 启动Hadoop时,DataNode启动后一会儿自动消失的解决方法

    查看slaver1/2的logs,发现 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for ...

  10. vuecli3取消eslint

    1.之前好好的项目,今天运行npm run serve.忽然报错运行不了了. 2.原因 在生成项目时候没有忽略 ESlint选项配置,其实建议创建项目的时候还是忽略掉这个选项比较好,因为后期写项目多空 ...