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<<"\n";
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的存在嗎?不確定,所以奇偶必須分開求解,最終判定條件為奇偶相同且大於等於最少步數
