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

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

好!

T1

暴力模拟,比较水
所以不多讲
100 p t s 100pts 100pts

A C   C o d e AC~Code AC Code

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int a[1000010],b[1000010];int n,x,c,ans;int main(){       freopen("card.in","r",stdin);    freopen("card.out","w",stdout);    cin>>n;    for(int i=1; i<=n; i++)     {        	cin>>x;     	a[x]=x;      //桶     }    for(int i=1; i<=n*2; i++)     {        	if(a[i]==0)     	  b[++c]=i;    //记录奶牛Bessie的纸牌     }    c=1;    sort(a+1,a+1+n*2);    for(int i=1; i<=n; i++)    //暴力比较     {        	while(a[c]==0)     	  c++;     	if(b[i]>a[c])     	  ans++,c++;     }    cout<<ans;    return 0;}

T2

二分
我们记录每种音节的位置,然后二分范围。

100 p t s 100pts 100pts

A C   C o d e AC~Code AC Code

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int n,q,fw,x,l,r,mid;struct node{       int l,r;}a[100010];int main(){   	freopen("mnotes.in","r",stdin);    freopen("mnotes.out","w",stdout);	scanf("%d%d",&n,&q);    for(int i=1; i<=n; i++)     {           scanf("%d",&x);        a[i].l=fw;     //记录位置		fw+=x;		a[i].r=fw-1;     }    for(int i=1; i<=q; i++)     {           scanf("%d",&x);        l=1,r=n;        while(1)         {               mid=(l+r)/2;            if(a[mid].l<=x&&a[mid].r>=x)    //二分范围			 {   			   printf("%d\n",mid);			   break;			 }            else if(a[mid].l>x)			  r=mid;            else 			  l=mid+1;         }     }    return 0;}

T3

一道DP
刚开题的时候发现有点眼熟,
然后发现可以对每种游戏平台里的游戏做01背包
就过了

A C   C o d e AC~Code AC Code

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int f[1000010],ans[1000010];int n,v,pt,yxs,w,c;int main(){   	freopen("vidgame.in","r",stdin);    freopen("vidgame.out","w",stdout);	cin>>n>>v;	for(int i=1; i<=n; i++)	 {   	 	cin>>pt>>yxs;	 	for(int j=pt; j<=v; j++)  //减去当前平台价值	 	   f[j]=ans[j-pt];	 	for(int j=1; j<=yxs; j++)	 	 {   	 	 	cin>>w>>c;	 	 	for(int k=v-w; k>=pt; k--)   //做01背包	 	 	   f[k+w]=max(f[k+w],f[k]+c);	 	 }	 	for(int j=pt; j<=v; j++)	 	   ans[j]=max(ans[j],f[j]);	 }  	cout<<ans[v];    return 0;}

T4

明显就是一个最短路,
但问题就是我不会处理点权,
只能输出样例,得了10分。

正解:巧妙的Floyd
我们先把点权排序,这样就能符合Floyd的性质,我们就可以直接一边跑Floyd一边比较点权求最大了。

A C   C o d e AC~Code AC Code

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int f[1010][1010],w[1010],bq[1010][1010];int n,m,q,ax,ay,x,y,z;struct node{     int c,id;}d[1010];bool cmp(node a,node b){       return a.c==b.c?a.id<b.id:a.c<b.c;}int main(){   	freopen("toll.in","r",stdin);    freopen("toll.out","w",stdout);	cin>>n>>m>>q;    for(int i=1; i<=n; i++)     {   	   scanf("%lld",&d[i].c);	   d[i].id=i;     }    sort(d+1,d+1+n,cmp);    for(int i=1; i<=n; i++)	   w[d[i].id]=i;	for(int i=1; i<=n; i++)	 for(int j=1; j<=n; j++)	  f[i][j]=bq[i][j]=1e9;    for(int i=1; i<=n; i++)	   bq[i][i]=0;	for(int i=1; i<=n; i++)	 for(int j=1; j<=f[i]; j++)	 if(bq[i][j]==w[i])	   f[i][j]=bq[i][j]+w[i];    for(int i=1; i<=m; i++)     {           scanf("%lld%lld%lld",&x,&y,&z);        x=w[x];		y=w[y];        bq[x][y]=min(bq[x][y],z);   //预处理边权		bq[y][x]=bq[x][y];     }    for(int k=1; k<=n; k++)     for(int i=1; i<=n; i++)      for(int j=1; j<=n; j++)       {             bq[i][j]=min(bq[i][j],bq[i][k]+bq[k][j]);  //Floyd          f[i][j]=min(bq[i][j]+max(d[i].c,max(d[j].c,d[k].c)),f[i][j]);  //点权比较       }    for(int i=1; i<=q; i++)     {           scanf("%lld%lld",&ax,&ay);        ax=w[ax];		ay=w[ay];	    cout<<f[ax][ay]<<endl;     }    return 0;}

总分

100 + 100 + 100 + 10 = 310 p t s 100+100+100+10=310pts 100+100+100+10=310pts

再接再厉!

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

你可能感兴趣的文章
在Ubuntu上安装GCC编译器
查看>>
暴打算法:王者级数据结构与LeetCode笔记,一路绿灯杀进字节Java岗
查看>>
限时开源!公布半小时下载量达10W:阿里大牛出品「MyCat笔记」
查看>>
阿里Java全线成长宝典,从P5到P8一应俱全
查看>>
js:虚拟dom与diff算法
查看>>
计算机系统原理——cachelab 实验1(第一周)
查看>>
JAVA初窥-DAY07
查看>>
数组--Go语言学习笔记
查看>>
Redis (三)——Linux 上安装 Redis
查看>>
Redis踩坑(1)-----配置文件redis.conf修改后不生效问题
查看>>
从零带你学习Go语言:23、 Go指针 、切片、 map、 结构体复习
查看>>
广东iOS企业开发者签名有没有好的推荐?
查看>>
iOS企业签名掉签会提前知道的么?
查看>>
苹果企业签名首要考虑的真的是价格因素么?别傻了
查看>>
关于scanf函数在VS中使用的问题
查看>>
操作符初识
查看>>
c编程常见错误-函数声明没有参数类型声明
查看>>
Dialog篇
查看>>
概率论 贝叶斯公式
查看>>
数据挖掘 如何做 Python数据分析与挖掘实战
查看>>