关于洛谷评测机的提问
  • 板块学术版
  • 楼主c1806liukenan
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/11/28 23:30
  • 上次更新2023/11/3 23:18:40
查看原帖
关于洛谷评测机的提问
314785
c1806liukenan楼主2021/11/28 23:30

题目传送门 虽然不知道此类问题是否该在这里问 但还是来了

个人认为自己的代码是对的,而且在自己学校的网站上也是对的详见这里

然而

这样了 最有趣的是read的内容全是零

这就让我不禁对评测机产生了疑惑

求解qwq qwq qwq 以下呈上代码

#include<bits/stdc++.h>
using namespace std;
int lls;char ls;//快读 
int l;//如题 
int s,t,m;//如题 
int stone[105],end,dis[105],way[10000],f[10000];
//石头:输入用,最终结果,距离,01的存储方法,dp 
inline int read()//不必多说 
{
	lls=0;
	ls=getchar();
	while(ls>='0'&&ls<='9')
	{
	    lls=(lls<<1)+(lls<<3)+ls-48;
	    ls=getchar();
	}
	return lls;
}
int main()
{
	l=read();s=read();t=read();m=read();//只是不想浪费快读函数 
	for(int i=1;i<=m;i++) stone[i]=read();
	sort(stone+1,stone+m+1);
	m++;stone[m]=l;stone[0]=0;//假设首尾均有石头 
	if(s==t)//特殊情况判断 
	{
		for(int i=1;i<=m;i++)
		{
			if(stone[i]%s==0) end++;
		}
		printf("%d",end);
		return 0;
	}
	l=0;int ls;
	for(int i=1;i<=m;i++)//离散化处理 
	{
		ls=stone[i]-stone[i-1];
		if(ls>t)
		{
		  l+=ls%t+t;
		}
		else l+=ls;
		way[l]=1;
	}
	way[0]=0,way[l]=0;//这样就把首位的空给缩了 
	for(int i=1;i<=l;i++)//dp过程 
	{
		end=200;
		for(int j=s;j<=t;j++)
		{
			if(i-j>=0)
			end=min(f[i-j],end);
		}
		if(way[i]==1) end++;
		f[i]=end;
	}
	end=200;
	for(int i=l;i>=l-t+1;i--)
	  end=min(f[i],end);//输出寻找 
	printf("%d",end);
	return 0;
}
2021/11/28 23:30
加载中...