文章目录

  • 1001.Theramore
  • 1007.Darnassus
  • 1008.Orgrimmar
  • 1011.Stormwind

1001.Theramore

易知,字符串的奇偶项之间不会互换,只需要奇偶分别排序即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){vector<int>odd,even;string s;cin>>s;for( int i=0;i<s.size();i++){if(i%2) odd.push_back(s[i]-'0');else even.push_back(s[i]-'0');}sort(odd.begin(),odd.end());sort(even.begin(),even.end());for( int i=0;i<s.size();i++){if(i%2){cout<<odd[i/2];}else cout<<even[i/2];}cout<<"\n";
}
signed main(){int t;cin>>t;while(t--){solve();}
}

1007.Darnassus

kruskal最小生成树算法
若使用暴力法,则共有n^2条边,时间复杂度过高。
可以考虑通过边的取值范围来限制问题的规模,由于每条边的长度至多为
n-1,因此|i-j||pi-pj|至少有一个小于sqrt(n-1)这样可以将问题的规模降至n*sqrt(n)再使用桶排序对所有的边进行排序,最后使用kruskal算法得出答案。

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
struct dsu
{const int n;vector<int>a;dsu( int n):n(n+1),a(n+1){for( int i=0;i<n+1;i++) a[i]=i;}//y向x合并void unite(int x, int y) {a[find(y)] = find(x);}int find(int u) {return a[u] == u ? a[u] : a[u] = find(a[u]);}
};
ll solve(){int n;cin>>n;vector<int>v1(n+1),v2(n+1);vector<vector<pair<int,int>>>val(n);dsu d(n+1);int cnt=0;for( int i=1;i<=n;i++){cin>>v1[i];}for( int i=1;i<=n;i++){v2[v1[i]]=i;}for( int i=1;i<=n;i++){for( int j=i+1;j<=n;j++){if(1ll*abs(i-j)*abs(i-j)>=n) break;int x=abs(i-j)*abs(v1[i]-v1[j]);if(x<n)val[x].push_back({i,j});x=abs(i-j)*abs(v2[i]-v2[j]);if(x<n)val[x].push_back({v2[i],v2[j]});}}   ll ans=0;for( int i=1;i<n;i++){for( auto it:val[i]){int x=it.first,y=it.second;if(d.find(x)!=d.find(y)){ans+=i;d.unite(x,y);}}}return ans;}
signed main(){std::ios::sync_with_stdio(false);//消除输入输出缓存std::cin.tie(0);//解除cin与cout的绑定,加快速率。int t;cin>>t;while(t--){cout<<solve()<<"\n";}    // system("pause");
}

1008.Orgrimmar

求一棵树的最大分离集的大小,只需要分状态dp即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll solve(){int n;cin>>n;vector<vector<int>>g(n+1);for( int i=0;i<n-1;i++){int x,y;cin>>x>>y;g[x].push_back(y);g[y].push_back(x);}vector<array<int,3>>dp(n+1);auto dfs=[&](auto self, int rt,int fa)->void{dp[rt][0]=dp[rt][1]=1;int x=1e9,y=0;int sum=0;for( auto it:g[rt]){if(it==fa) continue;else {self(self,it,rt);dp[rt][0]+=dp[it][2];x=min(x,dp[it][2]-dp[it][0]);sum+=dp[it][2];dp[rt][2]+=max({dp[it][0],dp[it][1],dp[it][2]});}}     dp[rt][1]+=max({sum,sum-x});             };dfs(dfs,1,0);return max({dp[1][0],dp[1][1],dp[1][2]});}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int size(512<<20);  // 512M__asm__ ( "movq %0, %%rsp\n"::"r"((char*)malloc(size)+size));// YOUR CODEint t;cin>>t;while(t--){cout<<solve()<<"\n";}exit(0);
}

1011.Stormwind

将一个矩形切割成若干个矩形,只需枚举长的方向上被切的数量,再计算宽上对应的被切割成的数量。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll solve(){ll n,m,k;cin>>n>>m>>k;ll ans=0;for( ll i=1;i<=n;i++){ll area=(n/i)*m;if(area<k) continue;ll j=min(m,area/k);while(j!=0&&(n/i)*(m/j)<k){j--;}if(j<=0) continue;ans=max(ans,i+j-2);}return ans;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--){cout<<solve()<<"\n";}system("pause");}

