光線追蹤
30分暴力就是看每個光線和每個矩形的下邊界和左邊界交點
發現詢問很難,
離線下來操作,
可以把角度離散化,轉化為區間賦值,單點查詢問題
每次就是給屬於下邊界角度內賦max,左邊界角度內賦max
我突然感覺沒什麼可寫的
#includeusingview codenamespace
std;
#define ll long long
#define a 5471745
struct
node
node(
const ll &a,const ll &b)
};
node min(node a,node b)
ll pan(ll x)
struct
tree
ll mid=(l+r)>>1
; built(x
<<1
,l,mid);
built(x
<<1|1,mid+1
,r);
}void
change(ll x,ll l,ll r,ll ord,ll val)
ll mid=(cl[x]+cr[x])>>1
;
if(mid>=l) change(x<<1
,l,r,ord,val);
if(mid1|1
,l,r,ord,val);
}node ask(ll x,ll pla)
}x,y;
ll x[a],xx[a],y[a],yy[a],opt[a];
ll mnx0=1e9+7,mnxid,mny0=1e9+7
,mnyid,cnt,q;
long
double
lsh[a];
long
double
cl(ll x)
intmain()
else
}sort(lsh+1,lsh+cnt+1
); ll len=unique(lsh+1,lsh+cnt+1)-lsh-1
; x.built(
1,1,len),y.built(1,1
,len);
for(ll i=1;i<=q;i++)
else
if(!y[i])
//printf("i=%lld lower_bound(lsh+1,lsh+1+len,1.0l*y[i]/x[i])-lsh=%lld\n",i,1ll*(lower_bound(lsh+1,lsh+1+len,1.0l*y[i]/x[i])-lsh));
node a1=x.ask(1,lower_bound(lsh+1,lsh+1+len,1.0l*y[i]/x[i])-lsh),
a2=y.ask(1,lower_bound(lsh+1,lsh+1+len,1.0l*y[i]/x[i])-lsh);
ll fx=a1.x,fy=a2.x;
//printf("fx=%lld fy=%lld\n",fx,fy);
if(fx*y[i]==fy*x[i])printf("
%lld\n
",pan(max(a1.ord,a2.ord)));
else
if(fx*y[i]"
%lld\n
",pan(a1.ord));
else printf("
%lld\n
",pan(a2.ord));}}
}
臨面合併
奇怪的資料範圍應該給了一定的提示,8以內就基本是明示狀壓了
狀態定義挺神的二進位制下有乙個1代表以當前點為右端點向左延伸出乙個矩形
例如(假設原圖是1 1 1 1)那麼當前是0 1 0 1 表示兩個矩形
判斷一下是否可以與上面合併,減去相同貢獻
過程可以預處理
不要用單調指標處理,單調指標細節特別多,
預處理
void減去相同貢獻fg(ll x)
for(ll j=1;j<=cnt;j++)}}
ll cnt=v[i][now].size();出題人題解for(ll j1=0;j1)
for(ll j2=0;j21][last].size();j2++)
}
csp s模擬測試90
考場發明 spfa 祭。t1 按照題意模擬,然後我就發現我死了。一氣之下刪掉了 priority 拍了幾下發現賊jb快而且還是對的就開心地交了。t2 的差分狀態定義很棒然後就調了一場考試,t3 死亡暴力沒拿到分。100 00 38 16 100 03 11 10 0 03 15 44 20003 1...
csp s模擬測試94
一場簡單題,打爆了。t1 腦抽分解質因數準備分子分母消,想了半天發現 jb 互質直接上天,果斷碼了高精滾蛋。t2 無腦手玩大樣例,突然靈光一閃想到對映到前 k 大小的區間,t3 寫完暴力準備划水,突然發現特殊性質可寫,10 分鐘拯救了 25 分。8003 24 46 7003 24 58 6503 ...
csp s模擬測試93
自閉場。t1 想到 cdq 因為複雜度少看見乙個 0 打了半年還用了 sort 直接廢掉,t2 t3 直接自閉暴力分都沒有。考場太慌了,心態不好。8002 07 34 003 12 11 0 03 11 53 8003 12 11 沒有前途就是垃圾趁早滾回實驗二安度晚年吧。cdq 不接受反駁。最簡單...