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. Topcoder SRM 683 Div2 - C

    树形Dp的题,根据题意建树. DP[i][0] 表示以i为根节点的树的包含i的时候的所有状态点数的总和 Dp[i][1] 表示包含i结点的状态数目 对于一个子节点v Dp[i][0] = (Dp[v] ...

  2. 课堂 一些代码的叫法 JavaScript js

    ():圆括号 {} :花括号 <>:尖括号 [] :方括号

  3. Golang 效率初(粗)测

    从接触 Golang 开始,断断续续已有差不多一年左右的时间了,都是业余自己学学看看,尚主要限于语法及语言特性,还没有用它写过实际的项目. 关于 Golang 的语法及语言特性,网上有很多资源可以学习 ...

  4. easyUI的Dialog和Windows框的应用

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. 伪共享和缓存行填充,从Java 6, Java 7 到Java 8

    关于伪共享的文章已经很多了,对于多线程编程来说,特别是多线程处理列表和数组的时候,要非常注意伪共享的问题.否则不仅无法发挥多线程的优势,还可能比单线程性能还差.随着JAVA版本的更新,再各个版本上减少 ...

  6. java 垃圾回收

    转自:http://www.360doc.com/content/13/0305/10/15643_269388816.shtml

  7. 下载安装JDK,配置环境变量

    Hello,JDK; 在开始学习JAVA之前,第一件事情肯定是被告知:先下载JDK.就像我的一个朋友问我的一样"JDK是个什么鬼?我学的不是JAVA么,为什么要下载JDK?". J ...

  8. 流媒体测试笔记记录之————解决问题video.js 播放m3u8格式的文件,根据官方的文档添加videojs-contrib-hls也不行的原因解决了

    详细代码Github:https://github.com/Tinywan/PHPSharedLibrary/tree/master/Tpl/Html5/VideoJS 想播放hls协议的就是m3u8 ...

  9. spring+缓存

    1.配置ehcache.xml <?xml version="1.0" encoding="UTF-8"?> <ehcache updateC ...

  10. 书__Oracle

    1.高可用性 1.1.ORACLE数据高可用之路 1.2.Oracle数据库进阶-高可用性.性能优化和备份恢复 2. 3. 4. 5.