1001 Minimum’s Revenge

点的编号从 1 到 n ,u  v 的边权是 LCM(u,v) ,求这个图的最下生成树

搞成一颗以 1 为 根 的菊花树

------------------------------------

比赛的时候看过的人好少,都没有看这道题

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. typedef long long LL;
  8. LL n;
  9.  
  10. int main(){
  11. int T,kase = ;
  12. scanf("%d",&T);
  13. while(T--){
  14. scanf("%I64d",&n);
  15. LL ans = n*(n+)/2LL - 1LL;
  16. printf("Case #%d: %I64d\n",++kase,ans);
  17. }
  18. return ;
  19. }

1002 Prediction

1003 Mr. Frog’s Problem

1004 Coconuts

把坐标离散化之后,再dfs下连通块

----------------------------------------

自己想的时候,是想去直接算坏点包围起来的好的点...但是这样好麻烦..应该直接就dfs好的点

然后就是 坐标的离散化也没有写过..

最后忘记给答案排序..从早上wa 到现在...TAT

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <vector>
  6. #include <map>
  7. using namespace std;
  8.  
  9. const int maxn = ;
  10. typedef long long LL;
  11. int x[maxn],y[maxn],xx[maxn],yy[maxn],vis[maxn][maxn];
  12. int lix[maxn],liy[maxn],totx,toty,cx,cy;
  13. int n,m,k;
  14. LL cnt;
  15. int dx[] = {,-,,};
  16. int dy[] = {,,,-};
  17.  
  18. map<int,int> X,Y;
  19.  
  20. int ok(int x,int y){
  21. return x >= && x <= cx && y >= && y <= cy;
  22. }
  23.  
  24. void dfs(int x,int y){
  25. vis[x][y] = ;
  26. cnt += 1LL*xx[x] * yy[y];
  27. for(int i = ;i < ;i++){
  28. int nx = x + dx[i];
  29. int ny = y + dy[i];
  30. if(!ok(nx,ny) || vis[nx][ny]) continue;
  31. dfs(nx,ny);
  32. }
  33. }
  34.  
  35. void solve(){
  36. memset(vis,,sizeof(vis));
  37. for(int i = ;i <= k;i++){
  38. int u = X[x[i]];
  39. int v = Y[y[i]];
  40. vis[u][v] = ;
  41. }
  42.  
  43. vector<LL> ans;
  44. for(int i = ;i <= cx;i++){
  45. for(int j = ;j <= cy;j++){
  46. if(vis[i][j]) continue;
  47. cnt = 0LL;
  48. // printf("i = %d j = %d \n",i,j);
  49. dfs(i,j);
  50. ans.push_back(cnt);
  51. }
  52. }
  53. int sz = ans.size();
  54. printf("%d\n",sz);
  55. if(sz == ) return;
  56. sort(ans.begin(),ans.end());
  57. for(int i = ;i < sz-;i++) printf("%lld ",ans[i]);
  58. printf("%lld\n",ans[sz-]);
  59. }
  60.  
  61. int main(){
  62. int T,kase = ;
  63. scanf("%d",&T);
  64. while(T--){
  65. scanf("%d %d %d",&n,&m,&k);
  66. totx = toty = ;
  67. lix[++totx] = liy[++toty] = ;
  68. lix[++totx] = m;liy[++toty] = n;
  69. for(int i = ;i <= k;i++){
  70. scanf("%d %d",&y[i],&x[i]);
  71. lix[++totx] = x[i];
  72. liy[++toty] = y[i];
  73. }
  74. sort(lix+,lix+totx+);
  75. totx = unique(lix+,lix+totx+) - (lix+);
  76. sort(liy+,liy+toty+);
  77. toty = unique(liy+,liy+toty+) - (liy+);
  78.  
  79. X.clear();Y.clear();
  80. cx = ,cy = ;
  81. for(int i = ;i <= totx;i++){
  82. if(lix[i] != lix[i-]+) xx[++cx] = lix[i] - lix[i-] - ;
  83. xx[++cx] = ;
  84. X[lix[i]] = cx;
  85. }
  86. for(int i = ;i <= toty;i++){
  87. if(liy[i] != liy[i-]+) yy[++cy] = liy[i] - liy[i-] - ;
  88. yy[++cy] = ;
  89. Y[liy[i]] = cy;
  90. }
  91.  
  92. printf("Case #%d:\n",++kase);
  93. solve();
  94. }
  95. return ;
  96. }

