NPSC補完計劃

登入註冊帳號.

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

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2012國中組初賽
 A、長得跟大樹一樣

作者 主題: A、長得跟大樹一樣  (閱讀 1471 次)

austin0625

  • 新手
  • *
  • 文章數: 4
    • 檢視個人資料
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;
                          }
                  }
}
記錄

skipper

  • 初級會員
  • **
  • 文章數: 28
    • 檢視個人資料
Re: A、長得跟大樹一樣
« 回覆 #1 於: 十二月 01, 2012, 08:39:18 pm »

不做排序的作法,比大小就好了
代碼: [選擇]
#include <iostream>
using namespace std;
int main(void){
int T,M,N;
cin >> T;
for(int i = 0;i < T;i++){
int decade=0;
cin >> M >> N;
int j;
for(j = 0;j < M;j++){
int current;
cin >> current;
if (current<=N){
decade++;
}
}
if (decade==M){
cout << "not yet" << endl;;
}
else{
cout << (decade+1)*50 << endl;
}
}
return 0;
}
記錄

skipper

  • 初級會員
  • **
  • 文章數: 28
    • 檢視個人資料
Re: A、長得跟大樹一樣
« 回覆 #2 於: 十二月 01, 2012, 08:40:42 pm »

用sort 的作法
代碼: [選擇]
#include <iostream>
#include<algorithm>
using namespace std;   
int main(){
        int numcase,m,n,*leaf,m1,i;
        cin>>numcase;
        while(numcase>0)
        {
                numcase=numcase--;
                cin>>m>>n;
                m1=0;
                leaf=new int[m];

                while(m1<m)
                {
             cin>>leaf[m1];
             m1++;
            }
                sort(leaf,leaf+m);
                m1=0;
                for(i=0;i<m;i++)
                {
               if(n<=leaf[i])
                   {
                break;
               }
                }
            if(i==m)
                {
               cout<<"not yet"<<endl;
            }
                else
                {
               cout<<(i+1)*50<<endl;
                }
        }
        //system("pause");
}
記錄

WYJOIER

  • 新手
  • *
  • 文章數: 7
    • 檢視個人資料
Re: A、長得跟大樹一樣
« 回覆 #3 於: 四月 23, 2014, 05:14:50 pm »

附上我的解法:
代碼: [選擇]
#include <cstdio>
#include <vector>
#include <cctype>
#include <algorithm>
using namespace std;
inline int Readint()
{
char c = getchar();
while( !isdigit(c) )
c = getchar();
int Number = 0;
while( isdigit(c) )
Number = Number*10 + (c-'0') , c = getchar();
return Number;
}
int main()
{
int T , M , N , P;
T = Readint();
while( T-- )
{
M = Readint() , N = Readint();
vector<int> Card(M);
for( int i = 0; i < M; i++ )
Card[i] = Readint();
stable_sort( Card.begin() , Card.end() );
P = lower_bound( Card.begin() , Card.end() , N ) - Card.begin();
if( P == Card.size() )printf("not yet\n");
else printf("%d\n",(P+1)*50);
}
return 0;
}
記錄
+ NPSC補完計劃 » NPSC國中組 » NPSC2012國中組初賽
 A、長得跟大樹一樣