Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

من الگوریتممو می گم اگه کسی راه بهتری داره بگه(البته اگه برای من درسته!؟!) :

میایم معادله خط 3 تا ضلع رو بدست می آریم از این فرمول :


حالا زمانی مبدا داخل مثلث قرار می گیره که 3 ضلع مثلث محور ها(4 خط یعنی هم مثبت و هم منفی) رو قطع کنه (فهمیدنشم سخت نیست ...)

درسته؟!؟
کسی ایده دیگه ای داره ؟!؟
الگوریتمت*درسته
گرفتیش؟

یکی بگه این سوال 102 چی میگه با تشکر
یه*تعداد*مثلث*تو*فایل*داده
شما*باید*بگین*چند*تا*از*این*مثلث*ها*هستند*که*مبدا*مختصات*داخل*اونها*قرار*می*گیره
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

آقا مشکل کد من چیه؟

133:

کد
#include<iostream>
#include<algorithm>
using namespace std;

int n,ans,s=0,e=0,first=0;
bool seen[16000+10];
struct start{long long a;int co;}a[16000+10];
struct end{long long b;int co;}b[16000+10];
bool M(start x,start u){if(x.a<u.a)return 1;return 0;}
bool N(end e,end u){if(e.b<u.b)return 1;return 0;}
void F(){
 for(int i=first+1;i<n;i++){
  if(seen[i]){first=i;return;}}
}
int main(){
 cin>>n;
 for(int i=0;i<n;i++)cin>>a[i].a>>b[i].b;
 for(int i=0;i<n;i++)a[i].co=b[i].co=i;
 sort(a,a+n,M);
 sort(b,b+n,N);first=a[0].co;
 while(e<n){
  if(s==n){
   if(first!=b[e].co){ans++;seen[b[e].co]=0;}
   else                    {seen[first]=0;F();}
    e++;
   }
  else{
   if(a[s].a<b[e].b){seen[a[s].co]=1;s++;}
   else{
    if(first!=b[e].co){seen[b[e].co]=0;ans++;}
    else                    {seen[first]=0;F();}
    e++;
   }}}
   cout<<ans<<endl;
 return 0;
}
 
آخرین ویرایش توسط مدیر

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

آقا یکی سوال بذاره
این سوال 102 رو هم که
الگوریتمش گفته شد
باتشکر
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

آقا یکی سوال بذاره
این سوال 102 رو هم که
الگوریتمش گفته شد
باتشکر
نه
هنوز تموم نشده
تو سوالهای هندسی همیشه کد زدن سخت تر از الگوریتم دادنه :)
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

پس مشکل این سوال 133 من رو بگین لطفا
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

متأسفانه اصلاً کدتونو نمی*فهمم :)
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

من گفتم که بیا شروع و پایان ها رو مرتب کن
بعد شرو کن این دو تا آرایه رو یه چیزی تو مایه های مرج انجام بده
یه متغیر هم داریم که میگه عقب ترین شروعی که هنوز پایانش نیمده کدومه(first)
بعد اگه تو این مرج کردن پایان اومد و این پایان مال first بیا اولین شروعی رو که هنوزپایانش نیمده رو پیدا کن
و دوباره کارو از سر بگیر
و اگه این طور نبود به تعداد جواب ها یکی اضافه کن
امیدوارم خوب توضیح داده باشم
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

آقا یکی بیاد سوال منو جواب بده لطفا
با این سوال هندسی هم حال نکردم
کد کثیفی داره
یکی یه سوال غیر کد کثیف هم بذاره:دی
با تشکر
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

این کد من واسه 133
هرچند تو تست کیس11 تایم خوردم ولی مهم نیست
بزرگ میشم یادم میره

کد
#include<iostream>
#include<algorithm>
using namespace std;

