SSL Week 6 總結 解題報告

2021-08-18 13:02:42 字數 2997 閱讀 8274

日期

事件刷的題

day 0(星期天)

做題noip2017普及組解題報告

day 1(星期一)

寫部落格無

day 2(星期二)

做題新二叉樹,fbi樹,數字三角形,吃乳酪,合唱隊形,飛彈攔截

day 3(星期三)

講課一直在改題

day 4(星期四)

做題asteroids,knights

day 5(星期五)

刷題最小路徑覆蓋,增廣路飛彈攔截第二問,chessboard

day 6(星期六)

模擬賽模擬賽的題,place the robots,最大正方形,吃吃吃

題目時間複雜度

第一題 數列o(

logd

(n))o(

logd

(n))

第二題 螞蟻o(

4000n2

) o

(4000n2

)第三題 單元格o(

n2) o(n

2)第四題 剪草o(

對於等差數列,直接暴力規律求解,對於等比數列,直接暴力模擬

#include

#include

#define ull unsigned long long

using

namespace

std;ull a,b,c,d,n,ans;

int main()

cout

/輸出}

暴力模擬,模擬每只螞蟻慢慢爬

#include

using

namespace

std;int n,x,y,ans;char s[51];bool ok;

struct node

a[51];

double t=2005;//一直爬

bool check(int x)//判斷此螞蟻是否消失

int main()

//輸入+初始化

while(t-=0.5)//繼續爬

for(int i=1;ifalse;

for(int j=i+1;j<=n;j++)

if(a[i].x==a[j].x&&a[i].y==a[j].y&&check(i)&&check(j))//看看有沒有螞蟻會消失

//標記已經消失

if(ok)a[i].w='\0';//若有螞蟻消失,此螞蟻也消失}}

for(int i=1;i<=n;i++) ans+=check(i);//判斷

printf("%d",ans);//輸出

}

找規律

#include

using

namespace

std;long

long n,m;int x,y;long

long ans;

int main()

printf("%lld",ans);

}

顯然這題不能用貪心去做,因為如果每次割最長的,那麼長得最快的那個又長起來了。如果割掉長得最快的,當你去割別的草的時候,這課草又長起來了。而且每棵草沒有必要割兩次。

所以想到了動態規劃,設f[

j][k

] f[j

][k]

表示前j j

棵草,割了

k' role="presentation" style="position: relative;">k

k次的時候所有草的總長度,顯然可以得到動態轉移方程 f[

j][k

]=mi

n(f[

j−1]

[k]+

a[j]

+b[j

]∗i,

f[j−

1][k

−1]+

(i−k

)∗b[

j]) f[j

][k]

=min

(f[j

−1][

k]+a

[j]+

b[j]

∗i,f

[j−1

][k−

1]+(

i−k)

∗b[j

])(i為時間)

#include

#include

#define r(i,a,b) for(int i=a;i<=b;i++)

#define file(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout)

using

namespace

std;int n,m,f[56][56];

struct nodec[56];

bool cmp(node x,node y)

r(j,1,n)

r(k,1,i)

f[j][k]=min(f[j-1][k]+c[j].a+c[j].b*i,f[j-1][k-1]+c[j].b*(i-k));//動態轉移

if(f[n][i]<=m) return

printf("%d",i)&0;//滿足條件就輸出

}puts("-1");//否則

}

Noip模擬考試6 解題報告

peter喜歡玩陣列。noip這天,他從jason手裡得到了大小為n的乙個正整數 陣列。peter求出了這個陣列的所有子段和,並將這n n 1 2個數降序排序,他想 知道前k個數是什麼。不難想到,從最大欄位和向下更新。用set實現 介紹一下set 用法與priority queue基本相同,區別是,...

分塊系列 數列分塊入門6 解題報告

單點插入,單點詢問。分塊的小技巧可多啦 o o哈哈 用乙個vector來記錄每個塊的元素。vector提供了強大的insert函式,插入某個元素只要寫一點點就可以啦o o,就是乙個乙個列舉塊,直到找到插入位置屬於哪個塊,然後insert一下就ok。不過,如果插入元素集中於乙個塊的話就尷尬了qaq複雜...

北郵新生排位賽6解題報告

時間限制 3000 ms 記憶體限制 65536 kb小弱的學校很喜歡修路,現在給你一張他學校的地圖,地圖上有n個點和m條雙向邊,每條邊代表一條路,這條路有可能是暢通,也有可能正在修路。大家都知道修路使得交通很不方便。所有小弱很想學校快快的把路修好,使得他能夠很輕鬆的到達主樓915去刷題。但考慮到學...