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}$块. 分块的时候满足每个块是一个 ...
随机推荐
- ASP.NET 画图与图像处理-生成高质量缩略图
http://www.cftea.com/c/2007/08/SG9WFLZJD62Z2D0O.asp
- easyui DataGrid 工具类之 util js
var jq; var tab; var tabsIndex; /** ...
- SpringMVC框架下实现JSON(类方法中回传数据到jsp页面,使用jQuery方法回传)
JSON的实现,即将需要的数据回传到jsp页面: 1>.加入实现Json的三个架包到lib中:2>.目标方法上边加入注解,需要返回的值3>.在jsp页面中书写jQuery方法: ec ...
- linux vmware安装完成后如何设置桥接上网
linux 主机初步安装完成后还是不能上网,如何设置共享上网 1 首先要明白上网方式:虚拟机网卡-------------------vmnet1--------------------真实机网卡( ...
- Markdown使用指南(1)——基础语法
[TOC] Markdown使用指南 标题 # 这是一级标题 ## 这是二级标题 ### 这是三级标题 ###### 这是六级标题 引用 > 这是一级引用 >> 这是二级引用 > ...
- Javascript > Eclipse > Code completion (Content Assist)
分享一下,整体理清的思路,关于Eclipse中代码的 自动完成,可配置自定义Library文件地址 其实这个思路的通用的,不管任何Eclipse支持的编辑语言,都可以适用.下面已Javascript来 ...
- Xcode 8
(一)Xcode8去掉多余LOG 1.打开我们的项目,进入EditScheme 2.我们在Environment Variables中添加OS_ACTIVITY_MODE=disable
- OpenLayers2.13.1知识整理
对于地图的默认加载等,网上很多资料,就不细说了,主要整理解决一些api不明显或不全的内容 因玩webgis只有一周左右,肯定很水~~ 我资料中的目录结构如下: html map js(自己封装的js目 ...
- 6.Swift协议|扩展|访问权限|异常调试|类型转换|运算函数|ARC|类类型初试化器|值类型初始化器
1. 协议(Protocol):与OC之间唯一不同的是Swift中的协议不管是属性还时方法全部是必须实现的 /** protocol*/ protocol FullNamed { /** 计算属性申明 ...
- js对象/数组深度复制
今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...