2021牛客国庆集训派对day2
run
#include <iostream>
using namespace std;
#define N 100005
#define MOD 1000000007
long long dp[N],ans[N];
int main()
{
int q,k;
cin >> q >> k;
for(int i=0;i<k;i++)
dp[i]=1;
dp[k]=2;
for(int i=k+1;i<=100000;i++)
dp[i]=(dp[i-1]+dp[i-k-1])%MOD;
for(int i=1;i<=100000;i++)
ans[i]=(ans[i-1]+dp[i])%MOD;
while(q--)
{
int l,r;
cin >> l >> r;;
cout << (ans[r]-ans[l-1]+MOD)%MOD << endl;
}
return 0;
}
money
#include <iostream>
using namespace std;
#define N 100005
long long number[N];
int main()
{
int _;
cin >> _;
while(_--)
{
int n;
cin >> n;
for(int i=1;i<=n;i++)
cin >> number[i];
long long Max=0,Min=0;
int st=1,ed=1;
for(int i=2;i<=n;i++)
{
if(number[i]>number[ed])
ed=i;
else if(number[i]<number[ed])
{
if(st!=ed)
{
Max+=number[ed]-number[st];
Min+=2;
}
st=i,ed=i;
}
}
if(st!=ed)
{
Max+=number[ed]-number[st];
Min+=2;
}
cout << Max << " " << Min << endl;
}
return 0;
}
car
#include <iostream>
using namespace std;
#define N 100005
int row[N],column[N];
int main()
{
int n,m;
cin >> n >> m;
int ans=n%2?2*n-1:2*n;
while(m--)
{
int x,y;
cin >> x >> y;
row[x]=1;
column[y]=1;
}
for(int i=1;i<=n;i++)
{
if(row[i])
ans--;
if(column[i])
ans--;
}
if(n%2&&row[(n+1)/2]&&column[(n+1)/2])
ans++;
cout << ans << endl;
return 0;
}