日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2015 ICPC 上海

發布時間:2025/6/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2015 ICPC 上海 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

A - An Easy Physics Problem

Not Easy 啊。
給個射線,和一個圓柱體,射線撞到圓柱體會彈射。判斷能否經過給定的點。

折射的時候不能用三角函數旋轉,會被卡精度。

$(x,y)$關于直線$ax+by+c=0$的對稱點坐標$nx=x-2a\frac{ax+by+c}{a^2+b^2}$,$ny=y-2b\frac{ax+by+c}{a^2+b^2}$。

#include <bits/stdc++.h>using namespace std; typedef long long ll; typedef long double db; const db eps = 1e-12; const db pi = 4.0 * atan(1.0);int sgn(db x) {if (x > eps) return 1;if (x < -eps) return -1;return 0; } struct vec {db x, y;vec() {}vec(db _x, db _y): x(_x), y(_y) {}vec rotate(db c) {return vec(x * cos(c) - y * sin(c), x * sin(c) + y * cos(c));} };struct line {vec p, q;line() {}line(vec _x, vec _y): p(_x), q(_y) {} };db ox, oy, r, sx, sy, vx, vy, ex, ey; bool ok;vec solve() {db dx = sx - ox;db dy = sy - oy;db a = vx * vx + vy * vy;db b = 2.0 * (vx * dx + vy * dy);db c = dx * dx + dy * dy - r * r;db delta = b * b - 4.0 * a * c;if (delta > eps && b < -eps) {delta = sqrt(delta);db t2 = (-b - delta) / (2.0 * a);if (t2 < -eps) {ok = 0;return vec(0, 0);} else if (t2 > -eps) {ok = 1;return vec(t2, t2);} else {ok = 1;return vec(0, 0);}}ok = 0;return vec(0, 0); }bool ison1(db sx, db sy, db vx, db vy, db ex, db ey) {//if (sgn(sx - ex) == 0 && sgn(sy - ey) == 0) return 1;db lx = ex - sx;db ly = ey - sy;db dl = lx * vy - vx * ly;if (sgn(dl) == 0) {if (sgn(vx) != 0) {db sg = lx / vx;if (sgn(sg) > 0) return 1;return 0;} else if (sgn(vy) != 0) {db sg = ly / vy;if (sgn(sg) > 0) return 1;return 0;}}return 0; }bool ison2(db sx, db sy, db vx, db vy, db ex, db ey, db t) {//if (sgn(sx - ex) == 0 && sgn(sy - ey) == 0) return 1;db lx = ex - sx;db ly = ey - sy;db dl = lx * vy - vx * ly;if (sgn(dl) == 0) {if (sgn(vx) != 0) {db sg = lx / vx;if (sgn(sg) > 0 && sgn(sg - t) <= 0) return 1;return 0;} else if (sgn(vy) != 0) {db sg = ly / vy;if (sgn(sg) > 0 && sgn(sg - t) <= 0) return 1;return 0;}}return 0; }db get(db sx, db sy, db xx, db yy, db ox, db oy) {db l1 = (sx - xx) * (sx - xx) + (sy - yy) * (sy - yy);l1 = sqrt(l1);db l2 = r;db l3 = (sx - ox) * (sx - ox) + (sy - oy) * (sy - oy);l3 = sqrt(l3);db COS = l1 * l1 + l2 * l2 - l3 * l3;COS /= (2.0 * l1 * l2);db alp = acos(COS);return alp; }vec get2(db sx,db sy,db ox,db oy,db xx,db yy){db A,B,C;A=oy-yy;B=xx-ox;C=ox*yy-xx*oy;db rx=sx-2.0*A*(A*sx+B*sy+C)/(A*A+B*B);db ry=sy-2.0*B*(A*sx+B*sy+C)/(A*A+B*B);return vec(rx,ry); }int main() {//freopen("in.txt", "r", stdin);//printf("%.17Lf\n",pi);//cout<<pi<<endl;int T, cas = 1;cin >> T;while (T--) {cin >> ox >> oy >> r;cin >> sx >> sy >> vx >> vy;cin >> ex >> ey;vec pt = solve();bool flg = 0;//cout<<"#"<<ok<<endl;if (!ok) {if (ison1(sx, sy, vx, vy, ex, ey)) {flg = 1;}} else {if (ison2(sx, sy, vx, vy, ex, ey, pt.x)) {flg = 1;}db xx = sx + vx * pt.x;db yy = sy + vy * pt.x;// db angle = get(sx, sy, xx, yy, ox, oy);// angle = 2.0 * angle - pi;// vec np = vec(vx, vy);// db fx1,fy1,fx2,fy2;// fx1=xx-sx;fy1=yy-sy;// fx2=ox-sx;fy2=oy-sy;// if(sgn(fx1*fy2-fx2*fy1)<0)// np = np.rotate(angle);// else np = np.rotate(-angle);// if (ison1(xx, yy, np.x, np.y, ex, ey)) {// flg = 1;// }vec dxd=get2(sx,sy,ox,oy,xx,yy);//cout<<dxd.x<<" "<<dxd.y<<endl;if(ison1(xx,yy,dxd.x-xx,dxd.y-yy,ex,ey)){flg=1;}}if (flg) {printf("Case #%d: Yes\n", cas++);} else {printf("Case #%d: No\n", cas++);}}return 0; }

