第一題:銀行賬戶(account)
【題目描述】大家都知道28定律吧,據說世界上20%的人擁有80%的財富。現在你對一家銀行的賬戶進行檢測,看是否符合28定律,或者有更強的定律。比如說,10%的人擁有85%的財富。更準確的描述是:對n個銀行賬戶進行調查,你的任務是找出兩個數a,b,使得b-a的差最大。a,b的含義是a%的人擁有b%的財富。
【輸入格式】
輸入的第一行包含乙個整數n(1<=n<=300000),表示銀行賬戶的個數。
接下來一行包含n個整數,每個整數在區間[0,100000000],表示這n個賬戶中的存款金額。
【輸出格式】
輸出兩行,分別是兩個實數a,b。a,b的含義如題所述。誤差在0.01內可以接受。
【輸入樣例】
2
100 200
【輸出樣例】
50.0
66.66666666666666
水題一道,就是注意
int
會爆就ok
直接上**:
#include
#include
#include
#include
#include
#include
const int maxn=300000;
using namespace std;
struct nodeac[maxn+5];
int n;
double temp,k,a1,a2;
long long sum;
bool cmp(node t1,node t2)
int main()
sort(ac+1,ac+n+1,cmp);
for(int i=1;i<=n;i++)
else break;
}printf("%lf",a2); putchar(10);
printf("%lf",a1); putchar(10);
}
第二題:染色面積(area)
【題目描述】給你n個矩形,這些矩形在平面座標系中,並且以座標系的零點為中心,它們的邊都平行於座標軸。每個矩形由寬度和高度可以唯一確定。現在對矩形進行染色操作。下圖即是樣例的示意圖:
現在請你計算有染色區域的面積。
輸入格式:
第一行包含1個整數n(1<=n<=1000000),表示矩形的個數。
接下來n行包含兩個偶數x和y(2<=x,y<=10000000),分別表示寬度和高度。
輸出格式:
一行,表示區域面積。
【輸入樣例】
38 2
4 42 6
【輸出樣例】
28這道題也水,我旁邊那位童鞋乍一看以為是矩形樹,但仔細再想想就不對……
按y值從大到小排個序,也不用管什麼這些矩形在平面座標系中,並且以座標系的零點為中心
就當他給的是一象限的x,y值
還有也是要注意int會爆,而且不只是答案,在計算答案的中間過程時也會爆(wa得我好爽)
主要思路是這樣的:
按y值從大到小排序後,列舉y值
比較相鄰的x值
設y值大者座標為a(x1,y1),小者為b(x2,y2),s表示之前已覆蓋的面積
顯然y1 > y2
x分兩種情況
(1) x1>=x2
顯然b所覆蓋的面積已被a覆蓋,跳過這種情況即可
(2) x2>x1
此時,面積為:s+=(x2-x1)*y2;
**如下:
#include
#include
#include
#include
#include
#include
const int maxn=1000000;
using namespace std;
struct pointpoint[maxn+5];
int n,t;
unsigned long long ans;
bool cmp(point a,point b)
int main()
h[maxm*2];
int empty,count,num,point,n,m,a,b,cnt,fir[maxn+5];
bool used[maxn+5][maxn+5],vis[maxn+5];
void dfs(int s)
if(!vis[h[i].e]) dfs(h[i].e);}}
int main()
for(int i=1;i<=n;i++)
num=0; point=0;}}
if(empty>2)
else if(count<=2)
else
}
第四題:陣列詢問(query)
【題目描述】mirko是乙個非常單純的人,他的好朋友給他乙個有
n個自然數的陣列,然後對他進行
q次查詢.
每一次查詢包含兩個正整數l,r,表示乙個陣列中的乙個區間
[l,r]
,mirko
需要回答在這個區間中有多少個值剛好出現2次。
【輸入格式】
第一行包含兩個整數n和
q(1<=n,q<=500000)
第二行包含n個自然數,這些數均小於
1000000000
,表示陣列中的元素。
接下來有q行,每行包含兩個整數l和
r(1<=l<=r<=n)。
【輸出格式】
輸出包含q行,每行包含一次查詢的答案。
【輸入樣例1】
5 11 2 1 1 1
1 3【輸出樣例1】
【輸入樣例2】
5 21 1 1 1 1
2 42 3
【輸出樣例2】
下面那一道就是題解標程都看不懂的題了:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long llint;
typedef pair pii;
const int maxn = 1 << 20;
int n, q;
vector t[maxn];
int a[maxn];
int ls[maxn], rs[maxn];
int left[maxn];
int right[maxn];
int ans[maxn];
void update (int x, int l, int r, int l, int v) );
int mid = (l + r) / 2;
if (l == r) return;
update(x * 2, l, mid, l, v);
update(x * 2 + 1, mid+1, r, l, v); }
void query_update (int x, int l, int r, int l, int r, int p1, int p2) );
t[x].push_back();
return; }
int mid = (l + r) / 2;
query_update(x * 2, l, mid, l, r, p1, p2);
query_update(x * 2 + 1, mid+1, r, l, r, p1, p2); }
void solve (int x, int l, int r)
if (l == r) return;
int mid = (l+r) / 2;
solve(x*2, l, mid);
solve(x*2+1, mid+1, r); }
int main (void)
map m;
for (int i = 0; i < n; ++i)
m.clear();
for (int i = n-1; i >= 0; --i)
right[n] = n;
for (int i = 0; i < n; ++i)
solve(1, 0, n-1);
for (int i = 0; i < q; ++i)
printf("%d\n", ans[i]);
return 0; }
2023年10月3日測試
不知為何,wps將pdf轉成word的時候出了問題,所以只好用了qwq 第一題意思是說把一些0轉成1或者把1轉成0,然後使得前面一部分為0,後面一部分為一,當然也可以全0或全1。這個時候也許會想到dp 當然dp也能過,不過可能會卡一卡常數 對於這道題,我們可以用一下字首和,和字尾和。然後對於每乙個位...
2023年11月26日 練習3
公雞5元,母雞3元,小雞3只一元,總數money,需要買s只,則三雞多少只 money int input 請輸入多少金額 s int input 需要多少只 for i in range 1,money 5 1 for j in range 1,money 3 1 for k in range 1...
2023年4月26日工作日記
用mysqldump來備份線上資料庫 需求 備份全部表結構,備份部分表資料 語句 bin mysqldump udbproxy pdbproxy xlw xlw.sql 複製xlw這個資料庫到xlw.sql檔案 bin mysql udbproxy pdbproxy test xlw xlw.sql...