10.6 CCPC northeast
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的更多相关文章
- CCPC、Petrozavodsk Camp、OpenCup 题解汇总
省赛 \([\text{2021.11.30}]\) 2021 Jilin Collegiate Programming Contest 全部完成. \([\text{2021.12.25}]\) 2 ...
- Ubuntu 14.10 下grep命令详解
简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...
- CCPC总结
[印象·南阳] 10月15日出发,威海—烟台—郑州—南阳,一路上欢声笑语,从谁是卧底到各类纸牌游戏,也是欢乐.在从郑州到南阳的车上,对面的好像是河南当地的学长,感叹道工作不易的样子,说还是学生时代最为 ...
- 2017 CCPC Qinhuangdao Site
A. Balloon Robot 假设机器人$0$时刻位于$0$号位置,那么每个气球所需的时间为$(s_a-b)\bmod m$. 将所有气球按这个时间排序,枚举每个气球的时间作为偏移量,得出最优解即 ...
- 2018.10.25 CCSP马拉松摸铜归来
24号体测跑50+1000米. 50米抢跑被罚重跑???然后老年人就只能吊着一口仙气跑第二次50米.然后跑1000米,然后再到宿舍收拾行李赶往地铁站,然后再冲到火车站...(卒) 宾馆,三人挤入二人房 ...
- 2017 ccpc哈尔滨 A题 Palindrome
2017 ccpc哈尔滨 A题 Palindrome 题意: 给一个串\(T\),计算存在多少子串S满足\(S[i]=S[2n−i]=S[2n+i−2](1≤i≤n)\) 思路: 很明显这里的回文串长 ...
- 2018 CCPC 桂林游记
TYPE: Onsite Contest NAME: 2018 - CCPC - Guilin PLAT: HUSTOJ TIME: 2018/10/28 09:00-14:00 CST LOCA: ...
- ccpc 网络赛 hdu 6155
# ccpc 网络赛 hdu 6155(矩阵乘法 + 线段树) 题意: 给出 01 串,要么询问某个区间内不同的 01 子序列数量,要么把区间翻转. 叉姐的题解: 先考虑怎么算 \(s_1, s_2, ...
- HDU 6271 Master of Connected Component(2017 CCPC 杭州 H题,树分块 + 并查集的撤销)
题目链接 2017 CCPC Hangzhou Problem H 思路:对树进行分块.把第一棵树分成$\sqrt{n}$块,第二棵树也分成$\sqrt{n}$块. 分块的时候满足每个块是一个 ...
随机推荐
- [ASM C/C++] C语言函数的可选性自变量
函数的可选性自变量 C语言允许定义自变量数量可变的函数,称为variadic函数.variadic函数需要固定数目的强制性自变量,后面是数量可变的可选性自变量. 也就是说必须至少有一个强制性 ...
- 【前端】原生event对象和jquery event对象的区别
标准DOM event对象转换成 jQuery event对象 $(event) jQuery event对象转换成 标准DOM event对象 event.originalEvent
- Command调用存储过程小实例
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- C# 统计在线人数和总访问人数
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- IOS苹果和百度地图的相关使用
iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 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 ...
- Linux常用命令及shell脚本
一. 用户管理(添加用户.切换用户.删除用户) ~ ...
- 用pecl/pear独立编译PHP扩展 vs. 把扩展编译到PHP内核中
将扩展编译到php内部的方式会提高php运行扩展的效率,但是每次需要新添加扩展时都需要把php以及之前添加的所有扩展重新编译一边,非常麻烦. 独立编译扩展,php外部调用扩展的方式虽然会牺牲一点点的性 ...
- bean找不到异常
和这种的 原因: 这些都是因为bean注入的时候没有找个要注入的bean 解决办法: 1.查看dubbo文件中,暴露接口是否引入bean 2.如果有引入,查看引入路径和类是否存在.
- TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...