B - Binary Tree

似乎是構造題目。J想了一發,得出可以全部用$1$,$2$,...,$2^k$表示出奇數。而且偶數可以-1變成奇數。然后嘗試dp。。。
然后發現對于1變號,相當于-2,其他同理。
于是變成貪心。

#include <bits/stdc++.h>using namespace std; typedef long long ll;int main(){//freopen("in.txt","r",stdin);int T;ll n,k;cin>>T;for(int cas=1;cas<=T;cas++){scanf("%lld%lld",&n,&k);printf("Case #%d:\n",cas);ll s=(1ll<<(k))-1;//cout<<s<<endl;ll t=0;if(n%2==0) n--,t++;for(ll i=0;i<k-1;i++){ll tmp = (s-n)/2/(1ll<<i);//cout<<tmp<<endl;if(tmp%2==0){printf("%lld +\n",1ll<<i);} else {printf("%lld -\n",1ll<<i);s-=1ll<<(i+1);}}ll tmp = (s-n)/2;ll ret = 1ll<<(k-1);if(t) ret++;if(tmp%2==0){printf("%lld +\n",ret);} else {printf("%lld -\n",ret);}}return 0; }

F - Friendship of Frog

#include <bits/stdc++.h> #define maxn 1050 using namespace std; typedef long long ll; int t; char s[maxn]; int Case=1; int main(){//freopen("in.txt","r",stdin);scanf("%d",&t);while(t--){scanf("%s",s+1);int ans=INT_MAX;int len=strlen(s+1);for(int i=1;i<=len;i++){for(int j=i+1;j<=len;j++){if(s[j]==s[i]) ans=min(ans,j-i);}}if(ans==INT_MAX) ans=-1;printf("Case #%d: %d\n",Case++,ans);}return 0; }

K - Kingdom of Black and White

最多改變一次,枚舉計算判斷即可。

#include <bits/stdc++.h>using namespace std; const int maxn = 1e5+55; typedef long long ll; char s[maxn]; int cnt[maxn]; ll res,tmp,temp;int main(){//freopen("in.txt","r",stdin);int T,cas=1;cin>>T;while(T--){scanf("%s",s+1);int len=strlen(s+1);cnt[0]=0;res=tmp=0;for(int i=1;i<=len;i++){if(i!=1&&s[i]==s[i-1])cnt[i]=cnt[i-1]+1;else {tmp+=(ll)cnt[i-1]*cnt[i-1];cnt[i]=1;}}tmp+=(ll)cnt[len]*cnt[len];//cout<<tmp<<endl;for(int i=len-1;i>=1;i--){if(s[i]==s[i+1])cnt[i]=cnt[i+1];}// for(int i=1;i<=len;i++)// printf("%d%c",cnt[i]," \n"[i==len]);res=tmp;for(int i=1;i<=len;i++){if(i==1){if(s[i]==s[i+1]) continue;temp=tmp-1-(ll)cnt[i+1]*cnt[i+1];temp+=(ll)((ll)(cnt[i+1]+1)*(cnt[i+1]+1));if(res<temp) res=temp;} else if(i==len){if(s[i-1]==s[i]) continue;temp=tmp-1-(ll)cnt[i-1]*cnt[i-1];temp+=(ll)((ll)(cnt[i-1]+1)*(cnt[i-1]+1));if(res<temp) res=temp;} else {if(s[i]==s[i-1]&&s[i]==s[i+1]) continue;if(s[i]==s[i-1]&&s[i]!=s[i+1]){temp=tmp-(ll)cnt[i]*cnt[i]-(ll)cnt[i+1]*cnt[i+1];temp+=(ll)(cnt[i]-1)*(cnt[i]-1)+(ll)(cnt[i+1]+1)*(cnt[i+1]+1);if(res<temp) res=temp;} else if(s[i]!=s[i-1]&&s[i]==s[i+1]){temp=tmp-(ll)cnt[i]*cnt[i]-(ll)cnt[i-1]*cnt[i-1];temp+=(ll)(cnt[i]-1)*(cnt[i]-1)+(ll)(cnt[i-1]+1)*(cnt[i-1]+1);if(res<temp) res=temp;} else {temp=tmp-1-(ll)cnt[i-1]*cnt[i-1]-(ll)cnt[i+1]*cnt[i+1];temp+=(ll)(cnt[i-1]+1+cnt[i+1])*(cnt[i-1]+1+cnt[i+1]);if(res<temp) res=temp;}}}printf("Case #%d: %lld\n",cas++,res);}return 0; }

