2016CCPC东北地区大学生程序设计竞赛【01/03/05/06/08】
吧啦啦啦啦啦啦啦啦啦啦啦能量,ACM,跨!变身!变成一个智障!
04正在酝酿中!!!马上更新!!!!!
思路:最小生成树就是1到各个点,ans=n*(n+1)/2-1;
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX=1000010;
LL n,m;
int main()
{
int t,i,j;
int cas=1;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
LL sum=0;
sum=n*(n+1)/2-1;
printf("Case #%d: ",cas++);
printf("%lld\n",sum);
}
return 0;
}
思路:满足条件的整数对(A,B)或(B,A).
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX=1000010;
LL n,m;
int main()
{
int t,i,j;
int cas=1;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&n,&m);
printf("Case #%d:\n",cas++);
if(n>m)
swap(n,m);
if(n==m)
{
printf("1\n");
printf("%lld %lld\n",n,m);
}
else
{
printf("2\n");
printf("%lld %lld\n",n,m);
printf("%lld %lld\n",m,n); }
}
return 0;
}
05
题意:
连连看
就是四周两个相同就YES,然后里面的相邻相同也OK
#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const int N=35;
int ma[N][N];
map<int,int>mp;
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int a,b; bool Judge(int x,int y)
{
if(x<1||y<1||x>a||y>b)
return 0;
return 1;
} int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&a,&b);
for(int i=1;i<=a;i++)
for(int j=1;j<=b;j++)
scanf("%d",&ma[i][j]); printf("Case #%d: ",cas++);
if(a==1&&b==1)
{
puts("No");
continue;
}
int flag=0;
mp.clear();
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
{
for(int k=0;k<4;k++)
{
int xx=i+dx[k];
int yy=j+dy[k];
if(Judge(xx,yy))
{
if(ma[i][j]==ma[xx][yy])
{
flag=1;
break;
}
}
}
if(flag)
break;
}
if(flag)
break;
}
if(flag)
{
puts("Yes");
continue;
}
for(int i=1;i<=a;i++)//1列
{
if(!mp[ma[i][1]])
mp[ma[i][1]]=1;
else
{
flag=1;
break;
}
}
if(flag)
{
puts("Yes");
continue;
}
mp.clear();
for(int i=1;i<=a;i++) //b列
{
if(!mp[ma[i][b]])
mp[ma[i][b]]=1;
else
{
flag=1;
break;
}
}
if(flag)
{
puts("Yes");
continue;
}
mp.clear();
for(int i=1;i<=b;i++) //1行
{
if(!mp[ma[1][i]])
mp[ma[1][i]]=1;
else
{
flag=1;
break;
}
}
if(flag)
{
puts("Yes");
continue;
}
mp.clear();
for(int i=1;i<=b;i++)//a行
{
if(!mp[ma[a][i]])
mp[ma[a][i]]=1;
else
{
flag=1;
break;
}
}
if(flag)
{
puts("Yes");
continue;
}
puts("No");
}
return 0;
}
06:
定义集合里的点必须要满足
1 重要的点
2 是两个不同的重要的点的最近公共祖先
其中一个
然后每次询问给出不重要的点,问你集合最多几个点
思路:
对于LCA的操作其实就是对于这个结点,有两个子树里是重要点就一定是这两个结点的LCA了。
先预处理一下所有结点的关系,然后对于有两个出度的结点判断一下两个子树是否有重要的点就好了;
#include <bits/stdc++.h>
using namespace std; const int N=1e5+10; struct asd{
int to;
int next;
};
asd q[N*4];
int tol,head[N*4];
int pre[N];
int num[N],fei[N];
bool vis[N];
vector<int>pb;
int n,k; void add(int a,int b)
{
q[tol].to=b;
q[tol].next=head[a];
head[a]=tol++;
} void init()
{
tol=0;
memset(head,-1,sizeof(head));
for(int i=1;i<=n;i++)
{
fei[i]=0;
num[i]=0;
vis[i]=false;
}
} void dfs(int x)
{
for(int v=head[x];v!=-1;v=q[v].next)
{
int to=q[v].to;
if(vis[to]) continue;
num[x]++;
vis[to]=1;
pre[to]=x;
dfs(to);
}
} bool dfs_judge(int x)
{
int sum=0;
for(int v=head[x];v!=-1;v=q[v].next)
{
int to=q[v].to;
if(pre[to]==x)
{
if(fei[to]!=k)
return 1;
else
{
if(dfs_judge(to))
return 1;
}
}
}
return 0;
} int main()
{
int T;
int cas=1;
scanf("%d",&T);
while(T--)
{
int qq,a,b;
int m;
scanf("%d%d",&n,&qq);
init();
for(int i=1;i<n;i++)
{
scanf("%d%d",&a,&b);
add(a,b);
add(b,a);
}
printf("Case #%d:\n",cas++);
vis[1]=true;
dfs(1);
int ans;
for(k=1;k<=qq;k++)
{
scanf("%d",&m);
pb.clear();
ans=n-m;
while(m--)
{
int x;
scanf("%d",&x);
fei[x]=k;
if(num[x]<2) continue;
pb.push_back(x);
}
int sum;
for(int i=0;i<pb.size();i++)
{
int u=pb[i];
sum=0;
for(int v=head[u];v!=-1;v=q[v].next)
{
int to=q[v].to;
if(pre[to]!=u)
continue;
if(fei[to]!=k)
sum++;
else
{
if(dfs_judge(to))
sum++;
}
if(sum>=2)
{
ans++;
break;
}
}
}
printf("%d\n",ans);
}
}
return 0;
}
08:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define E 2.71828
#define MOD 1000000007
#define N 200010
#define M 5010 int a[N*2];
int main()
{
int T,cas = 1;
scanf("%d",&T);
while(T--)
{
memset(a,0,sizeof(a));
int n;
scanf("%d",&n);
int num = 0;
int l = n;
int r = n-1;
int i1 = -INF;
int i2 = INF;
int flag = 1;
printf("Case #%d:\n",cas++);
while(n--)
{
char s[10];
scanf("%s",s);
if(strcmp(s,"PUSH") == 0)
{
int x,i;
scanf("%d",&x);
if(flag)
{
a[++r] = x;
i = r;
}
else
{
a[--l] = x;
i = l;
}
if(x==0)
{
i1 = max(i1,i);
i2 = min(i2,i);
}
num++;
}
else if(strcmp(s,"POP") == 0)
{
if(flag)
r--;
else
l++;
num--;
}
else if(strcmp(s,"QUERY") == 0)
{
if(num <= 0)
{
puts("Invalid.");
continue;
}
if(i1==-INF && i2==INF)
{
int len = r-l+1;
if(len&1)
puts("1");
else
puts("0");
continue;
}
if(num == 1)
{
if(r != n-1)
printf("%d\n",a[r]);
else
printf("%d\n",a[l]);
continue;
}
if(flag)
{
int ling = min(i1,i2);
int len = ling-l+1;
if(ling == r)
len--;
if(len&1)
puts("1");
else
puts("0");
}
else
{
int ling = max(i1,i2);
int len = r-ling+1;
if(ling == l)
len--;
if(len&1)
puts("1");
else
puts("0");
}
}
else
{
flag = !flag;
}
}
}
return 0;
}
2016CCPC东北地区大学生程序设计竞赛【01/03/05/06/08】的更多相关文章
- HDU 5925 Coconuts 【离散化+BFS】 (2016CCPC东北地区大学生程序设计竞赛)
Coconuts Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
Basic Data Structure Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDU 5926 Mr. Frog's Game 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
Mr. Frog's Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5924 Mr. Frog’s Problem 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
Mr. Frog's Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- HDU 5922 Minimum’s Revenge 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
Minimum's Revenge Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 5927 Auxiliary Set 【DFS+树】(2016CCPC东北地区大学生程序设计竞赛)
Auxiliary Set Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016CCPC东北地区大学生程序设计竞赛 (2018年8月22日组队训练赛)
题目链接:http://acm.hdu.edu.cn/search.php?field=problem&key=2016CCPC%B6%AB%B1%B1%B5%D8%C7%F8%B4%F3%D ...
- 2016CCPC东北地区大学生程序设计竞赛 1008 HDU5929
链接http://acm.hdu.edu.cn/showproblem.php?pid=5929 题意:给你一种数据结构以及操作,和一种位运算,最后询问:从'栈'顶到低的运算顺序结果是多少 解法:根据 ...
- 2016CCPC东北地区大学生程序设计竞赛 1005 HDU5926
链接http://acm.hdu.edu.cn/showproblem.php?pid=5926 题意:给我们一个矩阵,问你根据连连看的玩法可以消去其中的元素 解法:连连看怎么玩,就怎么写,别忘记边界 ...
随机推荐
- 05 referer头与防盗链
像上图中的这个效果,当我们在网页里引用站外图片时,常出现这样的情况. ??? 服务器是怎么样知道,这个图片是在站外被引用的呢? 还有在网站的统计结果,统计用户从何而来,如下图 ??? 统计时,是如何得 ...
- linux命令详解:file命令
前言 file命令可以获取多种文件类型,包括文本文件.脚本文件.源码文件.多媒体文件(音频视频)等.file是通过查看文件的头部内容,来获取文件的类型,而不像Window那样是通过扩展名来确定文件类型 ...
- [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题
出现问题 我们在做流媒体开发的过程中,进程会出现摄像机RTSP流莫名其妙无法播放的问题,而我们常用的vlc经常是直接弹出一个无法播放的提示框就完事了,没有说明出错的原因,或者在vlc的消息里面能看到日 ...
- 锁定xcode api 文档
1, 打开终端2, 前往Xcode.app, 命令: cd /Applications/Xcode.app 3, 把头文件修改为只读, 命令: sudo chown -hR root:wheel Co ...
- 烂笔头——JAVA/JSP
学艺不精,一些小零头放这里备忘 Object[] obj = (Object[])list.get(i);//取list的某个项目 jsp中出现out.println( )和System.out.pr ...
- java虚拟机内存溢出和泄漏实例
测试参数设置: 1.循环调用new A()实现堆溢出,java.lang.OutOfMemoryError: Java heap space, 虚拟机参数:-Xms1M -Xmx1M -XX:+Hea ...
- Js常见的六种报错
EvalError: raised when an error occurs executing code in eval() EvalError:当一个错误发生在()执行的代码RangeError: ...
- 深度学习之卷积神经网络(CNN)学习
1.卷积神经网络中卷积的核心意义是什么?每一组卷集核 权重是一个抽特征的滤波器, 从卷集核的角度抽取特征 2.卷积神经网络很好的特性参数共享机制每一个神经元固定一组a x b x c(图像的通道数) ...
- NVIDIA GPU 计算能力
Tesla V100# ARCH= -gencode arch=compute_70,code=[sm_70,compute_70] GTX 1080, GTX 1070, GTX 1060, GTX ...
- ASoC框架
ASoC框架分为3部分: 1. platform(用来描述芯片的DAI接口,负责数据传输): DAI:snd_soc_dai_driver, 用来表示支持哪些格式数据, 提供设置格式的函数, 启动数据 ...