NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » austin0625 的個人資料 » 顯示文章
 主題

顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。

主題 - austin0625

頁: [1]
1
綜合討論區 / 請問npsc的「汽球」意義
« 於: 十二月 04, 2012, 09:33:24 pm »
如題,在這裡的討論文章(and決賽規則)會在文句中突然出現「氣球」的字眼,有什麼特別意義嗎?
(今年第一次參加npsc,請解惑了)

2
NPSC2012國中組初賽 / F:小可魚兒游
« 於: 十一月 29, 2012, 08:00:25 pm »
這題在從左半邊游到右半邊或右半邊游到左半邊時再分開判斷就行了 :D
代碼: [選擇]
#include<iostream>

using namespace std;
int a(int x){
    return (x<0?-x:x);
}
int main(){
    int t=0;
    int n=0;
    int r=0,l=0;
    int fish=0;
    while(cin>>t){
                 for(int cnt=0;cnt<t;cnt++){
                         cin>>n;
                         int m[n];
                         for(int i=0;i<n;i++){
                                 cin>>m[i];
                                 }
                         for(int i=0;i<n;i++){
                                 if(m[i]>=0&&fish<=0){
                                            l+=(fish+m[i]>0?(-fish):m[i]);
                                            r+=(fish+m[i]>=0?m[i]+fish:0);
                                            fish+=m[i];
                                 }else if(m[i]>=0&&fish>=0){
                                       r+=m[i];
                                       fish+=m[i];
                                 }else if(m[i]<=0&&fish>=0){
                                       r+=(fish+m[i]<0?fish:(-m[i]));
                                       l+=(fish+m[i]<=0?-m[i]-fish:0);
                                       fish+=m[i];
                                 }else if(m[i]<=0&&fish<0){
                                       l+=(-m[i]);
                                       fish+=m[i];
                                 }
                                 }
                         cout<<(r>l?"Go right":(r==l?"Both okay":"Go left"))<<endl;
                         n=0;
                         r=l=0;
                         fish=0;
                         }
                 }
}

3
NPSC2012國中組初賽 / A、長得跟大樹一樣
« 於: 十一月 26, 2012, 05:14:13 pm »
這題只要把卡片上的數字排序,再把離n最近的值找出來就行 :D
代碼: [選擇]
#include<iostream>

using namespace std;

int main(){
    int t=0;
    int m=0,n=0,tmp=0;
    while(cin>>t){
                  for(int cnt=0;cnt<t;cnt++){
                          cin>>m>>n;
                          int tree[m+1];
                          for(int i=0;i<m;i++)tree[i]=0;
                          tree[m]=0;
                          for(int i=0;i<m;i++){
                                  cin>>tree[i];
                          }

                          for(int i=m;i>=0;i--){
                                  for(int j=0;j<i;j++){
                                          if(tree[j]>tree[j+1]){
                                                                tmp=tree[j];
                                                                tree[j]=tree[j+1];
                                                                tree[j+1]=tmp;
                                          }
                                  }
                          }
                          for(int i=0;i<m;i++){
                                  if(tree[i]>=n){
                                                 cout<<i*50<<endl;
                                                 break;
                                  }
                                  if(i==m-1&&tree[i]<n)cout<<"not yet"<<endl;
                          }
                          m=n=tmp=0;
                          }
                  }
}

頁: [1]