L - LCM Walk

不放設$x<y$,那么一定是由$(x,y')$走到$(x,y)$。
并且$(y-y')=lcm(x,y')$,那么兩者gcd相等,得到等式$z=\frac{x*y}{x+gcd(x,y)}$。
判斷前后gcd相等,不等則break。z表達式得整除(因為1的時候)。

#include <bits/stdc++.h>using namespace std; typedef long long ll; ll ex,ey,lst;ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b); }int main(){//freopen("in.txt","r",stdin);int T,cas=1;cin>>T;while(T--){int cnt = 1;scanf("%lld%lld",&ex,&ey);lst=gcd(ex,ey);while(ex>=1&&ey>=1){if(ex>ey){ll z=(ex*ey)/(ey+gcd(ex,ey));//cout<<ey+gcd(ex,ey)<<endl;ll r=(ex*ey)%(ey+gcd(ex,ey));// cout<<ex<<" "<<ey<<" "<<z<<endl;// cout<<r<<endl;if(r!=0) break;ex-=z;if(gcd(ex,ey)!=lst) break;if(ex>=1) cnt++;} else if(ex<ey){ll z=(ex*ey)/(ex+gcd(ex,ey));ll r=(ex*ey)%(ex+gcd(ex,ey));// cout<<ex<<" "<<ey<<" "<<z<<endl;// cout<<r<<endl;if(r!=0) break;ey-=z;if(gcd(ex,ey)!=lst) break;if(ey>=1) cnt++;} else {break;}}printf("Case #%d: %d\n",cas++,cnt);}return 0; }

轉載于:https://www.cnblogs.com/foreignbill/p/7875658.html

總結

以上是生活随笔為你收集整理的2015 ICPC 上海的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 性色av一区二区 | 欧美性精品 | 国产精品免费av一区二区三区 | 久久久久久少妇 | 人人草网站| 成人乱人乱一区二区三区一级视频 | 日韩在线精品视频一区二区涩爱 | 7799精品视频 | 美女精品视频 | 欧美激情精品久久久久久免费 | 日韩网站视频 | 日本黄xxxxxxxxx100 | 日韩国产成人 | 少妇久久久久久被弄到高潮 | 老女人毛片50一60岁 | 亚洲一区二区三区观看 | 97超碰色 | 豆国产97在线 | 亚洲 | av日韩精品| 亚洲熟伦熟女新五十路熟妇 | 五月婷婷中文字幕 | 精品亚洲aⅴ无码一区二区三区 | 中文字幕乱伦视频 | 涩涩爱在线 | 日韩一级黄色 | 9色视频 | 奇米影视播放器 | 亚洲成人中文 | 欧美sm凌虐视频网站 | 欧美zozo| 中文字幕丰满人伦在线 | 噜噜色成人 | 久久综合伊人 | 专业操老外 | 日韩欧美视频在线播放 | 国内91视频 | 国产精品夜夜夜爽张柏芝 | 天天干夜夜看 | 久久夜色精品国产欧美乱 | 久久久久亚洲av成人人电影 | 久久天| 91美女网站 | 欧美中文网 | 91一区| 亚洲欧美日韩国产一区二区三区 | 国内自拍第二页 | 摸一摸操一操 | 91麻豆产精品久久久久久 | 天天天色综合 | 亚洲砖区免费 | 日韩三级麻豆 | 欧美 亚洲 激情 一区 | xxxx日本少妇 | 久久影片| 国产精品不卡av | 精品国产乱码久久久久久蜜臀 | 亚洲成人中文字幕 | 国产a久久 | 一区二区日本视频 | 久草超碰 | 中文字幕在线观看视频免费 | 国产无遮挡18禁无码网站不卡 | 亚洲啊v在线 | 在线视频欧美一区 | 欧美高清在线视频 | 你懂的网址在线观看 | 九色自拍视频 | 制中文字幕音影 | 成人黄色免费网站 | 五月天婷婷综合 | 欧美一级色片 | 打屁股外国网站 | 欧美色频| 日韩二区在线观看 | 女十八毛片 | 99免费 | 就是喜欢被他干 | 蜜臀aⅴ国产精品久久久国产老师 | 激情综合一区二区三区 | 亚洲欧美中文字幕5发布 | 青春草在线视频免费观看 | 久久av喷吹av高潮av萌白 | 精品人妻一区二区三区三区四区 | 欧美女人天堂 | 国产视频一二三 | 久久久青草 | 日韩欧美网站 | 97午夜| 亚洲国产精品视频一区二区 | 殴美黄色大片 | 色性av| 国产女主播一区二区 | 免费av一区二区 | 国产成人在线视频观看 | 日韩欧美小视频 | 第一福利在线视频 | 日本午夜精华 | 亚洲一区欧美 | av中文字幕免费 |