int n;
bool seen[16000+10];
struct start{long long a,b;}a[16000+10];
struct end{long long b;int co;}b[16000+10];
bool M(start x,start u){if(x.a<u.a)return 1;return 0;}
bool N(end e,end u){if(e.b<u.b)return 1;return 0;}
int F(int s,int e,int f){
 if(s==e)return s;
 for(int i=f+1;i<n;i++){
  if(seen[i])return i;
 }
}
int Re(int s,int e,int f){
 if(s==n){
  if(e==n)return 0;
  if(f!=b[e].co){seen[b[e].co]=0;return Re(s,e+1,f)+1;}
  return Re(s,e+1,F(s,e+1,f));
 }
 if(a[s].a<b[e].b){seen[s]=1;return Re(s+1,e,f);}
 if(f!=b[e].co){seen[b[e].co]=0;return Re(s,e+1,f)+1;}
 return Re(s,e+1,F(s,e+1,f));
}
int main(){
 cin>>n;
 for(int i=0;i<n;i++)cin>>a[i].a>>a[i].b;
 sort(a,a+n,M);
 for(int i=0;i<n;i++){b[i].b=a[i].b;b[i].co=i;}
 sort(b,b+n,N);
 cout<<Re(0,0,0)<<endl;
 return 0;
}
========================
لطفا یکی به من بگه اینی که نوشتم
اردرش چنده
باتشکر
 
آخرین ویرایش توسط مدیر

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
پاسخ : آمادگی برای مرحله ۳

الگوریتمت*درسته
گرفتیش؟
نه چون واقعا وقتشو ندارم که کد بزنم از دست امتحانات لطفا کدشو نذارید تا چهار شنبه روش فکر کنم . مرسی.

این کد من واسه 133
هرچند تو تست کیس11 تایم خوردم ولی مهم نیست
بزرگ میشم یادم میره
باتشکر
پس صبر کن بزرگ بشی یادت بره ، چرا انقدر خودت اذیت می کنی خیلی راحت تر حل می شه یه greedy می خواست. :4:

اینم کد من : sgu 133
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
پاسخ : آمادگی برای مرحله ۳

اینم دوتا سوال جدبد و راحت با اجازه ی آقای گوهرشادی :

سوال اول

سوال دوم
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

من دیگه اون قدم گلابی نیستم
این سوالا خیلی ضایع است
سوال اولی هم تکراری است
اینم سوال دومی:
Ubuntu Pastebin
================
سوال جدید لطفا
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
پاسخ : آمادگی برای مرحله ۳

ببخشید. من اصلا قصد جسارت نداشتم ...

اینم دو تا سوال دیگه :

سوال اول

سوال دوم
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

با سوال اول حال نکردم !:4:

سوال دوم

کد
 #include <iostream>
 #include <conio.h>
 using namespace std;
 

 int main()
   {
     int t;
     cin>>t;
     for(int i=1;i<=t;i++)
       {
         long long sum;
         long long s=0;
         long long m,n;
         cin>>m>>n;
         for(int j=1;j<=min(m,n);j++)
          s+=(m-j+1)*(n-j+1);
         sum=(m*(m+1)*n*(n+1))/4;
         cout<<sum-s<<endl;
       }
     getch();
     return 0;
   }
 
آخرین ویرایش توسط مدیر

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
پاسخ : آمادگی برای مرحله ۳

یک n ضلعی منتظم را در نظر بگیرید که اندازه ی طول ضلع آن a است ، فرض کنید راس ها از 1 تا n شماره گذاری شده است . برنامه ای بنویسید که n,a را دریافت کرده و فاصله راس 1 با هر یک از راس های دیگر را حساب کند و در خروجی در یک خط چاپ کن.

ورودی
t تعداد تست ها را دریافت کند سپس در هر خط بعد دو عدد n,a را دریافت کنید.

خروجی
برای هر تست در یک خط فاصله ها را با دورقم اعشار که با یک space جدا شده اند، چاپ شود.

ورودی نمونه:
2
1 3
1 4
===========
خروجی نمونه:
1 1
1 1.41 1
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

دوستان لطفا یکی سوال بذاره
چرا انقد اینجا سوت و کوره؟؟؟؟؟؟؟؟؟
 

erfankh

New Member
ارسال ها
202
لایک ها
89
امتیاز
0
پاسخ : آمادگی برای مرحله ۳

سوال غیر هندسی نداری؟
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
پاسخ : آمادگی برای مرحله ۳

دو تا دیگه :( من یکم اینترنتم مشکل داره) :

- بزرگترین عدد اولی که تمام اعداد 0 تا 9 در آن به کار رفته است را دست آورید.

- برنامه ای بنویسید که یک چند جمله (حداکثر درجه 10) دریافت کند و مشتق آن را حساب کند.

ورودی و خروجی را از نمونه متوجه شوید.

ورودی:
2x^3+4x^2+x+15
خروجی:
6x^2+8x+1
 
آخرین ویرایش توسط مدیر
بالا