原创 codeforces811C(DP)

題目大意: 現在給你一個長度爲N的序列,我們可以將一些子序列設定爲一堆,其價值爲這堆中每種數字的異或值。 總價值爲子序列的值的加和。 我們要求分成子序列的部分假設包含了數字5,那麼整個序列出現的數字5都必須被這個子序列所包含。 問最大價值

原创 long double加精度和輸入輸出流的關閉

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #includ

原创 HDU5531(三分)

分析:這個題就是讓我們給一個多邊行每一個頂點爲圓心畫圓,然後相鄰頂點的園是像相切的,使面積最小。 題解:這個題,如果是奇數多邊形的話,可以推導出來,每個圓的半徑是固定的。以三角形爲例即可證明。如果頂點是偶數個,那個就三分一條邊,因爲可以以

原创 HDU5828(線段樹好題,區間加,區間求根號,吉老師在51nod直播講過這道題,相應的還有區間取模)

題解:區間加,區間和不用說。重點在區間取模,首先,就算一個很大的n,幾次根號之後就會很小。 我們可以思考一下,如果一個區間內的極差>1的時候,不斷地進行整體加某個值然後開方,是沒辦法保持住這樣的序列的(相鄰兩個極差都>1)。只有整個區間內

原创 zoj3886(線段樹,區間取模)

因爲一個數最多只需要log(n)次就會變成1,而模數大於他本身,他又不會變化,最次每次o(n)修改區間,最多也不會多過log(n)次,所以複雜度是正確的。暴力修改就好 niconico數:所有比x小的數且與x互質的數,從小到大排列是一個

原创 HDU5775(樹狀數組)

分析:由冒泡算法可知,一個數是先往右移,再往左移。所有從後往前掃,看每一個數右邊有幾個比他大的數,那麼就知道要往右邊移動幾次,左邊的話,就看現在的位

原创 HDU4691用RMQ求所有字符串後綴的最長公共前綴

測試證明板子二雖然常數大。但是還是比板子一快的多。 板子1: 複雜度n*log*log #include <iostream> #include <cstdio> #include <cstring> #include <algorit

原创 隨機生成函數

double my_random() { return (double)rand() / RAND_MAX; } int my_random(int low, int high) { return low + (int)(my_rando

原创 HDU6053(莫比烏斯)

表示不懂啊,。挖個坑先 題意:求n個數,分別比給定n個數小,他們不是互質的情況有多少種。 題解::莫比烏斯容斥,,,,, #include<stdio.h> #include<stdlib.h> #include<string.h> #i

原创 HDU5782(結論題hash+字符串同構)

【題目大意】   給出兩個字符串,判斷他們每一個前綴是否循環同構,循環同構的意思就是,字符串首位相接拼成一個環,兩個環通過旋轉可以相等。   【題解】   這道題用到了一個神奇的結論,如果S字符串和T字符串循環同構,那麼必有S=u+v,T

原创 HDU5727(貪心)

分析:這個題可以反過來想。用最少的硬幣把多出來的錢湊完。但是輸入並不保證可以正好湊出來。所以必須考慮完不成的情況。因爲10種面值裏面只有50和500

原创 超級讀入掛HDU(6044)

#include <cstdio> #include <cstring> #include <algorithm> typedef long long LL; namespace fastIO { #define BUF_SIZE

原创 codeforces808E(超大揹包的解決問題,中途相遇法)

題意:超大揹包問題。但是隻有三種重量。 分析:從只有三種重量1,2,3入手。2可以由1組成,3可以有1,2組成。所以考慮中途相遇法。分別處理選1,2和3的情況,然後DP答案! #include<stdio.h> #include<stdl

原创 HDU5768(初試中國剩餘定理)

題意:給你n+1個同餘式,求l--r區間內滿足所有同餘式的數的個數。 題解:解決n個同餘方程,又因爲有兩兩互質。首選中國剩餘定理。n爲15,可以暴力枚舉1<<15種的選取方案,然後分別求同餘方程。再利用容斥定理(奇加偶減)。就可以解決這個

原创 HDU5823(狀壓DP)

給你一個n個點的圖,問每個子集的最小色數 題解:每個子圖的染色問題,可以看成是找每個子圖的獨立集問題(兩兩頂點互不相鄰的圖叫獨立集),可以先枚舉每個狀態,然後枚舉每個頂點,表示以這個頂點爲起始的子圖,再枚舉每個頂點,表示這個頂點和上面那個