第一題:分則能成
這是之前寫過的blog。
第二題:明辨是非
這題一開始想了很久,腦子裡全是分塊並查集,然後不斷的把關係丟來丟去,很麻煩,其實只用考慮當前的一張關係圖,有一些白邊表示相等,有一些黑邊表示不相等,首先我們可以把白邊聯通的點用並查集縮起來,然後考慮縮點之間的黑邊,直接用set記錄每乙個聯通塊的黑出邊就可以了,合併兩個聯通塊的時候,按照黑邊集合的大小啟發式合併,就可以做到
有幾點需要注意,因為考試的時候也是最後檢查才發現,當合併兩個集合的時候,要把原來的黑邊另一頭指向的集合的黑邊集合刪除這一條邊。具體可以看看**,有點講不清楚。
#include#include#include#include#include#include#includeusing namespace std;
int n;
sets[200010];
mapq;
int f[200010];
struct quesq[100010];
int t[200010];
set::iterator it;
int findpa(int x)
int main()" class="mathcode" src=""/>。所以
所以我們就知道合法的
所以,我們只要讓
具體做法就是開兩個樹狀陣列維護一下即可。
#include#include#include#include#define lowbit(x) (x&(-x))
using namespace std;
int n;
long long k;
int a[100010],p[100010];
int sumx[200010],sumy[200010];
const int data=100001;
int l,r;
void add(int *sum,int x)
}int get_sum(int *sum,int x)
return tot;
}long long check(int x)
printf("%d\n",ans);
}
第四題:切方塊
暫時還沒有搞懂證明,今晚爭取寫出證明
首師大附中集訓第四天 雜
今天講的是一些雜題 一開始的是一些搜尋。1.長度為 n的數列,已知 n個字首和以及 n個字尾和共 2n個數打亂後的結果,已知數列中每個數的範圍是不超過 500的整數,求原數列,存在多組時間求字典序最小的。1 n 1000 我們考慮將整個序列從小到大排序,然後第乙個元素一定是f 1 或者g 1 就這樣...
首師大附中OJ系統 0022 併聯電阻
併聯電阻 難度級別 a 執行時間限制 1000ms 執行空間限制 51200kb 長度限制 2000000b 試題描述 從鍵盤分別輸入電阻r1 r2的阻值,編寫程式計算出併聯電阻的阻值。併聯電阻的計算公式是r1 r2 r1 r2 輸入 兩個數,分別表示電阻r1和r2的值,兩數間用乙個空格分隔。輸出乙...
首師大附中OJ系統 0030 購買衣服
購買衣服 難度級別 a 執行時間限制 1000ms 執行空間限制 51200kb 長度限制 2000000b 試題描述 衣服每件 95 元,若消費滿300元,可打八五折。輸入購買衣服的件數,輸出需要支付的金額 單位 元 輸入乙個正整數 n,表示購買衣服的數量。輸出乙個數,表示需要支付的購物款。輸入示...