美术馆网站建设网站开发人员的职能
web/
2025/9/28 10:08:44/
文章来源:
美术馆网站建设,网站开发人员的职能,怎么样做一个网站,网站 图标 素材反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍然认为不可实现 0分 所以T1是什么样的难题呢 即使暴力也有60分,但我楞没想出来暴力怎么打… 反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍然认为不可实现 0分 所以T1是什么样的难题呢 即使暴力也有60分,但我楞没想出来暴力怎么打 然后我就挂掉了 t2又是什么样难题 大多数人秒切一个小时切两道, 但这次考试给了我很大启迪,也正是这次考试我才开始使劲刚T1 其实大多数T1都是比较简单的,并没有想象中那么难,这次考试对我来说意义很大 (就在模拟测试21我也认为T1很难坚持刚其实T1还是很简单的) count 题解 一共有多少种方案可以把这棵树分成大小相同的几块 题干简洁明了, 性质:我们如果能分成大小相同全为$size$大小的几块,那么只有一种方案分成大小全为$size$ 有了这条性质我们就可以愉快的打了 枚举所有n的约数打了就$AC$了(还有不要暴力枚举约数,先根号n求一下约数) 实现,假设当前我们发现这个子树累计$size$达到了约数就剪掉这个枝条 若减不掉就累加到父亲上,如果父亲减不掉且$size$已经比当前枚举约数大了,那么当前方案不可行,否则方案$$ 例如我们枚举约数3,我们在3减不掉,5减不掉,累加到2,2判断size大了所以不可行 bool dfs(ll x,ll pre,ll num){sz[x]1;for(ll ihead[x];i;inxt[i]){ll yver[i];if(ypre) continue;if(!dfs(y,x,num)) return 0;sz[x]sz[y];if(sz[x]num) return 0;}
// printf(sz%lld \n,sz[x]);if(sz[x]num) sz[x]0;return 1;
} 代码 #includebits/stdc.h
using namespace std;
#define ll int
#define A 2999989
ll sz[A],ver[A],nxt[A],head[A];
ll ans2,tot1,n,m;
vectorll woshishabi;
void add(ll x,ll y){ver[tot]y,nxt[tot]head[x],head[x]tot;
}
inline ll read(){ll x0,f1;char cgetchar();while(!isdigit(c)){if(c-)f-1;cgetchar();}while(isdigit(c)){xx*10c-0;cgetchar();}return f*x;
}
bool dfs(ll x,ll pre,ll num){sz[x]1;for(ll ihead[x];i;inxt[i]){ll yver[i];if(ypre) continue;if(!dfs(y,x,num)) return 0;sz[x]sz[y];if(sz[x]num) return 0;}
// printf(sz%lld \n,sz[x]);if(sz[x]num) sz[x]0;return 1;
}
int main(){nread();for(ll i1,a,b;in;i){aread(),bread();add(a,b);add(b,a);}for(ll i2;isqrt(n);i){if(n%i0){if(i*in) woshishabi.push_back(i);elsewoshishabi.push_back(i),woshishabi.push_back(n/i);}}for(ll i0;iwoshishabi.size();i){if(dfs(1,0,woshishabi[i])){ans;}
// printf(%lld ans%lld\n,woshishabi[i],ans);}coutansendl;
} dinner 题解 不错的题意转化 分成个数最少的环,每个环总权值最大的最小 最大的最小?? 二分答案 一个很好的二分答案题,让我明白了我们枚举其实可以拿分块优化一下 暴力应该都会打吧 枚举圈的数量,这里讲一下$check$ 我采取的是首先找到一个圈,找到最左可以到达的值,以及到达最左后到达右面节点,这已经$1$个圈了 每次枚举剩下的值,若当前符合直接返回,不符合最左指针$$,右面指针跟着移动,进行操作知道最左达到$n1$ 这样一般过不了(然而我暴力$nian$标算了)我打法玄学 while(nowtim){tl--;nowa[tl];}now-a[tl],tl;while(nowtim){tr;nowa[tr];}now-a[tr],tr--;//一个完美的闭合回路while(tl!n2){cnt2;tot0;
// printf(tl%lld tr%lld \n,tl,tr);//除了当前满足的tl,tr之外的圈的另一半for(LL jtr1;jtln-1;j){if(tottim)tota[j],cnt;if(cntm){cntm10;break;}}
// printf(cnt%lld\n,cnt);if(cntm)return 1;now-a[tl];tl;while(nowtim){tr;nowa[tr];}now-a[tr],tr--;}return 0;
} 主要讲剪枝 就一句话特别简单 if(jttln-1sum[jt]-sum[j-1]tottim){tot(sum[jt]-sum[j-1]);jt;continue;} 能t加就加t,一句小的剪枝让你从$T60$分到$100$分,从$3000$--$200$(虽然我暴力跑了$100$) 方法简单, 一定要掌握这种思想 代码 #includebits/stdc.h
using namespace std;
#define LL long long
#define A 1010101
LL a[A],sum[A];
LL n,m,ans,avg,mx-1,t;
LL check(LL tim){LL now0,tln1,trn1,tot,cnt0;nowa[n1];
// printf(now%lld\n,now);while(nowtim){tl--;nowa[tl];}now-a[tl],tl;while(nowtim){tr;nowa[tr];}now-a[tr],tr--;//一个完美的闭合回路while(tl!n2){cnt2;tot0;
// printf(tl%lld tr%lld \n,tl,tr);//除了当前满足的tl,tr之外的圈的另一半for(LL jtr1;jtln-1;j){if(jttln-1sum[jt]-sum[j-1]tottim){tot(sum[jt]-sum[j-1]);jt;continue;}tota[j];if(tottim)tota[j],cnt;if(cntm){cntm10;break;}}
// printf(cnt%lld\n,cnt);if(cntm)return 1;now-a[tl];tl;while(nowtim){tr;nowa[tr];}now-a[tr],tr--;}return 0;
}
int main(){scanf(%lld%lld,n,m);tsqrt(n);for(LL i1;in;i){scanf(%lld,a[i]);a[in]a[i];mxmax(mx,a[i]);}for(LL i1;i2*n;i)sum[i]sum[i-1]a[i];LL lmx,rsum[n];while(lr){LL mid(lr)1;if(check(mid)) rmid-1,ansmid;else lmid1;}printf(%lld\n,ans);
} chess 题解 知道了正解也难以实现打了$4$个小时,我最后还是颓了标程,然而刚看$10$秒就明白怎么做并用$10$分钟$AC$ 首先我们要掌握一种科技最短路计数 然而敌军不能对方案造成影响,考虑缩边 那么题解中说缩边缩边,怎么缩啊 我尝试跑两遍$spfa$(伪缩边)然而只有$20$分 尝试$tarjan$(伪缩边)然而只有$0$分 尝试对拍小点全对,大点全错 好难实现,考虑每个点$dfs?$ 能过?,能过最多每个点搜每个点一遍善用复杂度分析$2500^2$ 那么$dfs$搜些什么, 既然敌军不能对方案造成影响,遇到敌军往下搜但不建边,遇到空格return并且建边 建单向边,这样我们就缩边了 很巧妙不是吗? 注意答案可能很大开0x7ffffffffffffffffffff 代码 #includebits/stdc.h
using namespace std;
#define ll long long
#define A 51000
ll head[A],nxt[A],ver[A],way[A],dis[A],G[51][51],mzz[51][51];
ll F[58][58];
ll qix,qiy,zhongx,zhongy;
bool flag[A];
ll tot0,n,m;
ll id(ll x,ll y){return (x-1)*my;
}
void jb(ll x,ll y){//建边
// printf(jbjbjbjbx%lld y%lld\n,x,y);nxt[tot]head[x],head[x]tot,ver[tot]y;
}
const ll nowx[9]{0,2,2,1,-1,-2,-2,1,-1};
const ll nowy[9]{0,1,-1,2,2,1,-1,-2,-2};
void dfs(ll root,ll x,ll y){G[x][y]1;
// printf(x%lld y%lld\n,x,y);for(ll i1;i8;i){ll x1nowx[i]x,y1nowy[i]y;
// printf(x%lld y%lld x1%lld y1%lld\n,x,y,x1,y1);if(x11||x1n||y11||y1m||G[x1][y1]) continue;if(F[x1][y1]1)dfs(root,x1,y1);else G[x1][y1]1,jb(root,mzz[x1][y1]);}
}
/*void spfa(ll w){dequellq;memset(dis,0x3f,sizeof(dis));memset(flag,0,sizeof(flag));dis[w]0;q.push_back(w);while(!q.empty()){ll xq.front();q.pop_front();flag[x]0;for(ll ihead[x];i;inxt[i]){ll yver[i];if(dis[y]dis[x]edge[i]){if(edge[i]0)choose[y]x;dis[y]dis[x]edge[i];
// printf(x%lld y%lld dx%lld dy%lld\n,x,y,dis[x],dis[y]);
// if(x59||y59){
// printf(***********\n);
// }if(!flag[y]){q.push_back(y);flag[y]1;}}}}
}*/
void spfa2(ll w){dequellq;memset(dis,0x7f,sizeof(dis));memset(flag,0,sizeof(flag));dis[w]0;q.push_back(w);while(!q.empty()){ll xq.front();q.pop_front();flag[x]0;
// printf(x%lld\n,x);for(ll ihead[x];i;inxt[i]){ll yver[i];if(dis[y]dis[x]1){way[y]way[x];dis[y]dis[x]1;if(!flag[y]){q.push_back(y);flag[y]1;}}else if(dis[y]dis[x]1){way[y]way[x];}}}
}
int main(){scanf(%lld%lld,n,m); for(ll i1;in;i)for(ll j1;jm;j){mzz[i][j]id(i,j);
// printf(mzz[%lld][%lld]%lld\n,i,j,mzz[i][j]);}for(ll i1;in;i)for(ll j1;jm;j){scanf(%lld,F[i][j]); if(F[i][j]3)qixi,qiyj;else if(F[i][j]4)zhongxi,zhongyj;}for(ll i1;in;i)for(ll j1;jm;j){if(F[i][j]0||F[i][j]3){memset(G,0,sizeof(G));dfs(mzz[i][j],i,j);}}
/* for(ll i1;in;i)for(ll j1;jm;j){ if(F[i][j]2) continue;for(ll k1;k8;k){ll x1inowx[k],y1jnowy[k];ll idpreid(i,j),idnowid(x1,y1);if(x11||x1n||y11||y1m) continue;if(F[x1][y1]2) continue;if(!G[idpre][idnow]){if(F[x1][y1]1||F[x1][y1]4)jb(idpre,idnow,0),G[idpre][idnow]1;elsejb(idpre,idnow,1),G[idpre][idnow]1;}}if(F[i][j]3)qixi,qiyj;else if(F[i][j]4)zhongxi,zhongyj;}
*/ way[mzz[qix][qiy]]1;
// printf(%lld\n%lld\n,dis[id(zhongx,zhongy)],way[id(zhongx,zhongy)]);spfa2(mzz[qix][qiy]);if(dis[mzz[zhongx][zhongy]]1e8) printf(-1\n);elseprintf(%lld\n%lld\n,dis[mzz[zhongx][zhongy]]-1,way[mzz[zhongx][zhongy]]);
} 转载于:https://www.cnblogs.com/znsbc-13/p/11366081.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83274.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!