傳送門
考場上的思路
本來看第二個子任務是掃瞄線,結果座標範圍這麼小,打乙個字首和就好了。然後第乙個子任務看上去可以拆成四個格仔 o(
n2) o(n
2)打一維字首和,然後爆掉了……
正解有種東西叫做座標變換。(誤)
其實就是你逆時針旋轉 45∘45∘
後新建乙個座標系,發現乙個在原座標系裡的座標 (x
,y) (x,
y)會變成 (x
−y,x
+y) (x−
y,x+
y),然後你就在新的座標系裡跑一下二維字首和即可。最後查詢時將需要的座標對映到新座標系中去,看看有沒有斜的就好了。
參考**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef
long
long ll;
typedef
unsigned
long
long ull;
using
std::cin;
using
std::cout;
using
std::endl;
typedef
int int_put;
int_put readin()
while (std::isdigit(ch))
if (positive) a = -a;
return a;
}void printout(int_put x)
while (x /= 10);
dowhile (length);
}const
int maxn = 200005;
int n;
int p1 = true;
struct rect
} rects[maxn];
#define runinstance(x) delete new x
struct work
static
inline
int code2(int x)
static
inline
void change(int& x, int& y)
work() : sum1(), sum2()
else
}for (int i = 1; i < maxm; i++)
sum1[0][i] += sum1[0][i - 1];
for (int i = 1; i < maxm; i++)
for (int i = 1; i < maxm; i++)
int ans = 0;
for (int i = 1; i < maxm; i++)}}
printf("%.2f", (double)ans / 4);
}};void run()
runinstance(work);
}int main()
leetcode 557反轉字串
給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。示例 1 輸入 let s take leetcode contest 輸出 s tel ekat edocteel tsetnoc 注意 在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。方法一 因為...
紫書 習題 10 12 UVa 557(概率計算)
開始的時候我沒有考慮1 2的概率,直接一波組合數,然後wa 後來去看題解發現我們可以反過來想,求最後兩個人不一樣的情況 這個時候肯定會拋到最後的 所以每一種可能就是 0.5 n 2 然後一共有c n 2,n 2 1 種 乘起來就ok了。但是這樣會超時而且結果太大 所以我們可以嘗試遞推 通過計算可以發...
557 反轉字串中的單詞 III
題目 給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。示例 1 輸入 let s take leetcode contest 輸出 s tel ekat edocteel tsetnoc 思路 切分反轉合併 def reversewords self,s str s...