永发信息网

ACM问题,不明白为什么会超时。。

答案:2  悬赏:40  手机版
解决时间 2021-02-06 13:39
  • 提问者网友:遮云壑
  • 2021-02-05 22:49
问题地址:http://icpc.ahu.edu.cn/OJ/ContestProblem.aspx?cid=78&id=661
我的代码:
#include
#define max_k 10000000
using namespace std;
struct Line{
double sx,sy,tx,ty;
double sk;//斜率
}line;
struct linecount{
double x0,y0,x1,y1;
double k;//斜率
}lines[600];
int main()
{
int t,n;
cin>>t; //一共有几组测试数据
int sum[600];//一共相交多少次计数器
for(int l=0;l<600;l++) sum[l]=0;
for(int j=0;j {
cin>>n; // 每一组的测试数据的直线数
cin>>line.sx>>line.sy>>line.tx>>line.ty;
if(line.sy-line.sx)
line.sk=(line.ty-line.sy)/(line.sy-line.sx);
else line.sk=max_k;
for(int i=0;i cin>>lines[i].x0>>lines[i].y0>>lines[i].x1>>lines[i].y1;
if(lines[i].x1-lines[i].x0)
lines[i].k=(lines[i].y1-lines[i].y0)/(lines[i].x1-lines[i].x0);
else lines[i].k=max_k;
if(line.sk!=lines[i].k) sum[j]++;
}
cout<}
for(int i=0;i return 0;
}
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-02-05 23:24
cin和cout太慢。、。。

#include 
#include 
using namespace std;

int main() {
int t, n;
scanf("%d", &t);   //一共有几组测试数据
for (int j = 0; j < t; j++) {
int sum = 0;
scanf("%d", &n);  // 每一组的测试数据的直线数
double sx, sy, tx, ty;
scanf("%lf%lf%lf%lf", &sx, &sy, &tx, &ty);
for (int i = 0; i < n; i++) {
double x0, y0, x1, y1;
scanf("%lf%lf%lf%lf", &x0, &y0, &x1, &y1);
double a = y1 - y0, b = x0 - x1, c = x1 * y0 - x0 * y1;
double sl = a * sx + b * sy + c, tl = a * tx + b * ty + c;
if (sl * tl < 0) sum++;
}
printf("%d\n", sum);
}
return 0;
}
全部回答
  • 1楼网友:duile
  • 2021-02-06 00:24
#include #include using namespace std; int a[10001]; int main() { ios::sync_with_stdio(false); int n, s = 0; while (cin >> n && n) { int min = 0, max = 0; for (int i = 0; i < n; i++) { cin >> a[i]; } min = a[0]; max = a[0]; for (int i = 1; i < n; i++) { if (a[i] > max) max = a[i]; if (min > a[i]) min = a[i]; } cout << "case " << ++s << ':' << endl; if (min + n - 1 != max) cout << 'm' << endl; else cout << 's' << endl; } return 0; }可能是cin/cout太慢了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