QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#359578#5558. Formula Flatlandcrsfaa#WA 174ms185152kbC++144.4kb2024-03-20 19:13:022024-03-20 19:13:03

Judging History

你现在查看的是最新测评结果

  • [2024-03-20 19:13:03]
  • 评测
  • 测评结果:WA
  • 用时:174ms
  • 内存:185152kb
  • [2024-03-20 19:13:02]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
int read() {
    int q=0,w=1;char ch=' ';
    while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
    if(ch=='-') w=-1,ch=getchar();
    while(ch>='0'&&ch<='9') q=q*10+ch-'0',ch=getchar();
    return q*w;
}
typedef long long LL;
typedef double db;
const int N=1e6+5,M=2e6+5;const db eps=1e-12;
#define RI register int
int n,m,Q,tot=1,cnt,rt;LL ans1,ans2;
struct point{int x,y;}p[N];
point operator - (point a,point b) {return (point){a.x-b.x,a.y-b.y};}
LL operator * (point a,point b) {return 1LL*a.x*b.y-1LL*a.y*b.x;}
struct edge{int id,u,v;db jd;}e[M];
bool operator < (edge a,edge b) {return fabs(a.jd-b.jd)<eps?a.v<b.v:a.jd<b.jd;}
int nxt[M],pos[M],f[M],vis[M],istr[M],ask[M];LL s[M],ss[M];
vector<edge> h[N],tr[M];

void link(int x,int y) {
    ++tot,e[tot]=(edge){tot,x,y,atan2(p[y].y-p[x].y,p[y].x-p[x].x)};
    h[x].push_back(e[tot]);
}
void build() {
    for(RI i=1;i<=n;++i) sort(h[i].begin(),h[i].end());
    for(RI i=2;i<=tot;++i) {
        int v=e[i].v;
        vector<edge>::iterator kl=lower_bound(h[v].begin(),h[v].end(),e[i^1]);
        if(kl==h[v].begin()) kl=h[v].end();//其前一条就是最后一条
        --kl,nxt[i]=(*kl).id;
    }
    for(RI i=2;i<=tot;++i) {
        if(pos[i]) continue;
        pos[i]=pos[nxt[i]]=++cnt;
        for(RI j=nxt[i];e[j].v!=e[i].u;j=nxt[j],pos[j]=cnt)
            s[cnt]+=(p[e[j].u]-p[e[i].u])*(p[e[j].v]-p[e[i].u]);//计算面积
        if(s[cnt]<=0) rt=cnt;//无穷域
    }
    for(RI i=2;i<=tot;++i) tr[pos[i]].push_back((edge){i,pos[i],pos[i^1]});
    int mn=2e9;
    for(int i=0;i<=6e5;i++)
    	if(tr[i].size())
    		mn=min(mn,(int)tr[i].size());
	cout<<mn;
	exit(0);
}
void dfs(int x,int las) {//生成树
    f[x]=las,ss[x]=1LL*s[x]*s[x],s[x]<<=1,vis[x]=1;
    //叉积算面积后应该除以2,但是为了避免小数,所以分子分母同时乘4
    for(RI i=0,sz=tr[x].size();i<sz;++i) {
        int v=tr[x][i].v;
        if(vis[v]) continue;
        istr[tr[x][i].id]=istr[tr[x][i].id^1]=1,dfs(v,x);
        s[x]+=s[v],ss[x]+=ss[v];
    }
}

