社区讨论

洛谷基础赛求问

学术版参与者 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 条回复,欢迎继续交流。

正在加载回复...