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}$块. 分块的时候满足每个块是一个 ...
随机推荐
- 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 ...
- 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 ...
- mysql 实现 start with
自己写service----> 传入map(idsql,rssql,prior) idsql 查询id rssql 查询结果集 调用 以下方法 @param ids 要查询的起始 ...
- jQuery学习笔记(一)jQuery选择器
目录 jQuery选择器的优点 基本选择器 层次选择器 过滤选择器 表单选择器 第一次写博客,希望自己能够长期坚持,以写博客的方式作为总结与复习. 最近一段时间开始学习jQuery,通过写一个jQue ...
- Latex图片显示问题(1)
用latex编译后,若用dvipdf生成pdf文件,则其中有个eps图的左侧会显示不完全:若是用dvips--pspdf生成pdf文件,图像显示没问题. 这种情况的问题出在,加载 graphicx 宏 ...
- Django + mysql 快速搭建简单web投票系统
了解学习pyhton web的简单demo 1. 安装Django, 安装pyhton 自行百度 2. 执行命令创建project django-admin.py startproject mysi ...
- pandas处理数据
读文件 pd.read_csv('path/to/file.txt',header=0,names='ab',index=0) names Columns这个可以不写,制定索引列是第一列,这样就没有序 ...
- HBase的Write Ahead Log (WAL) —— API与基本概念
HBase的数据写入操作,会先记录到HLog中,再真正写入到MemStore中.前者是对写入友好的格式,后者是对查询友好的格式.所以前者吞吐量更高,写入成功率大,提高了系统的可靠性,“基本”可以实现宕 ...
- sublime text2 换主题
网上看到一款喜欢的主题,换掉初始的主题,感觉颜色浅一点会比较好看,看中了下面这款. 后来看到有在 github 上的人做的 ,这是地址 ,上面也有详细的如何更改的步骤,下面是我自己这里做个备份. 1. ...
- win7 32位安装php redis驱动
根据php版本下载php_redis扩展,然后把php_redis.dll这个扩展文件放到php中的ext文件夹中,然后再去php-ini中添加一行代码:extension=php_redis.dll ...