2019年一等奖浙江分数线为265分,二等奖分数线为100分,三等奖分数线为70分。
当年附中情况,wm为245,dyc为155,zxy为110,zzx为105,pz为100。
luogu对应题目 T1 数字游戏、T2 公交换乘 、T3 纪念品 、T4 加工领奖 ,可以到luogu上查看更多题解。
T1 数字游戏 字符串
简单字符串,然后依次检查累加即可。
T2 公交换乘 模拟、队列
不少同学没看到免费搭乘一次票价不超过地铁票价的公交车,导致0分。
45分的代码
#include<bits/stdc++.h>
using namespace std;
struct T{int lei,money,time;}a[100005];
struct T1{int money,ff=0,time;}b[100005];
int main()
{
freopen("transfer.in","r",stdin);
freopen("transfer.out","w",stdout);
int n,tot=0,left=0,sum=0;
cin>>n;
for(int i=0;i<n;i++)cin>>a[i].lei>>a[i].money>>a[i].time;
for(int i=0;i<n;i++)
{
if(a[i].lei==0)
{
sum+=a[i].money;
b[tot].money=a[i].money;
b[tot++].time=a[i].time+45;
}
else
{
int f=0;
for(int j=0;j<tot;j++)
{
if(b[j].time>=a[i].time&&b[j].money>=a[i].money&&b[j].ff==0)
{
f=1;
b[j].ff=1;
break;
}
}
if(f==0)sum+=a[i].money;
}
}
cout<<sum<<"
";
return 0;
}
用一个数组来装所有的收集到的赠票。每当坐地铁的时候,就直接花钱,然后获得一张赠票,放到数组里面。每当坐公交的时候,看看数组里面有没有时间合适,价格小于现在公交票价的赠票,并且没用过的赠票,直接用时间最早的那一张就可以了。而且45分钟后就过期了,可以用一个队列记录下这张票,这个题卡常,可以直接用数组模拟队列
T3 纪念品 背包
这个题有点难,将 每件纪念品的价格增量 作为其价值,每件纪念品在第一天购入的价格 作为其质量, M 作为背包容量,这个问题就转化为了一个完全背包问题。恭喜陈瀚东做对了
T4 加工领奖 广搜、最短路
相对来说,T4是比T3简单的。求出1到各个点的奇偶最少步数 即可。不过要使用vector代替邻接数组存储。本题杨添盛获得了满分。
若存在3->4->5->6->7->1,长度为5,那么比如重复经过点5就是7了,3->4->5->6->5->6->7->1。一条边想走几次就走几次,那么存在+2,+4,...,+2n,同奇偶。长度为6的存在吗?不确定,所以奇偶必须分开求解,最终判定条件为奇偶相同且大于等于最少步数