-1.如此编码
分析
-
daisuki代数题了,直接无脑套公式
-
子任务有提示,记得参考
测试数据:
15 32767
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
预期结果:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
AC:
#include<iostream>
using namespace std;
const int maxn=25;
int n,m,tmp;
int a[maxn],b[maxn];
int c=1,tc=1;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
tc=c*a[i];
b[i]=(m%tc)/c;
cout<<b[i]<<' ';
c=tc;
}
return 0;
}
-2.何以包邮
分析
-
甚至还给我提示,他真的,我哭死
-
天哪这道题真的太典了
-
跟好几个不爱做题的哥们分享这道题,做过的都说好
-
谁不做谁血亏
-
离散化的思想直接震掉我下巴
测试数据:
4 100
20
90
60
60
期待结果:
110
UNAC:10昏
-
没考虑单本书直接包邮
-
缺少枚举
#include<bits/stdc++.h>
using namespace std;
int n,x,m=0,flag=0;
int minm;
const int N=35;
int a[N];
int main(){
cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>a[i];
minm=x;
if(a[i]<x) m+=a[i];
else{
minm=min(minm,a[i]);
flag=1;
break;
}
if(m>=x) break;
}
if(flag)
cout<<minm;
else cout<<m;
return 0;
}
AC:离散化
-
TQL
-
想到这种办法的人可真聪明
- 写第一遍M少开了个0,只有15分。。。?
#include<bits/stdc++.h>
using namespace std;
int n,x,minn;
const int M=300005;
int a[35];
int conv[M];
int f[M];
int main(){
cin>>n>>x;
for(int i=1;i<=n;i++)
cin>>a[i];
//开始枚举:神来之笔
f[0]=1;
for(int i=1;i<=n;i++)
for(int j=M;j>=a[i];j--)
if(f[j-a[i]])
f[j]=1;
for(int i=x;i<=M;i++)
if(f[i]){
minn=i;
cout<<minn;
break;
}
return 0;
}