剛參加完NOIP2017普及,只考了210,於是心生不爽,寫下了這篇解題報告。。。(逃
第一次寫博,望dalao們多多指導啊(膜
第一題score,學完helloworld的人也應該都會吧,之前好多人0分或60分據說是精度炸了,後面不是又重測了麼233
直接給程式碼
#include <stdio.h> int a,b,c; double a1,b1,c1; int main() { scanf("%d %d %d",&a,&b,&c); a1=a*0.2; b1=b*0.3; c1=c*0.5; printf("%.lf",a1+b1+c1); ; }
許多人不會像我這麼寫而是除以10再去乘,畢竟都是是的整數倍
第二題librarian,這道題簡單分析就考了個排序+取餘,沒什麼技術含量,可是由於這個萬惡的單詞,有個原本265的大佬沒拼對然後就gg到165,身邊還有一個dalao第三題寫了好多卻只有十五分,然後第二題多打了個0然後記憶體就炸了。。。還有某位-1沒有打\n。。。(同情
也是直接給程式碼吧
#include<stdio.h> #include<algorithm> #include<iostream> using namespace std; ]; int main() { ,ss=; scanf("%d%d",&n,&q); ;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); ;i<q;i++) { scanf("%d %d",&b,&c); s=;ss=; ;j<=b;j++) s=s*; ;j<n;j++) { if(a[j]%s==c) { printf("%d\n",a[j]); ss=; break; } } )printf("-1\n"); } ; }
第三題...先給題目吧
這道題當我看題目時感覺挺簡單的,只是覺得是一個普通的dfs+剪枝,可是當真正寫的時候就不知道從何寫,如何剪枝,然後除錯了1小時。。。未果,註釋矣。。。
之後,我寫了一個單純的dfs,純搜,然後水了65分,程式碼如下
#include <stdio.h> ][],x,y,color; ; void dfs(int x1,int y1,int magic,int money,int w_i_c)//w_i_c=What is the color? { if(x1==m&&y1==m) { if(money<ans) ans=money; return ; } else { if(!magic)//當未施展魔法時 { <=m)//判邊界條件 { ][y1]>)//當有顏色時 { ][y1]) dfs(x1+,y1,,money,-); ][y1]) dfs(x1+,y1,,money+,-); }//只需考慮顏色的變換 ][y1]==) dfs(x1+,y1,,money+,a[x1][y1]); } <=m) { ]>) { ]) dfs(x1,y1+,,money,-); ]) dfs(x1,y1+,,money+,-); } ]==) dfs(x1,y1+,,money+,a[x1][y1]);//顏色就為上一個的顏色 }//同上 } else//當施展過魔法 { ][y1]!=) { ][y1]==w_i_c) dfs(x1+,y1,,money,-); ][y1]!=w_i_c) dfs(x1+,y1,,money+,-); } ]!=) { ]==w_i_c) dfs(x1,y1+,,money,-); ]!=w_i_c) dfs(x1,y1+,,money+,-); } } } } int main() { scanf("%d %d",&m,&n); ;i<=n;i++) { scanf("%d %d %d",&x,&y,&color); a[x][y]=color+;//其餘為0表示無色,+1保證非負性 } dfs(,,,,-);//分別代表橫座標,縱座標,是否施展♂過魔♂法,錢,顏色;-1是一個特殊值 ) printf("-1");//如果達到這個值就代表ans沒有改變,說明到不了終點 else printf("%d",ans); ; }
第四題說實話沒怎麼看懂...
粘上一個小學生20分的程式碼吧。。。
#include<stdio.h> ]={},dis[]={}; int main() { ,flag,start; scanf("%d%d%d",&n,&d,&k); ;i<=n;i++) { scanf("%d%d",&dis[i],&sco[i]); } ; ;i<=n;i++) { ) { sum+=sco[i]; } } if(sum<k) { printf("-1"); ; } flag=; ) { sum=;start=; ans++; if(ans<d) { ;i<=n;i++) { &&dis[i]-start>=d-ans&&dis[i]-start<=d+ans) { sum+=sco[i]; start=dis[i]; if(sum>=k) { printf("%d",ans); ; } } } } else { ;i<=n;i++) { &&dis[i]-start>=&&dis[i]-start<=d+ans) { sum+=sco[i]; start=dis[i]; if(sum>=k) { printf("%d",ans); ; } } } } } }
今天就到這裡,以後我會多多寫博,把自己的意見與大家分享,有不解或志同道合者可以加qq:2396389683,再見