a. 撕書ⅰ
序列型dp。dp[i]表示當前編號結點的撕書頁數。
那麼我們有 dp[ i ] = dp[ i - y - 1 ] + y
其中y為編號i書頁對應範圍內的書頁。
那麼,具體實現的話,需要求出每個i對應的y,這裡用字首和。
1 #include2 #include3 #include4震驚!cyc的背景居然隱藏著這樣的...#define maxn 1000005
5#define lowbit(x) (-x&x)
6using
namespace
std;78
int n,high = 0;9
10struct
nodelist[maxn];
1314
inttree[maxn],dp[maxn],minn;
15int sum(int
p)23
return
ans;24}
25void add(int
p)32}33
34bool cmp(const node &a,const node &b)
3738
intmain()
4647 sort(list+1,list+1+n,cmp);
4849
//printf("#%d#\n",high);
5051
for(int i = 1;i <= n;i++)
5657
for(int i = 1;i <= n;i++)
6667 minn =dp[n];
6869
for(int i = 1;i <= n;i++)
7273 printf("%d"
,minn);
7475
//cout << endl;
76//
for(int i = 0;i <= n;i++) printf("%d ",dp[i]);
7778
//cout << endl;
79//
for(int i = 0;i <= 10;i++) printf("%d ",sum(i));
8081
return0;
82 }
b. 撕書 ⅱ
這道題略坑。
x表示a+b,y表示a^b,那麼我們定義乙個z = (x-y)>> 1。
這個z表示的就是有a+b進製的位(準確來說是a x b == 1)
為什麼呢?
因為某些原因,異或等於沒有進製的加,那麼和就擁有異或結果所沒有的進製的資訊。
和 - 異或 就可以去除其他冗餘,得到進製的資訊啦!
然而需要右移一位才能精確表示。
那麼顯然不合法的情況就包括:
1. x < y :顯然根據前文我們有 x ≥ y
2. ( x - y ) & 1 != 0: ( x - y )>>1 表示有進製的二進位制位,如果命題成立,-1位有進製是什麼鬼??
還有特殊情況:
如果 x == y ,ans 需要減少2
因為此時 a 和 b 可以有乙個為0,所以需要排除這種情況。
求解策略:
如果 y 的乙個二進位制位為 1 ,顯然 a 和 b 其中乙個為 0 且另乙個為 1 ,那麼有兩種情況,ans *= 2
如果 y 的乙個二進位制位為 0 ,顯然 a 和 b 的對應二進位制位是相同的,ans *= 1
以此檢驗 x 和 y 的每一位,ans也就出來了。
1 #include2 #include3題解比**重要!#define ll long long
4using
namespace
std;
56 ll x,y,z,ans = 1;7
8int
main()
1718 z >>= 1;19
20//
for(ll i = 1;i <= x;i<<=1)
2324
//cout << endl;
2526
for(ll a = 0;(1l
3738 ans *= 2;39
}40//if(y&a) ans *= 2;41}
4243
if(x == y) ans -= 2;44
4546 printf("
%lld
",ans);
4748
return0;
49 }
汕頭市隊賽 SRM 09 A 撕書
背景 描述 琉璃在撕書。書總共有n頁,都懸浮在數軸上,第i頁的位置為 上面寫著乙個數字 琉璃從右往左撕書。假如看到了第i頁,就把在第i頁左邊,且與之距離 的書都撕掉。第i頁本身不撕 夜子為了盡量地保全魔法書,決定偷偷在琉璃開始撕之前,增加一頁。增加的這一頁必須在所有書頁的右邊,數字隨意。夜子想知道,...
汕頭市隊賽 SRM 09 C 撕書
背景 描述 琉璃雙在撕書。書總共有n頁,每頁都可以看作是乙個數字。琉璃讀書喜歡來回地讀。但他也因此發現了作者的灌水行為 有些連續的若干頁正著讀和倒著讀完全一樣,也就是說是回文的。發生這種情況時,琉璃會非常地angry,把那些書頁給撕掉。汀撿到了本黑色的魔法書。因為擔心殺死書後會帶來麻煩,決定借琉璃的...
《西瓜書》筆記09 聚類
無監督學習 訓練樣本的標記資訊是未知的。目標是通過對無標記樣本的學習揭示資料內在性質,為進一步數學分析提供基礎。此類學習任務中研究最多,應用廣泛的是聚類。聚類 試圖將資料集中的樣本劃分為若干個通常互不相交的子集。每個子集稱為乙個簇 cluster 每個簇可能對應於一些潛在概念。這些概念對於聚類演算法...