2014 BUPT 新生排位賽05

2021-06-22 21:50:29 字數 2553 閱讀 7029

a 平方的平均值

思路:超級大水題了,我都無語了,要注意到xi可能取負數,然後就沒什麼問題了,比賽的時候沒有注意到乙個int轉long long

先上wa的**:

#include #include #include #include#include #include #define inf 10000000000

#define eps 1e-9

using namespace std;

const int max_e=200100;

const int max_n=10000005;

int main()

scanf("%d",&a);

mid=a*a;

for(int i=1;i

#include #include #include #include#include #include #define inf 10000000000

#define eps 1e-9

using namespace std;

const int max_e=200100;

const int max_n=10000005;

int main()

cin>>a;

mid=a*a;

for(int i=1;i>a;

if(a*a

大致思路:先找到與待求點對應的點(這個點到其他點的距離和最短),再找得到其相鄰的三個點(這三點到這個點的距離相等),再通過乙個向量加法就可以求出來待求點。

比賽的時候剩的時間太少了,當時腦子還特別亂就沒做出來,後來做的時候wa了好多次,這主要是因為dis用了double,應該不算他的開方,直接平方來比較。

code:

#include #include #include #include#include #include #include #define inf 99999999

#define eps 1e-9

using namespace std;

const int max_e=200100;

const int max_n=10;

struct pos p[max_n];

long long tt[max_n];

int cc[max_n];

long long dis(pos a,pos b)

int main()

if(midnn==0)

else if(tt[i]

思路:自己想了一種貪心的演算法,就是想先把字串按降序排列,然後再從頭開始乙個乙個取,一開始超時,後來自己有加了乙個佇列優化,wa,發現了乙個無法解決的bug。

看了學長的標程有了乙個更好的貪心演算法:先統計每個字元出現的次數,如果最大次數大於l(表示字串的長度)就直接返回-1,之後判斷剩餘長度是否是奇數,如果是奇數且存在乙個字元出現的次數等於剩餘長度+1除以二,則此次新增此字元,否則選擇乙個最靠前的字元新增。

學長的標程寫的真是優美,參照的寫了乙個(太優美了,簡潔的不能再簡潔了)。

code:

#includeusing namespace std;

char a[100005],b[100005];

int nn[26];

void solve()

int pre=-1;

for(int k=0;k

思路:因為資料規模比較大,所以直接用遞推式肯定超時,給的記憶體也開不了那麼大的陣列。就用矩陣快速冪的方法來快速計算遞推式。

由於這個還不是裸的 fibnacci,所以得給式子做乙個變形:f(n)=f(n-1)+f(n-2)+n  <=> f(n)+n=f(n-1)+n-1+f(n-2)+n-2+3 <=> tn=tn-1+tn-2+3

再用矩陣快速冪就可以做出來了,取模的時候可能會出現負數的情況(在這個里卡了好長時間),還好最後發現了。

code:

#include #include #include #include#include #include #define inf 10000000000

#define eps 1e-9

using namespace std;

const int max_e=200100;

const int max_n=10000005;

typedef vectora;

typedef vectorb;

const long long m=1000000007;

b mul(b &a,b &b)

return b;}

int main()

{ int t;

long long n;

scanf("%d",&t);

b a(3,a(3));

while(t--){

cin>>n;

a[0][0]=a[0][1]=a[0][2]=1;

a[1][0]=1;a[1][1]=a[1][2]=0;

a[2][0]=a[2][1]=0;a[2][2]=1;

a=pow(a,n);

long long res=2*a[1][0]+a[1][1]+3*a[1][2];

if(res

2014 BUPT 新生排位賽01

a 學姐的桌面 鏈結 思路 水題,有乙個坑就是怎麼輸出 這個字元,當時沒注意到自己的程式沒打這個字元直接交了上去wa了一次。code include include include include include define inf 10000 using namespace std const ...

2014 BUPT 新生排位賽04

a 大家一起點外賣 思路 水題,注意負數的情況,注意long long 就能過了。code include include include include include include define inf 100000005 define eps 1e 9 using namespace std...

2014 BUPT 新生排位賽09

a diffsum 大致題意 給你乙個數列,取出任意兩項求其差的絕對值,求所有組合的絕對值的和。思路 剛開始寫了乙個暴力列舉的方法,想水一水試試,結果意料之中的tle了,其複雜度是n 2,之後想了乙個nlogn的方法就是先對陣列進行排序 降序 在求出第一項和其他所有項的組合,之後的項的組合其實和前面...