1005 Mr. Frog’s Game

1006 Auxiliary Set

给出一颗树, q 个询问,每个询问给出  m 个非重要的点

询问的答案 是 重要的点的个数,重要的点有两种,一种 是 本来就是重要的点,另一种是两个重要的点的 lca

按照深度排序,排序之后,每次就可以扫一遍 这 m 个点,看当前点的儿子,如果有大于等于2个儿子是重要或者被标记的,就可以了

---------------------------------------------

忘记memset vis  一直一直一直 wa

感觉自己写代码老是很粗心。。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <vector>
  6. using namespace std;
  7.  
  8. const int maxn = 2e5+;
  9. int n,m,k;
  10. vector<int> g[maxn];
  11. int a[maxn],b[maxn],fa[maxn],vis[maxn],dep[maxn],ans[maxn];
  12.  
  13. int col,num;
  14.  
  15. struct node{
  16. int x;
  17. int d;
  18. }p[maxn];
  19.  
  20. int cmp(node n1,node n2){
  21. return n1.d > n2.d;
  22. }
  23.  
  24. Dfs(int u,int pre,int d){
  25. fa[u] = pre;
  26. dep[u] = d;
  27. for(int i = ;i < g[u].size();i++){
  28. int v = g[u][i];
  29. if(v == pre) continue;
  30. fa[v] = u;
  31. Dfs(v,u,d+);
  32. }
  33. }
  34.  
  35. int kase;
  36.  
  37. void solve(){
  38. memset(fa,,sizeof(fa));
  39. memset(dep,,sizeof(dep));
  40. memset(a,,sizeof(a));
  41. memset(vis,,sizeof(vis));
  42. Dfs(,,);
  43. for(int i = ;i <= m;i++){
  44. col = i;
  45. scanf("%d",&k);
  46. int x;
  47. for(int j = ;j <= k;j++){
  48. scanf("%d",&x);
  49. p[j].x = x;
  50. p[j].d = dep[x];
  51. a[x] = col;
  52. }
  53. sort(p+,p+k+,cmp);
  54. int res = n-k;
  55. for(int j = ;j <= k;j++){
  56. int u = p[j].x;
  57. int cc = ;
  58. for(int z = ;z < g[u].size();z++){
  59. int v = g[u][z];
  60. if(v == fa[u]) continue;
  61. if(a[v] != col || vis[v] == col){
  62. vis[v] = vis[u] = col;
  63. cc++;
  64. }
  65. if(cc >= ) break;
  66. }
  67. if(cc >= ) res++;
  68. }
  69. ans[i]= res;
  70. //printf("res = %d\n",res);
  71. }
  72. printf("Case #%d:\n",++kase);
  73. for(int i = ;i <= m;i++) printf("%d\n",ans[i]);
  74. }
  75.  
  76. int main(){
  77. int T;
  78. scanf("%d",&T);
  79. kase = ;
  80. while(T--){
  81. scanf("%d %d",&n,&m);
  82. int u, v;
  83. for(int i = ;i <= n;i++) g[i].clear();
  84. for(int i = ;i < n;i++){
  85. scanf("%d %d",&u,&v);
  86. g[u].push_back(v);
  87. g[v].push_back(u);
  88. }
  89. solve();
  90. }
  91. return ;
  92. }

1007 Birthday Gift

1008 Basic Data Structure

1009 GCD

1010 Mission Possible

1011 Backpack on Tree

