社区讨论
洛谷基础赛求问
学术版参与者 5已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @mlpdaqiu
- 此快照首次捕获于
- 2026/02/17 00:07 3 天前
- 此快照最后确认于
- 2026/02/17 17:32 前天
t2 30pts代码
CPP#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[3010];
ll cnt,pot;
int main()
{
ll d,n,m;ll t;
cin>>d>>n>>m>>t;
for(ll i=1;i<=n;i++)
cin>>a[i];
for(ll i=1;i<=t;i++)
{
if((i-1)%m==0)
cnt--;
ll gogo=cnt+i;
if((gogo)%n==0) pot=(pot+a[n])%d;
else pot=(pot+a[gogo%n])%d;
}
if(pot==0) pot=d;
cout<<pot;
}
0pts(加了优化的)
CPP#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[3010];
ll cnt,pot[10000010];
ll gcd(ll a, ll b) {
while (b != 0) {
ll r = a % b;
a = b;
b = r;
}
return a;
}
ll lcm(ll a, ll b){
return a * b / gcd(a, b);
}
inline ll mod(ll x, ll y) {
return (x % y + y) % y;
}
int main()
{
ll d,n,m;ll t;
cin>>d>>n>>m>>t;
for(ll i=1;i<=n;i++)
cin>>a[i];
ll zhou=lcm(n,m);
for(ll i=1;i<=min(zhou,t);i++)
{
if((i-1)%m==0)
cnt--;
ll gogo=cnt+i;
if((gogo)%n==0) pot[i]=(pot[i-1]+a[n]);
else pot[i]=(pot[i-1]+a[gogo%n])%d;
}
if(min(zhou,t)==t) cout<<mod(pot[t],d);
else cout<<mod ( (t/zhou)*pot[zhou] + pot[t%zhou],d);
}
样例都过了,但不知道为何0pts
t3 75tps
CPP#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
const double eps=1e-10;
const double INF=1e18;
while(T--)
{
int n;
long long d;
cin>>n>>d;
vector<long long> x(n),y(n);
for(int i=0;i<n;++i)
cin>>x[i];
for(int i=0;i<n;++i)
cin>>y[i];
vector<int> dp(n,n+1);
dp[0]=1;
for(int i=1;i<n;++i)
{
double maxx=-INF;
double minn=INF;
for(int j=i-1;j>=0;--j)
{
long long u_j=x[i]-x[j];
long long v_j=y[j]-y[i];
double m_j=(double)v_j/u_j;
double d_over_u=(double)d/u_j;
double L_j=m_j-d_over_u;
double R_j=m_j+d_over_u;
maxx=max(maxx,L_j);
minn=min(minn,R_j);
if(m_j+eps>=maxx&&m_j-eps<=minn)
dp[i]=min(dp[i],dp[j]+1);
}
}
cout<<n-dp[n-1]<<endl;
}
return 0;
}
求救!
回复
共 8 条回复,欢迎继续交流。
正在加载回复...