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太慢了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