10.6 CCPC northeast的更多相关文章

  1. CCPC、Petrozavodsk Camp、OpenCup 题解汇总

    省赛 \([\text{2021.11.30}]\) 2021 Jilin Collegiate Programming Contest 全部完成. \([\text{2021.12.25}]\) 2 ...

  2. Ubuntu 14.10 下grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  3. CCPC总结

    [印象·南阳] 10月15日出发,威海—烟台—郑州—南阳,一路上欢声笑语,从谁是卧底到各类纸牌游戏,也是欢乐.在从郑州到南阳的车上,对面的好像是河南当地的学长,感叹道工作不易的样子,说还是学生时代最为 ...

  4. 2017 CCPC Qinhuangdao Site

    A. Balloon Robot 假设机器人$0$时刻位于$0$号位置,那么每个气球所需的时间为$(s_a-b)\bmod m$. 将所有气球按这个时间排序,枚举每个气球的时间作为偏移量,得出最优解即 ...

  5. 2018.10.25 CCSP马拉松摸铜归来

    24号体测跑50+1000米. 50米抢跑被罚重跑???然后老年人就只能吊着一口仙气跑第二次50米.然后跑1000米,然后再到宿舍收拾行李赶往地铁站,然后再冲到火车站...(卒) 宾馆,三人挤入二人房 ...

  6. 2017 ccpc哈尔滨 A题 Palindrome

    2017 ccpc哈尔滨 A题 Palindrome 题意: 给一个串\(T\),计算存在多少子串S满足\(S[i]=S[2n−i]=S[2n+i−2](1≤i≤n)\) 思路: 很明显这里的回文串长 ...

  7. 2018 CCPC 桂林游记

    TYPE: Onsite Contest NAME: 2018 - CCPC - Guilin PLAT: HUSTOJ TIME: 2018/10/28 09:00-14:00 CST LOCA: ...

  8. ccpc 网络赛 hdu 6155

    # ccpc 网络赛 hdu 6155(矩阵乘法 + 线段树) 题意: 给出 01 串,要么询问某个区间内不同的 01 子序列数量,要么把区间翻转. 叉姐的题解: 先考虑怎么算 \(s_1, s_2, ...

  9. HDU 6271 Master of Connected Component(2017 CCPC 杭州 H题,树分块 + 并查集的撤销)

    题目链接  2017 CCPC Hangzhou Problem H 思路:对树进行分块.把第一棵树分成$\sqrt{n}$块,第二棵树也分成$\sqrt{n}$块.    分块的时候满足每个块是一个 ...

随机推荐

  1. OPTM-Optimal Marks-SPOJ839最小割

    You are given an undirected graph G(V, E). Each vertex has a mark which is an integer from the range ...

  2. php编译安装报错:make: *** [sapi/cli/php] Error 1 解决办法

    ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':/ext/iconv/iconv.c:2491: undefin ...

  3. mysql 实现 start with

    自己写service----> 传入map(idsql,rssql,prior)   idsql 查询id   rssql 查询结果集    调用 以下方法 @param ids 要查询的起始 ...

  4. jQuery学习笔记(一)jQuery选择器

    目录 jQuery选择器的优点 基本选择器 层次选择器 过滤选择器 表单选择器 第一次写博客,希望自己能够长期坚持,以写博客的方式作为总结与复习. 最近一段时间开始学习jQuery,通过写一个jQue ...

  5. Latex图片显示问题(1)

    用latex编译后,若用dvipdf生成pdf文件,则其中有个eps图的左侧会显示不完全:若是用dvips--pspdf生成pdf文件,图像显示没问题. 这种情况的问题出在,加载 graphicx 宏 ...

  6. Django + mysql 快速搭建简单web投票系统

    了解学习pyhton web的简单demo 1. 安装Django, 安装pyhton 自行百度 2. 执行命令创建project  django-admin.py startproject mysi ...

  7. pandas处理数据

    读文件 pd.read_csv('path/to/file.txt',header=0,names='ab',index=0) names Columns这个可以不写,制定索引列是第一列,这样就没有序 ...

  8. HBase的Write Ahead Log (WAL) —— API与基本概念

    HBase的数据写入操作,会先记录到HLog中,再真正写入到MemStore中.前者是对写入友好的格式,后者是对查询友好的格式.所以前者吞吐量更高,写入成功率大,提高了系统的可靠性,“基本”可以实现宕 ...

  9. sublime text2 换主题

    网上看到一款喜欢的主题,换掉初始的主题,感觉颜色浅一点会比较好看,看中了下面这款. 后来看到有在 github 上的人做的 ,这是地址 ,上面也有详细的如何更改的步骤,下面是我自己这里做个备份. 1. ...

  10. win7 32位安装php redis驱动

    根据php版本下载php_redis扩展,然后把php_redis.dll这个扩展文件放到php中的ext文件夹中,然后再去php-ini中添加一行代码:extension=php_redis.dll ...