2022杭电多校第八场相关推荐

  1. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  2. 2021杭电多校第八场补题

    比赛传送门:Contest Problem List (hdu.edu.cn) 1006)GCD Game 题目翻译:爱丽丝和鲍勃正在玩游戏. 他们轮流操作.有n个数字,a1,a2,...,an.每次 ...

  3. 2022 年杭电多校第八场补题记录

    A Theramore 题意:给定一个长度为 nnn 的 010101 串,每次可以选取一个奇数长度的连续子串进行位置上的翻转,问经过若干次操作能得到的字典序最小的串.n≤5×105n \leq 5\ ...

  4. [枚举]Stormwind 2022杭电多校第8场 1011

    Problem Description \space \space  "So, people of Stormwind! Let us unite this day. Let us rene ...

  5. 2022杭电多校赛第八场

    2022杭电多校赛第八场 文章目录 2022杭电多校赛第八场 1004.Quel'Thalas 1001.Theramore 1011.Stormwind 1008.Orgrimmar 1005.Ir ...

  6. 2022杭电多校(十)

    2022杭电多校(十) 文章目录 2022杭电多校(十) 一.比赛小结 二.题目分析及解法(基础题) 1001.Winner Prediction 1003.Wavy Tree 1004.Averag ...

  7. 2022杭电多校(二)

    2022杭电多校(二) 文章目录 2022杭电多校(二) 一.比赛小结 二.题目分析及解法(基础题) 1001.Static Query on Tree 1002.C++ to Python 1003 ...

  8. 2022杭电多校(四)

    2022杭电多校(四) 文章目录 2022杭电多校(四) 一.比赛小结 二.题目分析及解法(基础题) 1001.Link with Bracket Sequence II 1002.Link with ...

  9. 2022杭电多校(一)

    2022杭电多校(一) 文章目录 2022杭电多校(一) 一.比赛小结 二.题目分析及解法(基础题) 1001.String 1002.Dragon slayer 1003.BackPack 1004 ...

最新文章

  1. 华为用MySQL还是oracle_25.Oracle和Mysql的区别
  2. sql中如何统计各种零件的总数量_[Python]提取数据库中数据, 用人货场的分析方法, 对电商双十一促销活动结果数据进行复盘分析...
  3. EEG伪影详解和过滤工具的汇总(二)
  4. 【金三银四】java是世界上最好的语言
  5. just found out why the group by does not work for my app, but work for SCN exercise
  6. JavaScript 元编程
  7. Python中,.join()的用法
  8. TensorFlow精进之路(七):关于两层卷积神经网络对CIFAR-10图像的识别
  9. Java 接入微信小程序-登录+支付完整流程实战(环境搭建+源码),网友:看完后秒懂!...
  10. 【历史上的今天】9 月 16 日:乔布斯的归来;苹果崛起;易语言发布
  11. 汇总报表与合并报表之如何汇总报表
  12. 计算机cd立体太极图,太极图是三维立体的
  13. RFQ 、IFB、RFP 、RFI的区别是什么
  14. android手势识别国内外研究现状,基于Android平台的视觉手势识别研究
  15. [Android] 我的听书 谷歌版是一个帮助大家播放听书网站的播放器
  16. AD 删除原理图图纸外的器件
  17. 阿尔茨海默病与正常衰老中的脑萎缩研究进展
  18. CDN,P2P,PCDN的区别?
  19. ls、ls -a、ls -l、ls -al、ll、ll -a区别
  20. LVGL V8之border styles

热门文章

  1. 微信公众号测试账号总结
  2. html中 导航条置顶的代码,一个DIV+CSS代码布局的简单导航条
  3. 国家开放大学-农村社会学-形考作业3社会问题的调查报告
  4. 50ETF期权与期货的区别
  5. iOS 加载GIF图片
  6. 无我编程的10条诫律
  7. 第13节 IIS之WEB服务器部署及网站发布——以win2003为例
  8. 新媒体运营的岗位晋升路线是怎么样的? 新媒体管理师是趋势吗?
  9. 中国最大–深圳企业列表
  10. (用函数解决)Python报数游戏,输入有n个人按顺序编号,从第一个人报数,输入报数k,从1到k,报到k的退出游戏,从下一个人继续游戏,并求最后剩下的人编号是几号。