Professional Documents
Culture Documents
1
BÀI 2: TỈA LÊ
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+2;
int a[maxn],Tmin[maxn];
long long s[maxn];
deque <int> q;
int n,k;
long long kq;
void docdl()
{
scanf("%d%d",&n,&k);
for (int i=1; i<=n; i++)
scanf("%d",&a[i]);
s[0]=0;
for (int i=1; i<=n; i++)
s[i]=s[i-1]+ a[i];
for (int i=1; i<=n; i++)
{
while ((!q.empty()) && (a[q.back()]>=a[i])) q.pop_back();
q.push_back(i);
while (q.front()<i-k+1) q.pop_front();
Tmin[i]=q.front();
}
}
void xuli()
{
kq=1e18;
for (int i=k; i<=n; i++)
kq=min(kq, s[i]-s[i-k]-k*a[Tmin[i]]);
}
void ghikq()
{
cout << kq;
}
int main()
{
// freopen("Tiale.inp","r",stdin);
// freopen("Tiale.out","w",stdout);
docdl();
xuli();
ghikq();
}
2
BÀI 3: PHÁO HOA
Chương trình tham khảo:
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
vector < vector <int > > e(maxn);
int n,m,k,t,kq;
int D[maxn];
deque <int> q;
void docdl()
{
scanf("%d%d%d%d",&n,&m,&k,&t);
for (int i=1; i<=n; i++) D[i]=n+1;
for (int i=1; i<=k; i++)
{
int u;
scanf("%d",&u);
D[u]=0;
q.push_back(u);
}
for (int i=1; i<=m; i++)
{
int u, v;
scanf("%d%d",&u,&v);
e[u].push_back(v);
e[v].push_back(u);
}
}
void bfs()
{
while (!q.empty())
{
int u=q.front();
for (int j=0; j<e[u].size(); j++)
{
int v=e[u][j];
if (D[v]==n+1)
{
D[v]=D[u]+1;
q.push_back(v);
}
}
q.pop_front();
}
}
void ghikq()
3
{
kq=n;
for (int i=1; i<=n; i++)
if (D[i]<=t) kq--;
cout << kq;
}
int main()
{
// freopen("phaohoa.inp","r",stdin);
// freopen("phaohoa.out","w",stdout);
docdl();
bfs();
ghikq();
}