noip 2018 day1 T2 货币系统 完全背包】的更多相关文章

Code: #include<cstdio> #include<string> #include<cstring> #include<algorithm> using namespace std; int arr[1000],f[100000],A[100000],bomb[100000]; void setIO(string a){ freopen((a+".in").c_str(),"r",stdin); freo…
题面:P5020 货币系统 题解: 显然要求的货币系统是当前货币系统的子集时答案会更优,于是考虑从当前货币系统中删数 一个大数如果能被其他小数表示出来,它就可以去掉 把数据排个序去个重,然后直接背包 代码: #include<cstdio> #include<cstring> #include<iostream> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; inline int rd(){ ,f=…
我那个新的货币系统,就是把原来的货币系统中能被其他数表示的数删掉 那我就算有多少数能被别的数表示,那肯定是要被比它小的表示 于是排个序做完全背包就好了 但是我太zz不会完全背包,然后写了个bitset乱搞还开了250000,T到亲妈都不认识 其实完全背包就是把背包的从后往前更新变成了从前往后更新 #include<cstdio> #include<cstring> #include<algorithm> #include<bitset> using name…
[题目链接] 铺设道路 : https://www.luogu.org/problemnew/show/P5019 货币系统 : https://www.luogu.org/problemnew/show/P5020 赛道修建 :https://www.luogu.org/problemnew/show/P5021 [题解]        Problem A 铺设道路        首先 , 我们有一个分治的思路 , 对于一段区间[l , r] , 最优策略为将区间内的所有数都减掉区间中的最小值…
来源:NOIP2014 Day1 T2 OJ链接: http://codevs.cn/problem/3728/ https://www.luogu.org/problemnew/show/P1351 #include<iostream> #include<cstdio> #define N 200010 #define P 10007 using namespace std; ]; long long ans,w[N],maxx; ]; void add(int x,int y)…
今年noip的题和去年绝对是比较坑的题了,但是打好的话就算是普通水准也能350分以上吧. t1: 很显然这是一个简单的dp即可. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<algorithm> #include<ctime> #include<iomanip> #…
Fei2Xue@Lian$Tian! 三道原题qwq真的凉 半年前看到有人发说说,梦见省选打开题目,是Please contact lydsy2012@163.com! 没想到一语成谶 大众分300 暴力无脑280 然鹅只打了255还不知道会不会挂 AFO 大概明天会是我最后一场OI比赛了 路漫漫其修远兮,吾将上下而求索. 本以为OI还能再伴我一段时间,未曾想过梦的终章会在NOIP 唉 (图源知乎)…
题目大意:给定 N 个数,求在这 N 个数中至少选出几个数能表示出所有数字,输出最少的个数. 题解:由于只有小的数字可以表示大的数字,因此首先需要对这 N 个数字进行从小到大排序.排序之后就变成一道不定个数的数字组合问题,即:完全背包思想.遍历每一个数字,若该数字不能由之前的数字表示出来,则将答案加一,并将这个数字能够表示的数字进行记录即可. 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=110; const…
Code: // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; #define maxn 50008 #define MAXR 500000001 #define ll int multiset <ll> S[maxn]; multiset <ll> :: iterator it; int head[maxn], to[maxn << 1], nex[maxn <…
Code: #include<cstdio> using namespace std; int main() { int last=0,ans=0; int n;scanf("%d",&n); for(int i=1;i<=n;++i) { int t;scanf("%d",&t); if(t>last)ans+=t-last; last=t; } printf("%d\n",ans); }…