من که همش Time Limit Exceeded میگیرم از این مساله، کلافم کرد:19:
Printable View
من که همش Time Limit Exceeded میگیرم از این مساله، کلافم کرد:19:
شما accept شدین ؟نقل قول:
من یه بار این ارورو خوردم بعد درستش کردم . از Map استفاده می کنین ؟ اگه از اون استفاده کنین کارتون خیلی خیلی راحت میشه .نقل قول:
نه استفاده نکردم یعنی تا حالا باهاش کار نکردم، میشه یه مثال ازش بزنید:31:نقل قول:
من تو هر بار خوندن تلفن هم تبدیلش می کردم هم تکراری بودن تلفن ها رو برسی می کردم فکر کنم این باعث پایین اومدن سرعت شده
فعلا که سایتشون هنگ کرده فردا امتحان میکنمنقل قول:
پس از اینکه من همه رشته ها رو به عددهای استاندارد خواسته شده مسئله تبدیل کردم با استفاده از map که یه رشته رو با یه عدد متناظر می کنه استفاده می کنم . مثلا فلان رشته چند تا فراوانی داره . یه خوبیش اینه که وقتی بهش چیزی insert می کنی خودش به صورت مرتب شده insert می کنه . من آخر برنامه مو این جوری نوشتم :نقل قول:
کد:typedef map< string, int > mid;
mid final;
for( int i = 0; i < n; i++ )
{
int s1 = final.size();
final.insert( mid::value_type( result[ i ], 1 ) );
int s2 = final.size();
if( s2 == s1 )
final[ result[ i ] ]++;
}
واوووو ، این map خیلی باحاله فکر نمی کردم ++c یه همچین کلاسی داشته باشه، ممنون بابت مثال
منم accept گرفتم، اینم سورس
کد:#include <iostream>
#include <string>
#include <cctype>
#include <map>
using namespace std;
const char chTable[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, '2', '2', '2', '3', '3',
'3', '4', '4', '4', '5', '5', '5', '6', '6', '6',
'7', 0, '7', '7', '8', '8', '8', '9', '9', '9' };
void MakeStandard(string &ph)
{
string cp(ph);
ph = "";
int count = 1;
for ( string::iterator Iter = cp.begin(); Iter != cp.end(); Iter++ )
{
if ( isdigit(*Iter) || isupper(*Iter))
{
if ( isdigit(*Iter) )
ph += *Iter;
else if ( isupper(*Iter) )
ph += chTable[*Iter];
if ( count == 3 )
ph += '-';
count++;
}
}
}
int main()
{
int N;
string ph_string;
map<string, int> phone_map;
cin >> N;
while ( N-- )
{
cin >> ph_string;
MakeStandard(ph_string);
phone_map[ph_string]++;
}
bool flag = false;
for (map<string, int>::iterator Iter = phone_map.begin(); Iter != phone_map.end(); Iter++)
{
if ( Iter->second > 1 )
{
flag = true;
cout << Iter->first << " " << Iter->second << endl;
}
}
if ( !flag )
{
cout << "No duplicates." << endl;
}
return 0;
}
کد شما قشنگ تره . منم با این accept شدم .
کد:#include <iostream>
#include <vector>
#include <string>
#include <list>
#include <map>
using namespace std;
int main()
{
int n;
cin >> n;
vector< string > arr( n );
for( int i = 0; i < n; i++ )
cin >> arr[ i ];
vector< string > result( n );
int flag;
int index = 0;
for( int i = 0; i < n; i++ )
{
flag = 0;
index = 0;
result[ i ].resize( 8 );
for( size_t j = 0; j < arr[ i ].size(); j++ )
{
if( arr[ i ].at( j ) == '-' )
continue;
if( isdigit( arr[ i ].at( j ) ) )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = arr[ i ].at( j );
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'A' || arr[ i ].at( j ) == 'B' || arr[ i ].at( j ) == 'C' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '2';
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'D' || arr[ i ].at( j ) == 'E' || arr[ i ].at( j ) == 'F' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '3';
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'G' || arr[ i ].at( j ) == 'H' || arr[ i ].at( j ) == 'I' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '4';
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'J' || arr[ i ].at( j ) == 'K' || arr[ i ].at( j ) == 'L' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '5';
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'M' || arr[ i ].at( j ) == 'N' || arr[ i ].at( j ) == 'O' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '6';
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'P' || arr[ i ].at( j ) == 'R' || arr[ i ].at( j ) == 'S' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '7';
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'T' || arr[ i ].at( j ) == 'U' || arr[ i ].at( j ) == 'V' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '8';
index++;
flag++;
}
else if( arr[ i ].at( j ) == 'W' || arr[ i ].at( j ) == 'X' || arr[ i ].at( j ) == 'Y' )
{
if( flag == 3 )
{
result[ i ].at( index ) = '-';
index++;
flag++;
}
result[ i ].at( index ) = '9';
index++;
flag++;
}
}
}
typedef map< string, int > mid;
mid final;
for( int i = 0; i < n; i++ )
{
int s1 = final.size();
final.insert( mid::value_type( result[ i ], 1 ) );
int s2 = final.size();
if( s2 == s1 )
final[ result[ i ] ]++;
}
int print = 0;
for( mid::iterator it = final.begin(); it != final.end(); ++it )
{
if( it->second != 1 )
{
print = 1;
cout << it->first << ' ' << it->second << endl;
}
}
if( print == 0 )
cout << "No duplicates." << endl;
return 0;
}
سلام ببخشید می دونم حرفی که می زنم ربطی به بحس نداره ولی مهم بود گفتم بپرسم
مسابقات acm دانش آموزی شریف هر ساله 16 و 17 بهمن انجام هیشد حالا امسال دیگه ازش خبری نیست می خواستم بدونم کسی ازش خبر داره؟
یک سایتی به آدرسispc.schoolnet.com داشت که اون هم دیگه وجود نداره.
ممنون می شم اگه جواب بدین
فقط برای اینکه تاپیک اون ته نره .
مسابقات جهانی 2010 هم به پایان رسید .
دو تیم ایرانی حاضر در این مسابقات هم متاسفانه بدترین نتیجه تا حال حاضر را برای ایران رقم زدن . 4 سوال از 11 سوال و رتبه 36 .
امیرکبیر از شریف زودتر 4 سوال رو حل کرد و از اون جلو زد .
این هم جدول بندی :
و این هم سوال ها :کد:http://cm.baylor.edu/ICPCWiki/Wiki.jsp?page=Results%20World%20Finals%202010
کد:http://cm.baylor.edu/ICPCWiki/attach/Problem%20Resources/2010WorldFinalProblemSet.pdf
سلام بر و بکس. عجب تاپیک خوبیه اینجا و من چه دیر اومدم. بعد از امتحانات اصلا یادم رفت اینحارو! عجبا!
آقا دمت گرم این سوالای 2010 رو گذاشتی. سوال اولش رو خوندم طول کشید کاملا بفهمم منظورش چیه اما بعدش خیلی سخت نیست. البته من حلش نکردم اما بنظرم یه چیزی مثل تبدیل postfix به infix اومد! با این تفاوت که استاد سر کلاس درسش نداده! ببینم حتما باید حل این ها به زبان C++ یا اصلا زبان برنامه نویسیه خاصی باشه؟ یا شبهه کد هم قبوله؟
راستی یه سوال دیگه! توی جدولی که لینکش رو دادی یه زمان هم نوسته! این زمان اگه به ثانیس که خیلی کمه! و اگه به دقیقست که واویلا!!! حدود یک روز و نیمه! بالا خره کدومشه؟!!!
ممنون فیق! راستی اون سوال شوکولاته هم بخونید سوال شماره j خیلی باحاله کلی آدم دهنش آب میفته میخونتش!
نباید این قدرها هم سوال پیچیده ای باشن . ولی اینو هم در نظر داشته باشین که اون بیچاره ها قراره این 11 تا رو تو 4 ساعت حل کنن . :31: خیلی سخته . روشو خوندن و متوجه شدنش خودش خیلی زمان می بره . شرایط اونجا هم فرق می کنه .نقل قول:
به ++C یا جاوا . بقیه هم باشه نمی دونم .
نه شبه کد قبول نیست . اونجا سورس رو اجرا می کنن و ورودی های خیلی خفن بهش میدن که باید از همش سربلند بیرون بیاد و بالاخره accept میشه .
اونو هم راس میگین اصلا توجه نکرده بودم . نمی دونم دقیق با چه معیاری هست . :20:
راستی اگه روی سوال ها رو خواستین این آرشیو سوال های کل فینال های جهانی :
کد:http://cm.baylor.edu/ICPCWiki/Wiki.jsp?page=Problem%20Resources
یه سوال خفن که روش خیلی گنگه . شبیه معماهای شرلوک هلمز و ایناس .
اگه کسی سردراورد مارو هم بی نصیب نذاره . به نظر مسئله جالبی میاد .
Crypt Kicker
A common but insecure method of encrypting text is to permute the letters of the alphabet. That is, in the text, each letter of the alphabet is consistently replaced by some other letter. So as to ensure that the encryption is reversible, no two letters are replaced by the same letter.
Your task is to decrypt several encoded lines of text, assuming that each line uses a different set of replacements, and that all words in the decrypted text are from a dictionary of known words.
Input
The input consists of a line containing an integer n, followed by n lower case words, one per line, in alphabetical order. These n words comprise the dictionary of words which may appear in the decrypted text. Following the dictionary are several lines of input. Each line is encrypted as described above. There are no more than 1000 words in the dictionary. No word exceeds 16 letters. The encrypted lines contain only lower case letters and spaces and do not exceed 80 characters in length.
Output
Decrypt each line and print it to standard output. If there is more than one solution, any will do. If there is no solution, replace every letter of the alphabet by an asterisk.
Sample Input
6
and
dick
jane
puff
spot
yertle
bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn
xxxx yyy zzzz www yyyy aaa bbbb ccc dddddd
Sample Output
dick and jane and puff and spot and yertle
**** *** **** *** **** *** **** *** ******
با سلام
فكر كنم بهتر باشه اين فروم هم قفل بشه ديگه.
خيلي ببخشيد و ناراحت نشيد.
ديگه از عنوان تاپيك دور شديم.
با تشكر
نقل قول:
سلام .
عنوان تاپیک چیه ؟
و الان داره در چه موردی بحث میشه که از مبحث دور شدیم ؟
ایول عجب مسئله ی جالبیه. :8:نقل قول:
من روش حلش با دست رو بلدم اما نتونستم برنامش رو بنویسم.
ساعت شبه! خواب گرفت! باز فردا یادم باشه روش فکر میکنم. خیلی چالش بر انگیزه! سختیشم تو نوشتن برنامشه!
توضیح صورت سوال و روش حل ۀت به صورت دستی و نه حل برنامه ای آن:
سوال در مورد یک روش کد گذاری حرف میزنه که در آن جای حروف رو عوض میکنند به طوری که هیچ دو حرفی جایشان با یک حرف عوض نشود.(تا بتوان جمله ی رمز شده رو دوباره ترجمه کرد)
مثلا در جمله ی: "در باز شد"
به جای حرف د ، ر قرار میدهند و جای ر،ه میزارن و جای ب، ع و جای ا، غ و جای ز، ط و جای ش، ث میزارن.
که جمله اینجوری میشه: "ره عغط ثر"
حالا برای باز کردن رمز میان حروف داخلش رو به ما میدن و میگن که تو جملمون این حروف هست: در - شد - باز
حالا ما باید رمز گشاییش بکنیم.
میبینید که به صورت دستی کار ساده ای هست کافیه تعداد حروف برابر رو معادل بگیریم.
در جمله ی در باز شد دیده میشه که فقط یک کلمه ی "باز" سه حرفی هست پس واضح است که معدال "عغط" هست پس میفهمیم:
ع : ب
غ : ا
ط: ز
و میبینیم که برای حل بقیه ی رمز دوحالت داریم:
حالت اول : "ره =شد " بگیریم پس میفهمیم : "ر=ش" و "ه =د" اما در اینحالت عبارت "ثر" که در آخر جمله ی رمزی آمده به صورت "ثر = در" میشود که نتیجه میدهد "ر = ر" که این با "ر=ش" تناقض دارد پس این حالت درست نیست
حالت دوم: "ره = در" که میدهد: "ر = د" و "ه = ر" پس لغت آخر "ثر = شد" میشود که میدهد"ث = ش"و "ر = د" که با نتایج قبل مطابقت دارد پس این جواب صحیح هست و عبارت بر اساس راهنماییی که ساختیم ترجمه میشود.
توجه مهم: در مواقعی ممکن است چند جواب برای عبارت رمزشده بدست بیاید ، در اینحالت صورت سوال گفته همه ی حالات ممکنه را چاپ کند.
و ممکن است در مواقعی هیچ جوابی برای رمز پیدا نشود که در این حالت باید به جای حروف رمز، ستاره"*" چاپ شود. (به نمونه ی ورودی و خروجی که در صورت سوال آورده شده دقت کنید.)
برای نوشتن برنامه من خیلی خوابم اومده وباید خیلی فکر کنم که امیدوارم فردا بتونیم حلش کنیم.
تشکر ویژه از مدیر عزیز که این سوال رو داد! و مارو از کشتن وقتمون و البته بی معمایی نجات داد!!!! :31:
موفق و پیروز باشید. آرمان
نقل قول:
ایول . عالی بود . دقیقا گرفتم چی شد .
پس خیلی جالبه .
جالب اینجاس که من دیشب اون فیلم رو آواتارتونو دیدم و الان کاملا مشتاق رمزگشایی هستم . :31:
من یه راه حل کلی پیدا کردم. طولانیه سر فرصت میام مینویسمش.
سلام
یک برنامه ی خیلی ساده توی این acm شریف هست به نام moaddel که باید معدل چند کارنامه را حساب کنی:38:
اینم لینکش :
[HTML]http://acm.sharif.edu/arbiter/translation/view.jsf?name=moaddel[/HTML]
حالا این برنامه ی مسخره را از دو روش نوشتم ، براش که میفرستم میگه نادرست . :4:
خودم با مثالی که زده امتحانش کردم درست بود.
روش اول : کل ورودی ها را میگیره و بعد نتیجه را چاپ میکنه ، اینم کدش :
[PHP]#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
//
class karname
{
public:
void print()
{
cout<<setprecision(2)<<setiosflags(ios::showpoint| ios::fixed)<<DOmoaddel()<<endl;
}
void Set(int nd,int z[],int n[])
{
_ndarse=nd;
//
for(int i=0;i<_ndarse;i++)
{
zarib[i]=z[i];
nomre[i]=n[i];
}
}
private:
float DOmoaddel()
{
sum=0;
vahed=0;
for(int i=0;i<_ndarse;i++)
{
sum+=zarib[i]*nomre[i];
vahed+=zarib[i];
}
moaddel=(static_cast<float>(sum)/vahed)*100;
moaddel=floor(moaddel);
if(static_cast<int>(moaddel)%2!=0)
moaddel+=1;
moaddel/=100;
return moaddel;
}
int _ndarse; //tedad dars ha ra negah midarad.
int vahed;
int sum;
int zarib[25]; //zarib haye darse ha.
int nomre[25]; //nomre student.
float moaddel; //moadel student;
}; //end class Karname
int main()
{
int nkarname=0; //tedad karname haye voroodi ra negah midarad.
int nd=0; //tedad darse ha ra negah midarad.
karname *ka=new karname[1];
while(true)
{
cin>>nd;
//
if(nd!=0)
{
int z[25]={0}; //zarib haye darse ha.
int n[25]={0}; //nomre student.
//
for(int i=0;i<nd;i++)
cin>>z[i];
for(int i=0;i<nd;i++)
cin>>n[i];
//
ka[nkarname].Set(nd,z,n);
nkarname++;
karname *temp = new karname[ nkarname ];
for( int i = 0; i < nkarname; i++ )
temp[ i ] = ka[ i ];
delete [] ka;
ka = new karname[ nkarname + 1 ];
for( int i = 0; i < nkarname; i++ )
ka[ i ] = temp[ i ];
}
else
{
for(int i=0;i<nkarname;i++)
ka[i].print();
break;
}
}
return 0;
}[/PHP]
روش دوم : بعد دریفات اطلاعات هر کارنامه معدل را چاپ میکنه ، اینم کدش :
[PHP]
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
//
int main()
{
int nkarname=0; //tedad karname haye voroodi ra negah midarad.
int nd=0; //tedad darse ha ra negah midarad.
int vahed=0;
int sum=0;
float moaddel;
while(true)
{
cin>>nd;
//
if(nd!=0)
{
sum=0;
vahed=0;
moaddel=0;
int z[25]={0}; //zarib haye darse ha.
int n[25]={0}; //nomre student.
//
for(int i=0;i<nd;i++)
cin>>z[i];
for(int i=0;i<nd;i++)
cin>>n[i];
//
for(int i=0;i<nd;i++)
{
sum+=z[i]*n[i];
vahed+=z[i];
}
moaddel=(static_cast<float>(sum)/vahed)*100;
moaddel=floor(moaddel);
if(static_cast<int>(moaddel)%2!=0)
moaddel+=1;
moaddel/=100;
cout<<setprecision(2)<<setiosflags(ios::showpoint| ios::fixed)<<moaddel<<endl;
}
else
{
break;
}
}
return 0;
}[/PHP]
لطفا در هر کدوم از این روش ها بگید اشکال کارم کجاست ؟:37:
باتشکر
تو برنامه دوم :
با کدتون کاری ندارم . ولی این ورودی رو وارد کنین و خروجی رو چک کنین :
2
0 0
12 12
برنامه اول هم که چیزی به عنوان نتیجه نمیاره .
دستت دردنکنه رفیق ولی برای اینکه برنامه کار کنه باید پایان ورودی ها صفر را وارد کنی یعنی :نقل قول:
2
0 0
12 12
0
راست میگی برنامه دوم مشکل داره امروز روش کار میکنم
دمتگرم
سلام
یک سوال ACM هست ذهنم رو مشغول کرده نتونستم براش جواب پیدا کنم اگه هر کسی جوابی به ذهنش میرسه کمک کنه ممنون میشم
در ضمن کد نمی خوام کسی بده فقط یک راه حل بگه
لینک سوال
من فکر میکنم این مساله یک راه حل بازشگشتی میشه براش پیدا کرد حالا پیاده سازیش میتونه به صورت پویا هم باشهکد:http://acm.pku.edu.cn/JudgeOnline/problem?id=2248
قضیه اینه که ما یک عدد از ورودی دریافت میکنیم مثلا 5 حالا باید یک دنباله بنویسیم که از 1 شروع میشه و به 5 ختم میشه
به طوری که هر عدد رو از دنباله انتخاب کنیم بشه با مجموع دو عدد از همون دنباله(دنباله صعودیه) ساخت
مثلا
1 2 4 5
4 = 2 + 2
یا 5 = 4 + 1
البته جواب یکتا نیست و دنباله های دیگه ی هم میشه نوشت که ما باید دنباله ی که کمترین طول رو داره به خروجی بدیم
باز همون کمترین طول ها هم میتونه چند حالت باشه که هر کودومش رو به خروجی بدیم قابل قبوله
مثلا برای 5 با همون طول قبلی این دنباله هم هست
1 2 3 5
من یک راه حل به ذهنم رسیده که برای عداد زوج جواب میده فقط
مثلا اگه 12 رو در ورودی داشته باشیم دنباله ی اون به این صورته که
میگیم 12 با نصف خودش ساخته میشه یعنی اگه 6 توی دنباله باشه حله!چون
12 = 6 + 6 همین راه حل رو بصورت بازگشتی ادامه میدیم برای 6 تا به 3 یا 4 برسیم!
دنباله اینطوری میشه
1 2 3 6 12
این راه حل برای عداد فرد جواب نمیده!:41: HELP HELP HELP:31:
شما فقط كافيه اگه عدد زوج بود همونطور كه خودت گفتي تقسيمش كني به 2
اگه عدد فرد بود و بر سه بخش پذير بود بر 3 تقسيم كني و دو عدد بعد يكي نسبت يك سوم و يكي دو سوم عدد ميشن يعني 15 ميشه 10 و 5
اگه هم فرد بود و به سه بخش پذير نبود يكي ازش كم كني
مثلا عدد 235
فرده ولي به 3 بخش پذير نيست پس يكي ازش كم ميكنيم:
234
حالا زوجه تقسيم به 2 ميكنيم:
117
فرده و بر 3 بخش پذيره پس اعداد بعديش ميشن:
78 و 39
39 هم فرده هم به 3 بخش پذير . اعداد بعدي:
26 و 13
13 فرده به 3 بخش پذير نيست يكي ازش كم ميكنيم:
12
12 زوجه
6
6 رسيده به دنباله ي كار درست كن 1 و 2 و 4
خب ديگه آسون شد!
پس عدد 235 ميشه دنباله ي:
1 2 4 6 12 13 26 39 78 117 234 235
دمت گرم نکته ی جالبی بود خیلی جالبنقل قول:
من چند روز پیش با درخت حلش کردم 16ms طول کشید AC گرفتم دیدم بعضیا زمانش کمتر شده گفتم باید یه راه حل دیگه هم باشه
این راه حل خودم همه ی حالت ها رو محاسبه کردم اوله برنامه:31:
[PHP]#include "iostream"
#include "stdio.h"
using namespace std;
long long a[10][700000];
int main()
{
long long i,j,k = 1,m = 1,n=0,p,q,t,b[30];
a[0][0] = 1;
a[1][0] = 2;
int flag = 1;
for(i = 1; flag; i++)
{
t = 0;
for(j = 0; j < m; j++)
{
p = i;
q = j;
for(k = i; k >= 0; k--)
{
a[i+1][t++] = a[i][j] + a[p][q];
if(a[i+1][t-1] == 94) flag = 0;
if(p) q /= p;
p--;
}
}
m = t;
}
while(cin >> n && n)
{
if(n == 1)
{
cout << "1" << endl;
}
else
{
for(i = 1; i < 10; i++)
{
j = 0;
if(a[i][0] == n)
break;
if(a[i][0] > n)
{
int fl = 0;
for(k = i; k < 10; k++)
{
for(j = 0; a[k][j]; j++)
{
if(a[k][j] == n)
{
fl = 1;
break;
}
}
i = k;
if(fl) break;
}
break;
}
}
t = 0;
while(a[i][j] != 1)
{
b[t++] = a[i][j];
if(j) j /= i;
i--;
}
cout << "1";
for(p = --t; p >= 0; p--)
{
cout << " " << b[p];
}
cout << endl;
}
}
return 0;
}[/PHP]
دوست عزیز راه حلتون جواب نمیده متاسفانه:41: تو صورت سوال گفته جواب های مختلفی داریم ولی اون جوابهای قبوله که طولشون مینمم باشهنقل قول:
مثلا برای 77 اینطوری عمل میکنه الگوریتمتون
77 نه به سه بخشپذیره نه 2 پس
76 به 2 تقسیم میشه
38 نه 2 تقسیم میشه
19 نه به 2 بخشپذیره نه به 3
18 به 2 تقسیم
9 به 3 تقسیم و به نسبت 1/3 و 2/3 میشکونیم
6
3
2
1
طول دنباله ی شما شد 10 در صورتی که طول 9 هم میشه:46:
1 2 4 8 9 17 34 68 77
به اين قسمت سوال دقت نكردمنقل قول:
تو صورت سوال گفته جواب های مختلفی داریم ولی اون جوابهای قبوله که طولشون مینمم باشه
حتما يه راهي داره. فكر ميكنم بهش
سلام خدمت دوستان .
خیلی وقته تاپیک گم شده تو انجمن .
اون عزیزانی که به این مسابقات علاقه دارن :
یه کتابی هست به اسم Programming Challenges .
تو این کتاب سرفصل مطالبی که برای یه ACM باز تو مسابقه لازمه بدونه تا بتونه مسئله ها رو بهتر حل کنه اورده + توضیحات کوتاهی در مورد هر مطلب + چندین مثال در رابطه با اون مطلب . خیلی کتاب خوبیه برای شروع .
این سرفصل هست :
Data Structures
Strings
Sorting
Arithmetic & Algebra
Combinatorics
Number Theory
Backtracking
Graph Traversal
Graph Algorithms
Dynamic Programming
Grids
Geometry
Computational Geometry
این لینک دانلود این کتاب :
و این هم Judger برای Submit کردن سوالای این کتاب :کد:http://www.4shared.com/document/o87dtyWd/Programming_Challenges.htm
کد:http://www.programming-challenges.com
موفق باشید ...................
با سلام ...
خدمت دوستان علاقه مند به مسابقات ACM عرض کنم که یک مسابقه ACM در راه هست . مسابقات ACM انفرادی دانشگاه مشهد .
یکی از مسابقات ACM معتبر در کشور که هفتمین دوره اش قراره امسال برگذار بشه .
از این قسمت می تونین در مسابقات ثبت نام کنین که پس از تایید اطلاعاتتون پسورد به ایملیتون ارسال میشه . تا 15 تیر فرصت دارین .
دو تا مسابقه اینترنتی برگذار میشه . یکی در 18 تیر و یکی در 20 تیر . 20 نفر از مسابقه اول و 20 نفر از مسابقه دوم و 10 نفر از مجموع دو مسابقه به مسابقه نهایی در مشهد اعزام می شوند .کد:http://72.1.241.83/cgi-bin/kopcs/kopcs?cmd=signupform
جهت کسب اطلاعات بیشتر به این سایت مراجعه نمایید :
کد:http://iaumc3.ir/portal/
سلام.
مسابقات acm جهانی چند وقت یکبار انجام میشه؟ از ایران شرکت کننده زیاد داره؟
نقل قول:
سلام .
هر سال یه بار .
معمولا دو تا تیم یا یدونه .
این دوره دو تا تیم بودن . یکی از شریف یکی از امیرکبیر .
سلام کسی کد سوال 101 از سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] رو می دونه یا اینکه می تونه راهنمایی کنه؟
نقل قول:
سلام . اینو من قدیما نوشته بودم .
این هم کدم :
[html]
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
vector< vector< int > > blocks( n );
for( int i = 0; i < n; i++ )
blocks[ i ].push_back( i );
string oper1, oper2;
int a, b;
vector< int > temporary;
while( true )
{
cin >> oper1;
if( oper1 == "quit" )
break;
cin >> a >> oper2 >> b;
if( a == b )
continue;
//##################################
int I, J;
for( int i = 0; i < n; i++ )
{
for( int j = 0; j < blocks[ i ].size(); j++ )
{
if( blocks[ i ][ j ] == a )
I = i;
if( blocks[ i ][ j ] == b )
J = i;
}
}
if( I == J )
continue;
//####################################
if( oper1 == "move" )
{
if( oper2 == "onto" )
{
while( true )
{
if( blocks[ I ][ blocks[ I ].size() - 1 ] == a )
{
blocks[ I ].pop_back();
break;
}
else
{
int t = blocks[ I ][ blocks[ I ].size() - 1 ];
blocks[ I ].pop_back();
blocks[ t ].push_back( t );
}
}
while( true )
{
if( blocks[ J ][ blocks[ J ].size() - 1 ] == b )
{
blocks[ J ].push_back( a );
break;
}
else
{
int t = blocks[ J ][ blocks[ J ].size() - 1 ];
blocks[ J ].pop_back();
blocks[ t ].push_back( t );
}
}
}
else if( oper2 == "over" )
{
while( true )
{
if( blocks[ I ][ blocks[ I ].size() - 1 ] == a )
{
blocks[ I ].pop_back();
break;
}
else
{
int t = blocks[ I ][ blocks[ I ].size() - 1 ];
blocks[ I ].pop_back();
blocks[ t ].push_back( t );
}
}
blocks[ J ].push_back( a );
}
}
else if( oper1 == "pile" )
{
if( oper2 == "onto" )
{
while( true )
{
if( blocks[ I ][ blocks[ I ].size() - 1 ] == a )
{
temporary.push_back( blocks[ I ][ blocks[ I ].size() - 1 ] );
blocks[ I ].pop_back();
break;
}
else
{
temporary.push_back( blocks[ I ][ blocks[ I ].size() - 1 ] );
blocks[ I ].pop_back();
}
}
while( true )
{
if( blocks[ J ][ blocks[ J ].size() - 1 ] == b )
break;
else
{
int t = blocks[ J ][ blocks[ J ].size() - 1 ];
blocks[ J ].pop_back();
blocks[ t ].push_back( t );
}
}
while( temporary.size() )
{
blocks[ J ].push_back( temporary[ temporary.size() - 1 ] );
temporary.pop_back();
}
}
else if( oper2 == "over" )
{
while( true )
{
if( blocks[ I ][ blocks[ I ].size() - 1 ] == a )
{
temporary.push_back( blocks[ I ][ blocks[ I ].size() - 1 ] );
blocks[ I ].pop_back();
break;
}
else
{
temporary.push_back( blocks[ I ][ blocks[ I ].size() - 1 ] );
blocks[ I ].pop_back();
}
}
while( temporary.size() )
{
blocks[ J ].push_back( temporary[ temporary.size() - 1 ] );
temporary.pop_back();
}
}
}
}
for( int i = 0; i < n; i++ )
{
cout << i << ':';
for( int j = 0; j < blocks[ i ].size(); j++ )
cout << ' ' << blocks[ i ][ j ];
cout << endl;
}
return 0;
}
[/html]
حیف از این تاپیک نیست که بره آخر صف و خاک بخوره.
خودم دوباره میارمش بالا.
سلام .
ثبت نام مسابقه اینترنتی دانشگاه شریف شروع شده . می تونین برین ثبت نام کنین .
اول Register کنین و بعد Create a team .
از آسیا ، تهران ، Iran 7th فلان رو انتخاب کنین .کد:http://cm.baylor.edu
مشکلی بود همین جا بپرسین .
سلام..نقل قول:
برای اجرای برنامه هامون از این arbiter استفاده کنیم؟
[PHP]http://acm.sharif.edu/arbiter/home.jsf[/PHP]
میشه توضیح بدین چطوری؟
بله از این جا استفاده خواهید کرد ولی قبلش باید تو baylor ثبت نام کنین .نقل قول:
استفاده خواهیم کرد؟نقل قول:
منظورم برای تمرین خودمونه..وقتی میخایم accept بگیریم...
.
.
راستی خودمن باید ثبت نام کنیم دیگه؟(یا دانشگاه چون تیمای منتخب هر دانشگاه میرن..از اون لحاظ میپرسم..)..
نه برای تمرین نیاز به ثبت نام نیست .نقل قول:
بله خودتون می تونین ثبت نام کنین .
سلام
سهمیه بندی دانشگاه به چه صورته؟ آیا همه دانشگاها میتونن شرکت کنن؟
من دانشگاه خودم تو لیست ندیدم آیا میتونم با تیمم در سال آینده شرکت کنم؟
کسی تونست این مسئله رو حل کنه؟نقل قول:
عجب سوال سختی بود!.
بله می تونین .نقل قول:
چون تو اینترنتی شرکت نکرده بودین اسمتون تو لیست نبود .
این داینامیک پروگرمینک می خواد . یه خورده فکر .نقل قول: