樓主: 林宇翔
打印 上一主題 下一主題

[提問] npsc 2013試題 A. 挑食的大胃王

[複製鏈接]
  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    樓主
    發表於 2014-8-25 14:25:29 | 顯示全部樓層
    cin為了與C語言的IO相容,所以預設上,cin會多做很多動作。假若你不用scanf的話,可以加上這兩行來關閉此功能達到提升速度的效果。
    什麼都不做的狀況下,cinscanf慢上2倍以上,尤其IO量很大的狀況下特別明顯。

    [C++] 純文本查看 復制代碼
    #include<iostream>
    using namespace std;
    int main()
    {
    	ios::sync_with_stdio(false);
    	//下面三選一 
    	cin.tie( NULL );
    	//cin.tie( 0 );
    	//cin.tie( nullptr ); //C++11 support
    	int a;
    	cin>>a;
    	cout<<"in:"<<a<<endl;
    }



    參考資料:http://www.hankcs.com/program/cp ... put-and-output.html
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    頭香
    發表於 2014-8-25 14:29:59 | 顯示全部樓層
    陣列請用常數宣告,這些都不是標準的C++語法

    #
  • cin>>t;
  • int ans[t-1];

  • cin>>m>>n>>k;
  • int rice[m][n];

  • 點評

    怎樣寫才正確  發表於 2014-8-25 14:49
    怎樣寫才正確  發表於 2014-8-25 14:48
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    3#
    發表於 2014-8-25 14:33:56 | 顯示全部樓層
    林宇翔 發表於 2014-8-25 14:31
    我不知道我的程式哪裡寫錯
    輸出的答案都是錯的

    那你能分析你的程式碼如何運作嗎?  因為如果連自己的程式都不知造怎麼運行,寫出來的這個程式沒有意義
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    4#
    發表於 2014-8-25 17:29:17 | 顯示全部樓層
    你這code連最基本的讀取都有問題,先看看這篇文章吧
    http://forum.tfcis.org/forum.php ... typeid%26typeid%3D8
    你的答案可以算完後就直接輸出,不用存起來在一起輸出。事實上你連這裡都是錯的。
    你先寫這一題試試http://zerojudge.tw/ShowProblem?problemid=a002
    看不到哈哈哈
    遊客,本帖隱藏的內容需要積分高於 250 才可瀏覽,您當前積分為 0

    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    5#
    發表於 2014-8-25 17:58:38 | 顯示全部樓層
    不跟你喇了

    看最簡單的一點
    #code
  • cin>>t;//讀入測資數量
  • int ans[t-1];
  • 你自己想想,給你C99標準好了,你今天有t個答案,但是你只有t-1個格子放答案,你覺得這合理嗎? 更不用說陣列大小要是常數這件事了。
    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    6#
    發表於 2014-8-25 18:40:15 | 顯示全部樓層

    真糟糕,這東西可以解釋的很隨便,但是你有可能誤用,但是解釋得太詳細又要花時間。
    參考資料:
    http://www.cplusplus.com/reference/cstring/memset/
    http://jax-work-archive.blogspot.tw/2011/07/c-memset.html


    標頭 memory.h 不過通常用的是cstring
    函數原型: void * memset ( void * ptr, int value, size_t num );

    功能:可以快速設定一個連續的記憶體區塊(ex.陣列)的數值

    參數說明:
    ptr:作用對象的指標
    value:欲初始化的值
    num : 填充數量


    回傳值:
    ptr本身

    常見用法:
    1.把陣列所有元素都設定為0。
    在這範例裡,我們使用sizeof()運算子直接取得陣列所佔的記憶體大小。
    [C++] 純文本查看 復制代碼
    #include<iostream>
    #include<memory.h>
    using namespace std;
    
    int main()
    {
            int arr[5]= { 1,2,3,4,5 };
            
            memset( arr , 0 , sizeof(arr) );
            //sizeof(arr) = sizeof(int)*5
            for(int i=0;i<5;++i)
            {
                    cout<<arr[i]<<' ';
            }
    }


    要注意,填充的單位為「位元組」,所以在這裡的sizeof(arr)不等於5,而是等於5乘以每一個int所佔的位元組
    再這種用法中除了0之外,常用的還有-1,0x3F,0x7F,後兩個通常用來代表初始化為無限大

    回復 支持 反對

    使用道具 檢舉

  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    7#
    發表於 2014-8-26 10:50:25 來自手機 | 顯示全部樓層
    是的,在你不用sync with stdio時可以
    回復 支持 反對

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表