博客
关于我
纪中2020.3.4普及C组模拟赛总结
阅读量:336 次
发布时间:2019-03-04

本文共 3225 字,大约阅读时间需要 10 分钟。

这次还好

T1

看了一眼数据, O ( n ) O(n) O(n)的时间复杂度显然可过
所以——
大胆暴力
拿到了 100 p t s 100pts 100pts

A C   C o d e AC~Code AC Code

#include<algorithm>#include<iostream>#include<cstdio>#include<cmath>using namespace std;long long n,ans=922337203685477,js;long long x[100010],y[100010];int main(){   	freopen("marathon.in","r",stdin);	freopen("marathon.out","w",stdout);	scanf("%lld",&n);	for(int i=1; i<=n; i++)	 {   	 	scanf("%lld %lld",&x[i],&y[i]);	 	if(i>=2)	 	  js=js+abs(x[i]-x[i-1])+abs(y[i]-y[i-1]);   //统计	 }	for(int i=2; i<=n-1; i++)	 {   	 	if(js-abs(x[i]-x[i-1])-abs(y[i]-y[i-1])-abs(x[i]-x[i+1])-	 	abs(y[i]-y[i+1])+abs(x[i-1]-x[i+1])+abs(y[i-1]-y[i+1])<ans) //类似搭桥        ans=js-abs(x[i]-x[i-1])-abs(y[i]-y[i-1])-abs(x[i]-x[i+1])-        abs(y[i]-y[i+1])+abs(x[i-1]-x[i+1])+abs(y[i-1]-y[i+1]);	 }	printf("%lld",ans);	return 0;}

T2

发现了正数与负数的巧妙联系,
再看一眼数据, O ( n ) O(n) O(n)的时间复杂度显然可过
所以——
大胆暴力
拿到 100 p t s 100pts 100pts

A C   C o d e AC~Code AC Code

#include<algorithm>#include<iostream>#include<cstdio>#include<cmath>using namespace std;long long n,ans=999999999;struct node{   	long long a,b;}boss[1000010];int cmp(const node&aa,const node&bb){   	return aa.a<bb.a;}int main(){   	freopen("sum.in","r",stdin);	freopen("sum.out","w",stdout);	scanf("%lld",&n);	for(int i=1; i<=n; i++)	 {   	 	scanf("%lld",&boss[i].a);	 	boss[i].b=boss[i].a;	 	if(boss[i].a<0)      //全部变正数	 	  boss[i].a*=-1;	 }	sort(boss+1,boss+1+n,cmp);    //结构体排序	for(int i=2; i<=n; i++)	 if(abs(boss[i].b+boss[i-1].b)<ans)	   ans=abs(boss[i].b+boss[i-1].b);	printf("%lld",ans);	return 0;}

T3

比赛时输出样例
拿了10分。。。
正解:前缀和+贪心

A C   C o d e AC~Code AC Code

#include<algorithm>#include<iostream>#include<cstdio>#include<cmath>using namespace std;int ans,c[1000010],n,js;char x;struct node{   	int a,b;}e[1000005];bool cmp(const node&l,const node&r){   	return l.a<r.a;}int main(){       freopen("fairphoto.in","r",stdin);    freopen("fairphoto.out","w",stdout);    scanf("%d",&n);    for(int i=1; i<=n; i++)     {           cin>>e[i].a>>x;        if(x=='G')          e[i].b=1;          //G放1,H放-1.        else          e[i].b=-1;     }    sort(e+1,e+n+1,cmp);        //快排,保证最优性。    for(int i=1; i<=n; i++)     {           js+=e[i].b;        if(js==0)          ans=max(ans,e[i].a-e[1].a);      //贪心        if(c[js+n]==0)          c[js+n]=i;        else		  ans=max(ans,e[i].a-e[c[js+n]+1].a);     //前一段-后一段     }	printf("%d",ans);    return 0;}

T4

这题我本来可以拿93.3分的!!!
结果神经质多打了个 f o r for for
导致只有 40 p t s 40pts 40pts
正解也是模拟

A C   C o d e AC~Code AC Code

#include<algorithm>#include<cstring>#include<iostream>#include<cstdio>#include<cmath>using namespace std;int ls,lzs,i,js;string s,zs;int main(){   	freopen("censor.in","r",stdin);	freopen("censor.out","w",stdout);	cin>>s>>zs;	ls=s.size();	lzs=zs.size(); 	while(i<=ls-1) 	 {    		if(s[i]==zs[lzs-1]&&i>=lzs-1) 	 	 {   	 			js=i-lzs+1; 			for(int j=0;j<=lzs-1;j++)   //用for节省一些时间 			 if(zs[j]==s[js])			   js++; 			 else			  {   				 js=-1;				 break;			  } 			if(js!=-1)			 {   			 	s.erase(i-lzs+1,lzs);				i-=lzs;			 }  		 }		i++;	 }	cout<<s;	return 0;}

T5

骗分失败, 0 p t s 0pts 0pts
正解:DP

还没做
A C   C o d e AC~Code AC Code

总分:

100 + 100 + 10 + 40 = 250 p t s 100+100+10+40=250pts 100+100+10+40=250pts

总结:

  1. 做完题后如果还有时间要回来看看做过的题目能不能优化。

转载地址:http://jjle.baihongyu.com/

你可能感兴趣的文章
GIT简介
查看>>
eclipse github团队成员修改工程后push推送
查看>>
Mybatis-Plus之@TableField字段
查看>>
shell中的数学运算
查看>>
shell 数学运算
查看>>
如何使用4G模块通过MQTT协议传输温湿度数据到onenet
查看>>
图解:网络硬件的发展史
查看>>
vue项目配置文件vue.config.js中devServer.proxy 使用说明
查看>>
map的find函数和count函数
查看>>
C++并发与多线程(一)
查看>>
C++ 并发与多线程(五)
查看>>
STM32--USART串口收发数据
查看>>
逆合成孔径雷成像(一)— 傅里叶变换基础1
查看>>
elf格式静态链接和动态链接
查看>>
openthread编译错误:error: could not find ctags
查看>>
7628 EDCCA认证寄存器修改(认证自适应)
查看>>
C#四行代码写简易计算器,超详细带注释(建议新手看)
查看>>
计算机网络子网划分错题集
查看>>
java一些基本程序
查看>>
数据结构之排序
查看>>