LL gcd(LL a,LL b) {return b?gcd(b,a%b):a;}
void work() {
    while(Q--) {
        int js=(read()+ans1)%n+1;
        for(RI i=1;i<=js;++i) ask[i]=(read()+ans1)%n+1;
        ask[js+1]=ask[1],ans1=ans2=0;
        for(RI i=1;i<=js;++i) {
            int x=ask[i],y=ask[i+1];
            edge ke=(edge){0,x,y,atan2(p[y].y-p[x].y,p[y].x-p[x].x)};
            vector<edge>::iterator kl=lower_bound(h[x].begin(),h[x].end(),ke);//找边
            int j=(*kl).id;
            if(!istr[j]) continue;//该边所在区域,是儿子就加是父亲就减
            if(f[pos[j]]==pos[j^1]) ans1+=ss[pos[j]],ans2+=s[pos[j]];
            else ans1-=ss[pos[j^1]],ans2-=s[pos[j^1]];
        }
        LL tmp=gcd(ans1,ans2);
        ans1/=tmp,ans2/=tmp;
        printf("%lld %lld\n",ans1,ans2);
    }
}
const int mxn=5e5;
namespace baoli
{
	vector<int> a[mxn];
	int d[mxn];
	pair<int,int> e[mxn];
	void work(int n,int m)
	{
		int mn=2e9;
		for(int i=1;i<=m;i++)
		{
			int x=e[i].first,y=e[i].second;
			memset(d,-1,n+1<<3);
			queue<int> q;
			q.push(x);
			d[x]=0;
			while(q.size())
			{
				int f=q.front();
				q.pop();
				for(auto j:a[f])
					if(d[j]==-1&&(f!=x||j!=y)&&(f!=y||j!=x))
						q.push(j),d[j]=d[f]+1;
			}
//			cout<<x<<' '<<y<<':'<<d[y]<<endl;
			if(d[y]!=-1)
				mn=min(mn,d[y]+1);
		}
		cout<<mn;
	}
}
namespace syh
{
	vector<int> a[mxn];
	int deg[mxn];
	pair<int,int> e[mxn];
	int col[mxn];
	void work(int n,int m)
	{
		int i,j,x,y,s=0;
		for(i=1;i<=m;i++)
			deg[e[i].first]++,
			deg[e[i].second]++;
		for(i=1;i<=m;i++)
			a[min(pair<int,int>{deg[e[i].first],e[i].first},{deg[e[i].second],e[i].second}).second].push_back(max(pair<int,int>{deg[e[i].first],e[i].first},{deg[e[i].second],e[i].second}).second);
		for(i=1;i<=n;i++)
		{
			for(auto j:a[i]) col[j]=i;
			for(auto j:a[i])
				for(auto k:a[j])
					if(col[k]==i)
					{
						cout<<3;
						exit(0);
					}
		}
	}
}
signed main()
{
    int x,y;
    n=read(),m=read(),Q=0;
    for(RI i=1;i<=n;++i) p[i]=(point){read(),read()};
    for(RI i=1;i<=m;++i) x=read(),y=read(),link(x,y),link(y,x),baoli::e[i]={x,y},syh::e[i]={x,y},baoli::a[x].push_back(y),baoli::a[y].push_back(x);
    if(m*m<=1e7)
    {
    	baoli::work(n,m);
    	return 0;
	}
    syh::work(n,m);
    build(),dfs(rt,0),work();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 8ms
memory: 110492kb

input:

4 6
0 0
3 0
0 3
1 1
1 2
1 3
1 4
2 3
2 4
3 4

output:

3

result:

ok single line: '3'

Test #2:

score: 0
Accepted
time: 12ms
memory: 112768kb

input:

10 15
1 5
2 1
3 4
4 2
5 3
6 2
7 3
8 1
9 4
11 5
1 2
1 3
1 10
2 4
3 5
4 5
4 6
5 7
6 7
6 8
7 9
8 10
9 10
2 8
3 9

output:

4

result:

ok single line: '4'

Test #3:

score: 0
Accepted
time: 12ms
memory: 110528kb

input:

12 18
0 0
10 10
20 0
15 1
15 4
17 2
13 2
8 7
5 3
8 5
8 6
7 4
1 3
1 4
1 7
2 3
2 5
2 8
3 6
4 5
4 6
5 6
7 9
7 10
8 9
8 11
9 12
10 11
10 12
11 12

output:

3

result:

ok single line: '3'

Test #4:

score: 0
Accepted
time: 7ms
memory: 108672kb

input:

8 12
0 0
12 0
3 2
6 6
6 1
9 2
6 5
6 4
1 2
1 3
1 5
2 4
2 6
3 4
3 8
4 7
5 6
5 8
6 7
7 8

output:

4

result:

ok single line: '4'

Test #5:

score: 0
Accepted
time: 7ms
memory: 110496kb

input:

20 30
0 0
36 0
18 18
5 4
8 3
16 1
20 2
32 3
27 5
29 6
18 17
17 15
15 10
10 2
16 4
20 7
25 4
23 9
19 13
19 8
1 2
2 3
3 4
4 5
5 1
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 6
16 17
17 18
18 19
19 20
20 16
1 6
2 8
3 10
4 12
5 14
7 16
9 17
11 18
13 19
15 20

output:

5

result:

ok single line: '5'

Test #6:

score: 0
Accepted
time: 11ms
memory: 108524kb

input:

12 30
0 0
20 0
10 10
4 3
7 2
9 1
16 3
10 9
10 8
9 4
13 2
12 6
1 2
1 3
1 4
1 5
1 6
2 3
3 4
4 5
5 6
6 2
7 2
7 3
8 3
8 4
9 4
9 5
10 5
10 6
11 6
11 2
7 8
8 9
9 10
10 11
11 7
12 7
12 8
12 9
12 10
12 11

output:

3

result:

ok single line: '3'

Test #7:

score: 0
Accepted
time: 8ms
memory: 108672kb

input:

6 12
0 0
8 0
5 2
4 3
3 1
4 4
1 2
2 3
3 4
4 1
5 1
6 1
5 2
6 2
5 3
6 3
5 4
6 4

output:

3

result:

ok single line: '3'

Test #8:

score: 0
Accepted
time: 11ms
memory: 108672kb

input:

12 18
0 0
20 0
3 2
10 10
5 1
17 2
5 4
6 5
13 6
10 9
9 7
10 8
1 2
1 3
1 5
2 4
2 6
3 4
3 7
4 8
5 6
5 7
6 8
7 8
9 10
9 11
9 12
10 11
10 12
11 12

output:

3

result:

ok single line: '3'

Test #9:

score: 0
Accepted
time: 15ms
memory: 110720kb

input:

12 19
0 0
20 0
10 9
10 10
9 7
8 5
11 8
13 6
11 1
8 4
6 2
8 3
1 2
1 3
1 5
2 4
2 6
3 4
3 7
4 8
5 6
5 7
6 8
7 8
9 10
9 11
9 12
10 11
10 12
11 12
1 9

output:

3

result:

ok single line: '3'

Test #10:

score: 0
Accepted
time: 7ms
memory: 108480kb

input:

46 69
0 0
46 2
88 0
49 1
30 4
25 3
44 44
79 8
59 2
50 5
31 6
44 43
55 3
36 5
30 10
23 4
9 8
44 42
72 7
64 3
59 5
53 9
34 7
27 8
12 10
77 9
63 7
55 8
39 6
32 12
32 13
17 7
14 9
45 40
66 4
60 13
58 11
41 7
32 16
21 5
19 6
47 37
71 6
69 5
59 15
45 32
1 3
1 4
1 2
2 5
2 6
3 7
3 8
4 9
4 10
5 11
11 6
7 12
...

output:

4

result:

ok single line: '4'

Test #11:

score: 0
Accepted
time: 148ms
memory: 177152kb

input:

99994 166652
0 0
164087 24231
16153 1467
80696 7356
55659 5065
130637 4863
178682 544
100912 7558
74630 6795
170587 16557
157941 2412
175028 11309
67128 6109
124070 5465
128321 5070
163029 1979
162531 1996
51885 4712
149664 41288
142160 3814
55444 5040
79209 7222
178706 6943
82464 7501
104751 7227
1...

output:

4

result:

ok single line: '4'

Test #12:

score: 0
Accepted
time: 158ms
memory: 177344kb

input:

99998 166660
0 0
44650 3765
182247 1495
112004 7385
139279 5119
58545 4895
6434 559
91137 7618
118668 6882
30458 2586
29030 2439
20799 1760
126793 6136
65967 5522
61316 5126
23468 1978
24029 2025
143489 4824
76139 6388
46024 3857
139549 5088
113899 7579
12750 1125
110075 7551
87058 7284
116307 7127
...

output:

5

result:

ok single line: '5'

Test #13:

score: 0
Accepted
time: 166ms
memory: 180508kb

input:

99857 199084
0 0
133841 27313
130867 61811
35938 31076
137395 7465
148228 50647
58797 16554
156910 20181
20200 12984
135370 23638
98039 2116
144490 16863
21807 12052
88572 36832
86716 37327
133565 22794
75471 46343
38269 23447
89136 45968
177375 19185
17108 5990
135669 6753
117358 35927
4138 3357
27...

output:

4

result:

ok single line: '4'

Test #14:

score: 0
Accepted
time: 157ms
memory: 184304kb

input:

99996 199988
0 0
41854 6629
75715 3077
164081 4911
163673 5475
134280 13391
154899 5665
181897 1823
38415 5848
188581 1312
126110 5509
47134 6766
31807 4743
96221 95900
104514 4582
45458 6738
126440 5611
138745 11284
161984 5687
72343 2492
160200 5783
46828 6673
15907 2194
112610 5327
82969 3780
749...

output:

4

result:

ok single line: '4'

Test #15:

score: 0
Accepted
time: 7ms
memory: 110792kb

input:

19 33
0 0
12 11
22 11
11 6
10 1
10 4
11 9
17 17
17 10
17 15
13 12
11 7
17 2
34 0
6 2
17 16
11 8
21 12
13 5
14 3
10 11
1 14
18 16
6 19
9 2
11 2
18 3
15 5
8 3
15 4
1 15
14 5
1 8
17 15
9 10
7 1
17 7
5 6
12 19
18 10
8 16
9 3
6 4
19 13
7 14
13 17
11 16
13 5
2 8
12 17
2 7
12 4

output:

3

result:

ok single line: '3'

Test #16:

score: 0
Accepted
time: 8ms
memory: 108524kb

input:

40 62
0 0
62 12
58 9
28 20
34 20
24 21
70 5
4 3
47 21
58 16
14 1
30 19
66 4
35 31
38 38
72 3
43 29
62 2
30 22
37 34
38 35
47 24
14 13
65 8
15 5
57 3
20 18
41 28
9 7
17 12
38 36
42 22
34 25
63 6
38 37
51 22
7 2
76 0
39 33
32 27
1 38
32 5
21 20
22 32
29 37
20 31
14 40
34 26
40 19
33 40
10 27
30 27
28 ...

output:

4

result:

ok single line: '4'

Test #17:

score: 0
Accepted
time: 112ms
memory: 161492kb

input:

99999 199994
0 0
79608 40849
85311 57397
91861 76158
74680 26575
88905 67730
66013 1745
81778 47143
92487 77951
78943 38927
68142 7862
78467 37616
93241 80166
71640 17863
71193 16602
78612 37974
67666 6505
94807 84668
72445 20114
88308 66030
94434 83618
73474 23094
78102 36534
91676 75634
90949 7358...

output:

3

result:

ok single line: '3'

Test #18:

score: 0
Accepted
time: 174ms
memory: 185152kb

input:

100000 199996
0 0
79627 40847
85331 57394
91794 76160
74662 26574
88864 67731
66083 1746
81801 47143
92412 77953
78963 38925
68217 7859
78485 37613
93171 80168
71670 17858
71242 16598
78619 37974
67728 6501
94728 84673
72426 20115
88327 66034
94377 83620
73480 23093
78113 36533
91620 75636
90912 735...

output:

4

result:

ok single line: '4'

Test #19:

score: 0
Accepted
time: 4ms
memory: 108464kb

input:

52 80
0 0
77 2
45 37
14 10
10 3
100 0
95 4
82 3
82 8
77 5
84 12
50 47
50 48
5 4
50 50
85 5
83 10
87 11
50 49
93 6
25 10
38 10
48 9
64 11
45 30
33 13
35 12
39 16
43 13
45 15
60 10
55 18
48 26
45 29
29 14
42 22
43 20
50 16
46 25
44 27
33 1
74 3
16 8
13 2
34 5
71 6
43 34
20 6
35 9
44 7
68 8
45 31
6 7
7...

output:

4

result:

ok single line: '4'

Test #20:

score: 0
Accepted
time: 13ms
memory: 108752kb

input:

43 69
0 0
82 0
77 4
62 18
47 3
56 1
61 3
67 2
69 3
74 5
62 16
62 17
56 11
50 2
57 5
67 5
66 11
61 15
60 9
61 8
24 22
41 40
56 24
59 22
36 21
27 24
34 31
41 39
53 26
50 25
46 32
48 23
44 24
37 27
29 23
36 32
41 38
41 37
41 28
38 29
5 4
41 41
61 20
1 2
2 3
3 4
4 5
5 1
6 7
7 8
8 9
9 10
10 11
11 12
12 1...

output:

3

result:

ok single line: '3'

Test #21:

score: -100
Wrong Answer
time: 155ms
memory: 182772kb

input:

99990 166642
0 0
47450 4158
63572 5532
142989 1304
94657 3703
47713 4207
104790 94110
87737 4265
136939 743
40352 3576
144354 18482
35502 3179
129406 77
152802 28464
185387 5164
36833 3298
169120 3712
14525 1356
63136 5465
35089 3161
10978 1021
81791 4755
31454 2842
144760 1477
151687 2117
83110 464...

output:

5

result:

wrong answer 1st lines differ - expected: '4', found: '5'