2012-03-12 7 views
7

हाल ही में मैंने ऑनलाइन न्यायाधीशों पर प्रश्नों को हल करना शुरू कर दिया। मैं this question in SPOJ में फंस कर रहा हूँ:एसपीओजे: कार्ड शफलिंग

  1. कार्ड कश्मीर बराबर बवासीर, जहां कश्मीर एन
  2. नीचे एन का एक कारक है में विभाजित हैं:

    यहाँ फेरबदल एन कार्ड के लिए एक एल्गोरिथ्म है/के कार्ड एक ही क्रम में ढेर 1 के हैं (इसलिए। प्रारंभिक ढेर का निचला कार्ड ढेर का निचला कार्ड है 1)।

  3. नीचे से अगले एन/के कार्ड ढेर 2 के हैं, और इसी तरह।
  4. अब शफल ढेर का शीर्ष कार्ड ढेर का शीर्ष कार्ड है 1. अगला कार्ड ढेर 2 का शीर्ष कार्ड है, ..., shuffled ढेर का KTH कार्ड ढेर के शीर्ष कार्ड है। फिर (के + 1) वें कार्ड वह कार्ड है जो अब ढेर 1 के शीर्ष पर है, (के + 2) एनडी कार्ड है जो अब ढेर 2 के शीर्ष पर है और इसी तरह।

उदाहरण के लिए, यदि एन = 6 और के = 3, कार्ड के डेक का आदेश "एबीसीडीईएफ" (ऊपर से नीचे) एक बार शफल हो जाने पर "ईसीएएफडीबी" में बदल जाएगा।

एन और के को देखते हुए, कम से कम शफल की आवश्यकता होती है जिसके बाद ढेर को अपने मूल क्रम में बहाल किया जाता है?


मैं अनुकरण करने की कोशिश की, लेकिन यह समय सीमा से अधिक है। क्या कोई गणितीय समीकरण है?

उत्तर

1

हां, इस समस्या के लिए गणितीय समाधान है।

सबसे पहले मुझे ऐसी समस्याओं से संपर्क करने के बारे में कुछ सुझावों के साथ शुरू करने दें और फिर मैं वास्तविक समाधान पर कुछ सुझाव दूंगा। मैं इसे पूरा नहीं करूँगा ताकि अभी भी कुछ चुनौती बाकी हो।

तो: ऐसी समस्याओं से कैसे संपर्क करें? आपने जो किया वह वास्तव में एक अच्छी शुरुआत है। एक सिमुलेशन लिखें और इसे कुछ छोटे मामलों के खिलाफ चलाएं। सिमुलेशन काफी तेज़ होना चाहिए। अब आपके पास कुछ और मूल्य हैं। उन्हें कागज के टुकड़े पर लिखें और उन पर घूरना शुरू करें। आपके पास उदाहरण है यदि K = x और N = y तो परिणाम z और बहुत अधिक ऐसे जोड़े हैं। कुछ सूत्र को समझने का प्रयास करें। उन तीनों पर फ़ोकस करें जिनके पास एक्स के लिए निश्चित मान है, y या z के लिए। उन दोनों में क्या समान है? और इसी तरह। आप घूरते हैं और आमतौर पर आपको कुछ समय बाद एक उज्ज्वल विचार मिलता है :)

अब: इस विशेष समस्या पर कुछ सुझाव। शफलिंग का एक ही पुनरावृत्ति करें और ध्यान दें कि प्रत्येक कार्ड कहां जाता है। उदाहरण के लिए कार्ड 1 स्थिति में जाता है 3 कार्ड 3 स्थिति 2 में जाता है और इसी तरह। ध्यान दें कि कुछ श्रृंखलाएं इस तरह बनाई जाएंगी - उदाहरण के लिए उदाहरण एन = 6, के = 3 में, हमारे पास लंबाई 6: 1-> 3-> 2-> 6-> 4-> 5-> 1 की श्रृंखला है । अब सभी श्रृंखलाओं की लंबाई की गणना करें (प्रत्येक कार्ड बिल्कुल एक श्रृंखला से संबंधित होगा) और यह जानने का प्रयास करें कि उत्तर इन लंबाईओं पर निर्भर करता है।

आशा इस समस्या का समाधान करने में मदद करने के लिए पर्याप्त है।

संपादित करें: बाधाओं एक भी यात्रा का अनुकरण पर एक नज़र ले जा बहुत धीमी गति से हो सकता है। अगर ऐसा है, के बाद क्या किया है मेरी दूसरी टिप में मैं क्या सलाह वास्तव में एक फेरबदल अनुकरण करने के लिए बिना चेन की लंबाई की गणना की कोशिश

+0

एक्स = (एक्स% कश्मीर) * (एन/कश्मीर) + (एन एक्स)/के - 1 .... जहां x 0 से शुरू होता है .... कुछ भी बेहतर है? – vastutsav

+0

मुझे यकीन नहीं है कि मुझे आपका विचार मिल गया है। उत्तर मेरी पोस्ट में वर्णित श्रृंखलाओं की लंबाई से प्रत्यक्ष सूत्र है। –

+0

मुझे अधिक स्पष्ट नहीं होने के लिए खेद है ... हम मूल्य x = 0 से शुरू करेंगे ... फिर उपरोक्त फॉर्मूला का उपयोग करके एक्सएच कार्ड की नई स्थिति प्राप्त करें .... एक बार कार्ड 0 स्थिति पर लौटने के बाद, हमारे पास मूल विन्यास ... हम पूरी प्रक्रिया में आवश्यक पुनरावृत्तियों की संख्या गिनते हैं ... या हम अगले चरण की एक तालिका बनाए रख सकते हैं ... क्या कोई बेहतर दृष्टिकोण है? कोई समूह सिद्धांत सामान? – vastutsav

संबंधित मुद्दे