1. 程式人生 > >NOIP2018題解

NOIP2018題解

啊趕上18年的題解了

附上2018年題目的PDF:Day1 Day2

D1T1:road

居然出原題! 我 抄 我 自 己

直接上程式碼,沒什麼好說的

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int n,x,y,ans;
 5 int main(){
 6     scanf("%d",&n);
 7     for (int i=1;i<=n;i++){
 8         scanf("%d",&x);
9 ans+=y>x?0:x-y,y=x; 10 } 11 printf("%d",ans); 12 return 0; 13 }
NOIP2018D1T1

D1T2:money

很多人沒有想到揹包的演算法

同樣是水題,直接上程式碼

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
6 int a[25001],n,t; 7 bool v[25001]; 8 int main(){ 9 scanf("%d",&t); 10 while (t--){ 11 memset(v,0,sizeof(v));v[0]=true; 12 scanf("%d",&n); 13 for (int i=1;i<=n;i++) scanf("%d",&a[i]); 14 sort(a+1,a+n+1); 15 int maxn=a[n],num=0; 16
for (int i=1;i<=n;i++) 17 if (v[a[i]]) num++; 18 else 19 for (int j=a[i];j<=maxn;j++) 20 if (v[j-a[i]]) v[j]=true; 21 printf("%d\n",n-num); 22 } 23 return 0; 24 }
NOIP2018D1T2

D1T3:track

時間問題,先寫到這裡吧