diff --git a/QUSTOJ/1003.cpp b/QUSTOJ/1003.cpp new file mode 100644 index 0000000..b6d55fc --- /dev/null +++ b/QUSTOJ/1003.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +using namespace std; + +int s, t, m, tot = 0, ans = 0; +long long l; +int vis[11000] = {0}; +int sto[110] = {0}; +int f[11000] = {0}; + +int main () +{ + //freopen ("in.txt", "r", stdin); + cin >> l >> s >> t >> m; + for (int i = 0; i < m; i++) cin >> sto[i]; + sort (sto, sto + m); + if (s == t) { + for (int i = 0; i < m; i++) { + if (!(sto[i]%s)) ans++; + } + cout << ans; + return 0; + } + int e; + if (sto[0] > 100) vis[tot = 100] = 1; + else vis[tot = sto[0]] = 1; + for (int i = 1; i < m; i++) { + if ((e = sto[i] - sto[i-1]) > 100) { vis[tot += 100] = 1;} + else { vis[tot += e] = 1;} + } + + for (int i = tot; i >= 0; i--) { + f[i] = 200; + for (int j = s; j <= t; j++) { + f[i] = min (f[i], f[i+j] + vis[i]); + } + } + cout << f[0]; + return 0; + } diff --git a/QUSTOJ/1443.cpp b/QUSTOJ/1443.cpp new file mode 100644 index 0000000..c7c14bb --- /dev/null +++ b/QUSTOJ/1443.cpp @@ -0,0 +1,44 @@ +#include +using namespace std; +int m,n; +int solve() +{ + int a,b,mx=0; + int i,j; + int v[61]={0},p[61]={0},q; + int v1[61]={0},v2[61]={0},p1[61]={0},p2[61]={0}; + int f[50001]={0}; + m/=10; + for(i=1;i<=n;i++) + { + cin>>a>>b>>q; + a/=10; + if(q!=0) + { + if(v1[q]==0){v1[q]=a;p1[q]=b;} + else {v2[q]=a;p2[q]=b;} + } + else {v[i]=a;p[i]=b;} + } + for(int i=1;i<=n;i++) + for(int j=m;j>=v[i];j--) + { + f[j]=max(f[j],f[j-v[i]]+v[i]*p[i]); + if(j-v1[i]-v[i]>=0)f[j]=max(f[j],f[j-v1[i]-v[i]]+v1[i]*p1[i]+v[i]*p[i]); + if(j-v2[i]-v[i]>=0)f[j]=max(f[j],f[j-v2[i]-v[i]]+v2[i]*p2[i]+v[i]*p[i]); + if(j-v1[i]-v2[i]-v[i]>=0)f[j]=max(f[j],f[j-v1[i]-v2[i]-v[i]]+v1[i]*p1[i]+v2[i]*p2[i]+v[i]*p[i]); + mx=max(f[j],mx); + } + cout<>m>>n) + { + solve(); + } + return 0; +} diff --git a/RQNOJ/17.cpp b/RQNOJ/17.cpp new file mode 100644 index 0000000..b6d55fc --- /dev/null +++ b/RQNOJ/17.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +using namespace std; + +int s, t, m, tot = 0, ans = 0; +long long l; +int vis[11000] = {0}; +int sto[110] = {0}; +int f[11000] = {0}; + +int main () +{ + //freopen ("in.txt", "r", stdin); + cin >> l >> s >> t >> m; + for (int i = 0; i < m; i++) cin >> sto[i]; + sort (sto, sto + m); + if (s == t) { + for (int i = 0; i < m; i++) { + if (!(sto[i]%s)) ans++; + } + cout << ans; + return 0; + } + int e; + if (sto[0] > 100) vis[tot = 100] = 1; + else vis[tot = sto[0]] = 1; + for (int i = 1; i < m; i++) { + if ((e = sto[i] - sto[i-1]) > 100) { vis[tot += 100] = 1;} + else { vis[tot += e] = 1;} + } + + for (int i = tot; i >= 0; i--) { + f[i] = 200; + for (int j = s; j <= t; j++) { + f[i] = min (f[i], f[i+j] + vis[i]); + } + } + cout << f[0]; + return 0; + } diff --git a/VIJOS/1002_HBat.cpp b/VIJOS/1002_HBat.cpp new file mode 100644 index 0000000..5737ead --- /dev/null +++ b/VIJOS/1002_HBat.cpp @@ -0,0 +1,78 @@ +#include +#include +#include + +using namespace std; + +int stone[1000001],map[1000001],f[1000001]; + +//int ans; +int w=2000; +int l,s,t,m; +int p=0,k;/* +inline void findd(int a) +{ + if(ans>w)return; + if(a>=p) + { + if(ans=0&&f[j]=0&&j<=i-s;++j) //把j>=0放在循环头,有时候可能导致循环不进行(开始的时候) + { + if(f[j] +#include +#include +using namespace std; + +int s, t, m, tot = 0, ans = 0; +long long l; +int vis[11000] = {0}; +int sto[110] = {0}; +int f[11000] = {0}; + +int main () +{ + //freopen ("in.txt", "r", stdin); + cin >> l >> s >> t >> m; + for (int i = 0; i < m; i++) cin >> sto[i]; + sort (sto, sto + m); + if (s == t) { + for (int i = 0; i < m; i++) { + if (!(sto[i]%s)) ans++; + } + cout << ans; + return 0; + } + int e; + if (sto[0] > 100) vis[tot = 100] = 1; + else vis[tot = sto[0]] = 1; + for (int i = 1; i < m; i++) { + if ((e = sto[i] - sto[i-1]) > 100) { vis[tot += 100] = 1;} + else { vis[tot += e] = 1;} + } + + for (int i = tot; i >= 0; i--) { + f[i] = 200; + for (int j = s; j <= t; j++) { + f[i] = min (f[i], f[i+j] + vis[i]); + } + } + cout << f[0]; + return 0; + }