1001 Minimum’s Revenge

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

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

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

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

 #include <cstdio>
#include <cstring>
#include <cstring>
#include <algorithm>
using namespace std; typedef long long LL;
LL n; int main(){
int T,kase = ;
scanf("%d",&T);
while(T--){
scanf("%I64d",&n);
LL ans = n*(n+)/2LL - 1LL;
printf("Case #%d: %I64d\n",++kase,ans);
}
return ;
}

1002 Prediction

1003 Mr. Frog’s Problem

1004 Coconuts

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

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

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

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

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

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std; const int maxn = ;
typedef long long LL;
int x[maxn],y[maxn],xx[maxn],yy[maxn],vis[maxn][maxn];
int lix[maxn],liy[maxn],totx,toty,cx,cy;
int n,m,k;
LL cnt;
int dx[] = {,-,,};
int dy[] = {,,,-}; map<int,int> X,Y; int ok(int x,int y){
return x >= && x <= cx && y >= && y <= cy;
} void dfs(int x,int y){
vis[x][y] = ;
cnt += 1LL*xx[x] * yy[y];
for(int i = ;i < ;i++){
int nx = x + dx[i];
int ny = y + dy[i];
if(!ok(nx,ny) || vis[nx][ny]) continue;
dfs(nx,ny);
}
} void solve(){
memset(vis,,sizeof(vis));
for(int i = ;i <= k;i++){
int u = X[x[i]];
int v = Y[y[i]];
vis[u][v] = ;
} vector<LL> ans;
for(int i = ;i <= cx;i++){
for(int j = ;j <= cy;j++){
if(vis[i][j]) continue;
cnt = 0LL;
// printf("i = %d j = %d \n",i,j);
dfs(i,j);
ans.push_back(cnt);
}
}
int sz = ans.size();
printf("%d\n",sz);
if(sz == ) return;
sort(ans.begin(),ans.end());
for(int i = ;i < sz-;i++) printf("%lld ",ans[i]);
printf("%lld\n",ans[sz-]);
} int main(){
int T,kase = ;
scanf("%d",&T);
while(T--){
scanf("%d %d %d",&n,&m,&k);
totx = toty = ;
lix[++totx] = liy[++toty] = ;
lix[++totx] = m;liy[++toty] = n;
for(int i = ;i <= k;i++){
scanf("%d %d",&y[i],&x[i]);
lix[++totx] = x[i];
liy[++toty] = y[i];
}
sort(lix+,lix+totx+);
totx = unique(lix+,lix+totx+) - (lix+);
sort(liy+,liy+toty+);
toty = unique(liy+,liy+toty+) - (liy+); X.clear();Y.clear();
cx = ,cy = ;
for(int i = ;i <= totx;i++){
if(lix[i] != lix[i-]+) xx[++cx] = lix[i] - lix[i-] - ;
xx[++cx] = ;
X[lix[i]] = cx;
}
for(int i = ;i <= toty;i++){
if(liy[i] != liy[i-]+) yy[++cy] = liy[i] - liy[i-] - ;
yy[++cy] = ;
Y[liy[i]] = cy;
} printf("Case #%d:\n",++kase);
solve();
}
return ;
}

1005 Mr. Frog’s Game

1006 Auxiliary Set

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

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

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

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

忘记memset vis  一直一直一直 wa

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

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std; const int maxn = 2e5+;
int n,m,k;
vector<int> g[maxn];
int a[maxn],b[maxn],fa[maxn],vis[maxn],dep[maxn],ans[maxn]; int col,num; struct node{
int x;
int d;
}p[maxn]; int cmp(node n1,node n2){
return n1.d > n2.d;
} Dfs(int u,int pre,int d){
fa[u] = pre;
dep[u] = d;
for(int i = ;i < g[u].size();i++){
int v = g[u][i];
if(v == pre) continue;
fa[v] = u;
Dfs(v,u,d+);
}
} int kase; void solve(){
memset(fa,,sizeof(fa));
memset(dep,,sizeof(dep));
memset(a,,sizeof(a));
memset(vis,,sizeof(vis));
Dfs(,,);
for(int i = ;i <= m;i++){
col = i;
scanf("%d",&k);
int x;
for(int j = ;j <= k;j++){
scanf("%d",&x);
p[j].x = x;
p[j].d = dep[x];
a[x] = col;
}
sort(p+,p+k+,cmp);
int res = n-k;
for(int j = ;j <= k;j++){
int u = p[j].x;
int cc = ;
for(int z = ;z < g[u].size();z++){
int v = g[u][z];
if(v == fa[u]) continue;
if(a[v] != col || vis[v] == col){
vis[v] = vis[u] = col;
cc++;
}
if(cc >= ) break;
}
if(cc >= ) res++;
}
ans[i]= res;
//printf("res = %d\n",res);
}
printf("Case #%d:\n",++kase);
for(int i = ;i <= m;i++) printf("%d\n",ans[i]);
} int main(){
int T;
scanf("%d",&T);
kase = ;
while(T--){
scanf("%d %d",&n,&m);
int u, v;
for(int i = ;i <= n;i++) g[i].clear();
for(int i = ;i < n;i++){
scanf("%d %d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
}
solve();
}
return ;
}

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. [ASM C/C++] C语言函数的可选性自变量

        函数的可选性自变量  C语言允许定义自变量数量可变的函数,称为variadic函数.variadic函数需要固定数目的强制性自变量,后面是数量可变的可选性自变量. 也就是说必须至少有一个强制性 ...

  2. 【前端】原生event对象和jquery event对象的区别

    标准DOM event对象转换成 jQuery event对象 $(event) jQuery event对象转换成 标准DOM event对象 event.originalEvent

  3. Command调用存储过程小实例

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  4. C# 统计在线人数和总访问人数

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  5. IOS苹果和百度地图的相关使用

    iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是 ...

  6. Cheatsheet: 2016 03.01 ~ 03.31

    JAVA Quick Java 8 or Java 7 Dev Environments With Docker Printing arrays by hacking the JVM Mobile H ...

  7. Linux常用命令及shell脚本

    一.     用户管理(添加用户.切换用户.删除用户) ~                                                                        ...

  8. 用pecl/pear独立编译PHP扩展 vs. 把扩展编译到PHP内核中

    将扩展编译到php内部的方式会提高php运行扩展的效率,但是每次需要新添加扩展时都需要把php以及之前添加的所有扩展重新编译一边,非常麻烦. 独立编译扩展,php外部调用扩展的方式虽然会牺牲一点点的性 ...

  9. bean找不到异常

    和这种的 原因: 这些都是因为bean注入的时候没有找个要注入的bean 解决办法: 1.查看dubbo文件中,暴露接口是否引入bean 2.如果有引入,查看引入路径和类是否存在.

  10. TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...