PDA

View Full Version : Presentation Error در sgu



sa1378
شنبه 24 آبان 1393, 09:04 صبح
سلام
من این کد رو برای سوال 113 sgu (http://acm.sgu.ru/problem.php?contest=0&problem=113)زدم ولی ارور میده
من اولین باره که دارم به این ارور برخورد میکنم و برنامه هم درست هست
آخه یعنی چی؟
کد:
#include <cstdio>
using namespace std;

bool check(int n) {
int prime_count = 0;
for (int i = 2; i * i <= n; ++ i)
while (n % i == 0)
{
prime_count ++;
n /= i;
}
if (n > 1)
prime_count ++;
return prime_count == 2;
}

int main() {
int test_count;
scanf("%d", &test_count);

while (test_count > 0)
{
test_count --;
int n;
scanf("%d", &n);
if(check(n)==true)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}

return 0;
}

sa1378
شنبه 24 آبان 1393, 11:56 صبح
این کد هم برای سوال 121 (http://acm.sgu.ru/problem.php?contest=0&problem=121) این ارو رو میده
#include <iostream>
#include <fstream>
using namespace std;
#define N 101
int n,a[N][N],p[N];
bool mark1[N],mark2[N];
ifstream fin("input.txt");
int main() {
cin>>n;
int x;
for(int i=1;i<=n;i++)
{
while(1)
{

cin>>x;
if(x==0)
break;
p[i]++;
if(a[i][x]==0)
{
if(mark1[i]==false)
{
mark1[i]=true;
mark1[x]=true;
a[i][x]=1;
a[x][i]=1;
}
else if(mark2[i]==false)
{
mark2[i]=true;
mark2[x]=true;
a[i][x]=2;
a[x][i]=2;
}
}


}
}
for(int i=1;i<=n;i++)
if(p[i]>1 && (mark1[i]==false || mark2[i]==false))
{
cout<<"No solution"<<endl;
return 0;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
if(a[i][j]!=0)
cout<<a[i][j]<<" ";
cout<<0<<endl;
}

return 0;
}

hadi0x7c7
شنبه 24 آبان 1393, 16:10 عصر
سلام
من این کد رو برای سوال 113 sgu (http://acm.sgu.ru/problem.php?contest=0&problem=113)زدم ولی ارور میده
من اولین باره که دارم به این ارور برخورد میکنم و برنامه هم درست هست
آخه یعنی چی؟
کد:
#include <cstdio>
using namespace std;

bool check(int n) {
int prime_count = 0;
for (int i = 2; i * i <= n; ++ i)
while (n % i == 0)
{
prime_count ++;
n /= i;
}
if (n > 1)
prime_count ++;
return prime_count == 2;
}

int main() {
int test_count;
scanf("%d", &test_count);

while (test_count > 0)
{
test_count --;
int n;
scanf("%d", &n);
if(check(n)==true)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}

return 0;
}

حدس میزنم '\n' فرامشو کردید
بعدش، به احتمال خیلی زیاد شما TLE میخورید.:چشمک:

sa1378
شنبه 24 آبان 1393, 17:30 عصر
حدس میزنم '\n' فرامشو کردید
بعدش، به احتمال خیلی زیاد شما TLE میخورید.:چشمک:

endl هست دیگه
TLE چیه؟

rahnema1
شنبه 24 آبان 1393, 23:15 عصر
endl هست دیگه
TLE چیه؟
جواب معما میشه :
Time Limit Error
سوال دوم هم فکر کنم اشتباه باشه
مثلا چه اشکالی پیش میاد اگه جواب سوال را به این صورت بنویسیم؟

1 2 0
1 2 0
2 2 1 0
1 0
2 2 1 0
2 0

sa1378
یک شنبه 25 آبان 1393, 14:19 عصر
جواب معما میشه :
Time Limit Error
سوال دوم هم فکر کنم اشتباه باشه
مثلا چه اشکالی پیش میاد اگه جواب سوال را به این صورت بنویسیم؟

1 2 0
1 2 0
2 2 1 0
1 0
2 2 1 0
2 0

سوال اول رو اکسپت کردم
برای دومی کدم رو تغییر دادم...قبول دارین به ازای هر ورودی میتونیم چندتا خروجی داشته باشیم؟
مثلا برای مثال خود سوال یال (4-5) هم میتونه سیاه باشه و هم سفید
البته خروجی که شما گفتین غلطه چون یال (4-5) رو دو رنگ مختلف گفتین
این کدم باز Presentation Error داده:

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define N 120
int n,a[N][N],p[N];
bool mark1[N],mark2[N];
vector <int> input[N];
ifstream fin("input.txt");

void output()
{

for(int i=1;i<=n;i++)
if(p[i]>1 && (mark1[i]==false || mark2[i]==false))
{
cout<<"No solution"<<endl;
return ;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<input[i].size();j++)
cout<<a[i][input[i][j]]<<" ";
cout<<0<<endl;
}

/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cerr<<a[i][j]<<" ";
cerr<<endl;
}
*/

}

int main() {
cin>>n;
int x;
for(int i=1;i<=n;i++)
{
while(1)
{

cin>>x;
if(x==0)
break;

p[i]++;
input[i].push_back(x);
if(a[i][x]==0)
{
if(mark1[i]==false)
{
mark1[i]=true;
mark1[x]=true;
a[i][x]=1;
a[x][i]=1;
}
else if(mark2[i]==false)
{
mark2[i]=true;
mark2[x]=true;
a[i][x]=2;
a[x][i]=2;
}
}


}
}
//cerr<<input[1].size()<<endl;
output();

return 0;
}
....
یه سوال دیگه
میشه کد این سوال رو با DFS زد؟
اگه میشه یه ایده ی اولیه ی کوچولوشو میشه بگین؟

rahnema1
یک شنبه 25 آبان 1393, 16:24 عصر
سوال اول رو اکسپت کردم
برای دومی کدم رو تغییر دادم...قبول دارین به ازای هر ورودی میتونیم چندتا خروجی داشته باشیم؟
مثلا برای مثال خود سوال یال (4-5) هم میتونه سیاه باشه و هم سفید
البته خروجی که شما گفتین غلطه چون یال (4-5) رو دو رنگ مختلف گفتین
یه سوال دیگه
میشه کد این سوال رو با DFS زد؟
اگه میشه یه ایده ی اولیه ی کوچولوشو میشه بگین؟
درسته اون که نوشتم اشتباه بود ولی جواب مساله در هر صورت یکتا نخواهد بود .
بله همین طور که اشاره کردید با روشی مثل DFS باید حل بشه
مثلا اول جزیره هایی که فقط یک همسایه دارند را انتخاب کنید و همین طور همسایه به همسایه جلو برید

sa1378
یک شنبه 25 آبان 1393, 16:40 عصر
درسته اون که نوشتم اشتباه بود ولی جواب مساله در هر صورت یکتا نخواهد بود .
بله همین طور که اشاره کردید با روشی مثل DFS باید حل بشه
مثلا اول جزیره هایی که فقط یک همسایه دارند را انتخاب کنید و همین طور همسایه به همسایه جلو برید
کد من بازم همون ارور رو داده
دلایلش چیا میتونن باشن؟

rahnema1
یک شنبه 25 آبان 1393, 16:44 عصر
آخرش نفهمیدیم چه اروری میده ولی روش حلش باید پیچیده تر از این باشه مثل DFS

sa1378
سه شنبه 27 آبان 1393, 16:03 عصر
درسته اون که نوشتم اشتباه بود ولی جواب مساله در هر صورت یکتا نخواهد بود .
بله همین طور که اشاره کردید با روشی مثل DFS باید حل بشه
مثلا اول جزیره هایی که فقط یک همسایه دارند را انتخاب کنید و همین طور همسایه به همسایه جلو برید
من هرچی فکر کردم الگوریتم درست و کامل پیدا نکردم
میشه کامل بگین الگوریتمش چجوری میشه؟

من اومدم گفتم یه queue میگیریم اونایی که درجشون یکه رو اول میریزیم توش
دوتا آرایه مارک هم میگیریم برای اینکه ببینیم هر راس یال سفید یا سیاه داره یا نه
بعد یه راس از queue میگیریم و طبق مارک هاش رنگش میکنیم و درجه همه راساشو -1 میکنیم، اگه درجه یک راس یک شد میندازیمش تو queue
ولی مشکل اینه که(طبق شکل):
اول 1 و 3 میان توی صف
راس 1 یال سفید نداره پس(1-2) سفید میشه
بعد میره سراغ راس سوم که یال سفید نداره پس (2-3) سفید میشه
خب به همین راحتی جواب غلطه
125833

rahnema1
سه شنبه 27 آبان 1393, 22:28 عصر
مساله وقتی جواب نداره که حلقه ای تشکیل بشه و هر گره فقط دو همسایه داشته باشه و تعداد گره ها فرد باشه
مثلا اگه از نقطه 1 شروع بشه کافیه تا نقطه 4 پیش بریم
یا مثلا اگه از نقطه 5 یا 6 شروع می شد کافی بود تا نقطه 4 پیش بریم و متوقف بشیم
گاهی وقتها ممکنه وقتی در مسیر به یک جا برسیم که تناقض به وجود بیاد. لازم میشه مسیر مورد نظر را برگردیم و رنگ آمیزی را تغییر بدیم
باید آمار گره هایی که مشکل دارند را داشته باشیم ( گره هایی که تمام یالهای متصل به اون یکرنگ باشند) تا تغییرات لازم روی اونها اعمال بشه
http://www.sharefile.ir/uploads/1416384275.png