上海邀請賽前拿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 解題報告 線段樹 按照...