2023年成都邀請賽解題報告

2021-09-08 17:22:28 字數 3227 閱讀 7515

上海邀請賽前拿2023年的成都邀請賽熱身,比賽結果大大出乎了我們的預期啊。。。沒做出來的幾道題可能還會更新的。

a題:水題。。這題是我敲的。。敲麻煩了。。。sad。。。你們就當沒看見吧。。。

**:

#include #include #include #include #include using namespace std;

int main()

for(i=1;i<11;i++)

for(i=1;i<=10-x;i++)

}for(i=10-x+1;i<=10;i++)

}for(i=0;i<=11;i++)

printf("\n");}}

return 0;

}

e題:不是我做的。。。計算幾何題不想做。。。。隊友說是模板題。

**例如以下:

#include #include #include #include #include using namespace std;

struct point

pt[1005];

struct circle

;struct traingle

;double dis(struct point p,struct point q)

double area(struct traingle ct)

struct circle circumcircle(struct traingle t)

;int main()

else if(((l3*l3)+(l2*l2)<(l1*l1)))

else if(((l1*l1)+(l3*l3)<(l2*l2)))

}else

//printf("%.2lf %.2lf\n",cc.center.x,cc.center.y);

//printf("%.2lf %.2lf\n",cc.r,dis(qq,cc.center));

printf("case #%d: ",k++);

if(dis(qq,cc.center)<=cc.r)

printf("danger\n");

else printf("safe\n");

}return 0;

}

g題:

額。。這題聽學長說是dp?好吧。。無論了,反正我推得規律做出來了。。。

這題的規律在於從***0到***9(x指隨意數,隨意位數,比方12340至12349或111111110至111111119這種)中間,他們的各位和是遞增1的,並且剛好遞增了10,也就是說每個這種10個數的週期都是有且僅僅有1個剛好能被10整除的,所以對於隨意的區間內僅僅要找到有多少個這種週期就可以。然後再遍歷找出前面和後面多餘的。比方5至35,遍歷找到前面多餘的5到9,沒有,再遍歷後面多餘的30到35,沒有,然後中間的10到29是兩個週期,直接加上2.於是2就算出來了。僅僅須要遍歷最多20個數,剩下的能夠計算出來。由於int64被坑了3次wa。。。

**例如以下:

#include #include #include using namespace std;

__int64 num=0, i, j, x, y, t, a, b, s, sum, pos1, pos2, flag1, flag2, z;

int main()

if(sum%10==0)

if(y%10==9)

}if(flag1==1)

if(sum%10==0)

if(y%10==0)}}

if(flag1==1&&flag2==1)

s+=(pos2-pos1+1)/10;

printf("case #%i64d: %i64d\n",num,s);

}return 0;

}

k題:

思路是跟隊友討論的,但**不是我敲的。。細節我也不清楚。。

詳細思路是儲存上下每乙個數字的出現次數,然後依據次數直接計算,而不是乙個個查詢。對於第一位數字須要特判,不能出現9+0的這樣的情況。然後從和為9的組合開始查詢(事實上不能叫查詢。。直接雜湊)。

**例如以下:

#include #include #include using namespace std;

char str1[2000000] ;

char str2[2000000] ;

int main()

if( l == 1 && ( s1[0] == 1 || s2[0] == 1 ) )

else

continue ;

}printf("case #%d: ", tt);

int mm = -1 , m , mi , mj ;

for(i = 1 ; i <= 9 ; i++)

for(j = 1 ; j <= 9 ; j++)}}

printf("%d", mm);

if(mm == 0)

s1[mi]-- ;

s2[mj]-- ;

for(k = 9 ; k >= 0 ; k--)}}

for(i = 9 ; i >= 0 ; i--)

}printf("\n");

}return 0;

}

l題:

這題不難,但非常坑!!這也是我被隊友嫌棄的一道題。。sad。。。沒寫case就直接提交了。。。簡直sad。。。

須要注意的兩個坑點是

1:第乙個人也是會出錯的,所以當發現後面都沒出錯後,那就是第乙個出錯了。

2:假設過程中有乙個人出錯了,那後面的人會跟著錯誤的來,而不是依據正確的來。

僅僅要注意了這兩個坑點,就非常easy了。(幸虧想到了這兩個坑點。。不然會更被隊友嫌棄的。。。。sad。。)

**例如以下:

#include #include #include #include #include using namespace std;

int a[1000000];

int main()

for(i=1;i}

printf("case #%d: ",num);

if(x==1)

printf("%d\n",pos+1);

else

printf("1\n");

}return 0;

}

11年成都網路賽

今天把去年成都的網路賽做了一下,去年是一題不會哇,現在也挺吃力,還有幾題不會,有空再來看 attack 樹狀陣列,這題樹狀陣列節點n記錄的是wall n 和wall n 1 被炮擊的差 include include include includeusing namespace std define...

11年成都網路賽

今天把去年成都的網路賽做了一下,去年是一題不會哇,現在也挺吃力,還有幾題不會,有空再來看 attack 樹狀陣列,這題樹狀陣列節點n記錄的是wall n 和wall n 1 被炮擊的差 include include include includeusing namespace std define...

2014上海邀請賽解題報告

難得能把整套題目做完,留個痕跡小小激動一下 這套題難度不大,雖然有些題目的題意描述得有點晦澀 先這裡簡單列舉一下吧,詳細的解題報告後面的鏈結。a.game with pearls 解題報告 貌似各種技巧能過,不過我想都沒想,粗暴地丟了個二分匹配上去。b.beam cannon 解題報告 線段樹 按照...