专门做房产的网站,网站策划书籍推荐,鲜花网站建设报告,天津市工程建设交易服务中心网站和队友冲了这场#xff0c;极限6题#xff0c;重罚时铁首怎么说#xff0c;前面的A题我贡献了太多的罚时#xff0c;然后我的G题最短路调了一万年#xff0c;因为太久没写了#xff0c;甚至把队列打成了优先队列#xff0c;没把head数组清空完全#xff0c;都是我的锅呜…和队友冲了这场极限6题重罚时铁首怎么说前面的A题我贡献了太多的罚时然后我的G题最短路调了一万年因为太久没写了甚至把队列打成了优先队列没把head数组清空完全都是我的锅呜呜呜队友很给力签到虽然卡了一会但是都开出来了M题队友直接写了个两百多行的大模拟太强了虽然不是正解但是依然感觉很牛逼I题因为时间原因直接去吃饭了不然感觉肯定能开出来其实就是个字符串哈希签到难度 的博弈vp的感觉就是签到交的太快应该让队友check一下再交不差这点时间不然罚时太多感觉能7题啊没关系还有一个月来得及Dashboard - The 19th Zhejiang Provincial Collegiate Programming Contest - CodeforcesA. JB Loves Math奇偶性分类讨论很重要的性质加/减奇数次奇数奇偶性就会变否则奇偶性都不变题意给定a和b让你选定一个奇数x和一个偶数y每次操作可以让a加上x或让a减去y问最少几次操作可以使a变成b思路一开始想的是小分类讨论但是显然不是这样写的当ab时当b-a是奇数时直接加奇数即可如果b-a是偶数的时候如果b-a能被两个奇数表示那么操作次数就是2次否则就是加两次奇数使得a大于b这样奇偶性就和b一样了这样就能减个偶数了这样子就是三次操作Code#include iostream
#include cstring
#include cstdio
#include vector
#include map
#include unordered_map
#include queue
#include set
#define int long long
using namespace std;
using i64 long long;
const int mxn1e510;
const int mxe1e610;
const int mod1e97;int a,b;
void solve(){cinab;if(ab){if((b-a)%21) cout1\n;else {if(((b-a)/2)%2)cout2\n;else cout3endl;}}else if(ab){if((a-b)%21) cout2\n;else cout1\n;}else{cout0\n;}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __1;cin__;while(__--)solve();return 0;
}B JB Loves Comma字符串模拟直接放代码#includebits/stdc.h
using namespace std;
char s[200005],x[]cjb;
int n,l,i,j,k,m;
int main()
{cins;lstrlen(s);for(i0;il-2;i){if(strncmp(si,x,3)0){printf(%c%c%c,,s[i],s[i1],s[i2]);i2;}else printf(%c,s[i]);}for(;il;i)printf(%c,s[i]);
}C. JB Wants to Earn Big Money模拟题意如果a数组里元素小于x答案如果b数组里面元素大于x答案思路直接模拟Code#include iostream
#include cstring
#include cstdio
#include vector
#include map
#include unordered_map
#include queue
#include set
#define int long long
using namespace std;
using i64 long long;
const int mxn1e510;
const int mxe1e610;
const int mod1e97;int n,m,x;
int a[mxn],b[mxn];
void solve(){cinnmx;for(int i1;in;i) cina[i];for(int i1;im;i) cinb[i];int ans0;for(int i1;in;i){if(a[i]x) ans;}for(int i1;im;i){if(b[i]x) ans;}coutans\n;
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __1;//cin__;while(__--)solve();return 0;
}L. Candy MachineProblem - L - Codeforces二分贪心题意给定一个集合让你选取一个子集使得其子集中的元素大于平均值的元素个数尽可能多问最多能有多少元素思路因为是个集合所以考虑排序或哈希因为要使满足条件的元素个数尽可能多那么就是让平均值尽可能小那么就是尽可能选小的数因此考虑从小到大排序去选子集一定是前缀。那么怎么统计出值大于平均值的个数注意到这个问题具有二段性右边的都大于左边的都小于等于因此直接去二分即可Code#includebits/stdc.h
using namespace std;
const int mxn1e610;
#define ll long long
ll n,a[mxn],ans,b[mxn];
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cinn;for(int i1;in;i) cina[i];sort(a1,an1);for(int i1;in;i) b[i]b[i-1]a[i];for(int i2;in;i){ll xupper_bound(a1,ai1,b[i]*1.0/(double)i)-a;ansmax(ans,i-x1);}coutans\n;return 0;
}M. BpbBppbpBB大模拟 or 解方程题意就是让你count给定的图形里面有多少C Type 和 S Type思路不知道怎么做啊正解好像是解方程还好队友是模拟天才写了两百多行的大模拟就过了真 的 牛 逼Code#includebits/stdc.h
using namespace std;
int n,l,j,i,k,m,h,g,f,x,y;
char s1[1200][1200],a[20][20]{##########,##########,##########,####..####,###....###,###....###,####..####,##########,##########,##########,####..####,###....###,###....###,####..####,##########,##########,##########},b[20][20]{#################,#################,#################,####..#####..####,###....###....###,###....###....###,####..#####..####,#################,#################,#################},c[20][20]{##########,##########,##########,####..####,###....###,###....###,####..####,##########,##########,##########},d[]###,e[]####;
int main()
{scanf(%d %d,n,m);for(i0;in;i){scanf(%s,s1[i]);// strcpy(s1[i],s1[i]);}for(i0;in-9;i){for(j0;jm-9;j){if(s1[i][j]0)continue;for(ki;ki10;k){if(strncmp(s1[k]j,b[k-i],17))break;}if(ki10){x;for(hi;hi10;h){memset(s1[h]j,0,17);}j16;}else if(i17n){for(ki;ki17;k){if(strncmp(s1[k]j,a[k-i],10))break;}if(ki17){x;for(hi;hi17;h){memset(s1[h]j,0,10);}j9;}}}}for(i0;in-9;i){for(j0;jm-9;j){if(s1[i][j]0)continue;for(ki;ki10;k){if(strncmp(s1[k]j,c[k-i],10))break;}if(ki10){if(i-40){for(hi-4;hi;h){if(strncmp(s1[h]j,d,3))break;}if(hi){y;for(hi-4;hi;h){memset(s1[h]j,0,3);}for(hi;hi10;h)memset(s1[h]j,0,10);j9;continue;}for(hi-4;hi;h){if(strncmp(s1[h]j7,d,3))break;}if(hi){y;for(hi-4;hi;h){memset(s1[h]j7,0,3);}for(hi;hi10;h)memset(s1[h]j,0,10);j9;continue;}}if(i4n){for(hi1;hi5;h){if(strncmp(s1[h]j,d,3))break;}if(hi5){y;for(hi1;hi5;h){memset(s1[h]j,0,3);}for(hi;hi10;h)memset(s1[h]j,0,10);j9;continue;}for(hi1;hi5;h){if(strncmp(s1[h]j7,d,3))break;}if(hi5){y;for(hi1;hi5;h){memset(s1[h]j7,0,3);}for(hi;hi10;h)memset(s1[h]j,0,10);j9;continue;}}if(j-40){for(hi;hi3;h){if(strncmp(s1[h]j-4,e,4))break;}if(hi3){y;for(hi;hi10;h)memset(s1[h]j,0,10);for(hi;hi3;h){memset(s1[h]j-4,0,4);}j9;continue;}for(hi7;hi10;h){if(strncmp(s1[h]j-4,e,4))break;}if(hi10){y;for(hi;hi10;h)memset(s1[h]j,0,10);for(hi7;hi10;h){memset(s1[h]j-4,0,4);}j9;continue;}}if(j4m){for(hi;hi3;h){if(strncmp(s1[h]j10,e,4))break;}if(hi3){y;for(hi;hi10;h)memset(s1[h]j,0,10);for(hi;hi3;h){memset(s1[h]j10,0,4);}j9;continue;}for(hi7;hi10;h){if(strncmp(s1[h]j10,e,4))break;}if(hi10){y;for(hi;hi10;h)memset(s1[h]j,0,10);for(hi7;hi10;h){memset(s1[h]j10,0,4);}j9;continue;}}}}}// for(i0;in;i){// for(j0;jm;j){// printf(%3d,s1[i][j]);// }// coutendl;// }printf(%d %d,x,y);
}G. Easy GlideProblem - G - Codeforces最短路题意给定起点和终点可以借助一些其他点进行加速问你起点到终点最快能多久思路应该一眼最短路板子题的当时还犹豫了一下直接按时间作为边权建图然后跑最短路就行了但是我调了很久很久甚至把优先队列写成了队列还没把head数组清空完全是谁不会写最短路我不说还好最后AC了Code#include bits/stdc.h
#include iostream
#include cstring
#include cstdio
#include math.h
#include algorithm
#include vector
#include map
#include unordered_map
#include queue
#include set
#define int long long
using namespace std;
using i64 long long;
const int mxn1e610;
const int mxe1e610;
const int mod1e97;
const double eps1e-4;
struct Point{int x,y;
}p[mxn];
struct ty{int to,next;double w;
}edge[mxe1];
struct ty2{int x;double dis;bool operator(const ty2 a) const{return a.disdis;}
};
priority_queuety2 q;
int n,tot0,v1,v2;
int head[mxn],vis[mxn];
double dis[mxn];
void add(int u,int v,double w){edge[tot].ww;edge[tot].tov;edge[tot].nexthead[u];head[u]tot;
}
void init(){tot0;for(int i0;imxn;i) head[i]-1;
}
double dist(int a,int b){return sqrt((p[a].x-p[b].x)*(p[a].x-p[b].x)(p[a].y-p[b].y)*(p[a].y-p[b].y));
}
void dij(int s,int t){for(int i0;in2;i) dis[i]1e9;memset(vis,0,sizeof(vis));q.push({s,0});dis[s]0;while(!q.empty()){ty2 uq.top();q.pop();if(vis[u.x]) continue;vis[u.x]1;//coutu.x\n;for(int ihead[u.x];~i;iedge[i].next){if(vis[edge[i].to]) continue;//if(u.x3) coutedge[i].to\n;if(dis[edge[i].to]dis[u.x]edge[i].w){dis[edge[i].to]dis[u.x]edge[i].w;if(dis[edge[i].to]-0.000412311eps){int pp1;}q.push({edge[i].to,dis[edge[i].to]});}}}
}
void solve(){cinn;init();for(int i1;in;i) cinp[i].xp[i].y;cinp[n1].xp[n1].yp[n2].xp[n2].y;cinv1v2;for(int i1;in;i){for(int ji1;jn;j){add(i,j,max( dist(i,j)/(v2*1.0) , (dist(i,j)-3*v2)/v1*1.03));add(j,i,max( dist(i,j)/(v2*1.0) , (dist(i,j)-3*v2)/v1*1.03));//couti j max( dist(i,j)/(v2*1.0) , (dist(i,j)-3*v2)/v1*1.03)\n;}}//cout\n;for(int j1;jn2;j){add(n1,j,dist(n1,j)/(v1*1.0));add(j,n1,dist(n1,j)/(v1*1.0));//coutn1 j dist(n1,j)/(v1*1.0)\n;}for(int i1;in2;i){if(in1) continue;add(i,n2,max( dist(i,n2)/(v2*1.0) , (dist(i,n2)-3*v2)/v1*1.03));add(n2,i,max( dist(i,n2)/(v2*1.0) , (dist(i,n2)-3*v2)/v1*1.03));//couti n2 max( dist(i,n2)/(v2*1.0) , (dist(i,n2)-3*v2)/v1*1.03)\n;}//cout\n;dij(n1,n2);//coutdis[2]\n;coutfixedsetprecision(9)dis[n2]\n;
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __1;//cin__;while(__--)solve();return 0;
}I. Barbecue简单博弈字符串哈希判回文Problem - I - Codeforces题意思路谁是赢家肯定和字符串size的奇偶性有关那么剩下的问题在于怎么快速判断一个字符串是回文串一个常用的套路就是字符串哈希判回文串我们队无人会串串该加训串串题了Code#include bits/stdc.h
using namespace std;
const int mxn1e610;
const int P131;
string s;
int n,q,l,r;
int p1[mxn],h1[mxn],h2[mxn];
int get2_hash(int l,int r){return h2[l]-h2[r1]*p1[r-l1];
}
int get1_hash(int l,int r){return h1[r]-h1[l-1]*p1[r-l1];
}
void solve(){cinnqs;s s;p1[0]1;for(int i1;in;i){p1[i]p1[i-1]*P;h1[i]h1[i-1]*Ps[i];}for(int in;i1;i--){h2[i]h2[i1]*Ps[i];}while(q--){cinlr;if(get1_hash(l,r)get2_hash(l,r)) coutBudada\n;else{if((r-l1)%21) coutPutata\n;else coutBudada\n;}}
}
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __1;//cin__;while(__--)solve();return 0;
}