洛谷mNOIP模拟赛Day1-分组
传送门
首先是贪心的思路
从后向前选,能多选就多选,
理由:数字越少肯定越优,同时间隔尽量向前推,字典序尽量小
对于K==1,枚举1~512直接判断
对于K==2,需要用镜像并查集,来刻画“敌对关系”,如果a和b产生矛盾,就把a和b的镜像(b')连接 ,b和a'连接,然后判断自己是不是和自己的镜像连接了
打上时间戳避免清零卡常
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#define MAXN 131100
using namespace std;
int n,K;
namespace solve1
{
int read(){
int x=;char ch=getchar();
while(ch<''||ch>''){ch=getchar();}
while(ch>=''&&ch<=''){x=x*+(ch^);ch=getchar();}
return x;
}
int n,K,cnt;
int a[MAXN];
int b[MAXN<<];
int p[];
vector<int> v;
int check(int x){
for(int i=;i>=;i--){
if(p[i]-x<=){
return ;
}
if(b[p[i]-x]&&b[p[i]-x]==cnt){
return ;
}
}
return ;
}
void solve(){
n=::n,K=::K;
cnt=;
for(int i=;i<=;i++){
p[i]=i*i;
}
for(int i=;i<=n;i++){
a[i]=read();
}
for(int i=n;i>=;i--){
if(check(a[i])){
b[a[i]]=cnt;
}
else{
cnt++;
b[a[i]]=cnt;
v.push_back(i);
}
}
printf("%d\n",cnt);
for(int i=v.size()-;i>=;i--){
printf("%d ",v[i]);
}
}
}
namespace solve2
{
int read(){
int x=;char ch=getchar();
while(ch<''||ch>''){ch=getchar();}
while(ch>=''&&ch<=''){x=x*+(ch^);ch=getchar();}
return x;
}
int f[MAXN<<];
vector<int> v[MAXN<<];
int vis[MAXN<<];
int p[];
int a[MAXN];
int n,K;
int cnt;
vector<int> ans;
int find(int x){
return (f[x]==x?x:f[x]=find(f[x]));
}
void lik(int x,int y){
x=find(x),y=find(y);
if(x!=y){
f[x]=y;
}
}
bool same(int x,int y){
return (find(x)==find(y));
}
int check(int x){
for(int i=;i>=;i--){
if(p[i]-a[x]<=){
return ;
}
else if(vis[p[i]-a[x]]&&vis[p[i]-a[x]]==cnt){
for(int j=;j<v[p[i]-a[x]].size();j++){
int t=v[p[i]-a[x]][j];
if(same(x,t)){
return ;
}
lik(x,t+n);
lik(x+n,t);
}
}
}
return ;
}
void solve(){
n=::n,K=::K;
cnt=;
for(int i=;i<=;i++){
p[i]=i*i;
}
for(int i=;i<=(n<<);i++){
f[i]=i;
}
for(int i=;i<=n;i++){
a[i]=read();
}
for(int i=n;i>=;i--){
if(check(i)){
if(vis[a[i]]!=cnt){
vis[a[i]]=cnt;
v[a[i]].clear();
}
v[a[i]].push_back(i);
}
else{
cnt++;
vis[a[i]]=cnt;
v[a[i]].clear();
v[a[i]].push_back(i);
ans.push_back(i);
}
}
printf("%d\n",cnt);
for(int i=ans.size()-;i>=;i--){
printf("%d ",ans[i]);
}
}
}
int main()
{
// freopen("data.in","r",stdin);
// freopen("a.out","w",stdout);
scanf("%d%d",&n,&K);
if(==K){
solve1::solve();
}
else{
solve2::solve();
}
return ;
}
洛谷mNOIP模拟赛Day1-分组的更多相关文章
- 【洛谷mNOIP模拟赛Day1】T1 斐波那契
题目传送门:https://www.luogu.org/problemnew/show/P3938 这题出得特别吼啊~~ 通过打表或者大胆猜想斐波那契数列的一些性质,我们不难发现对于一只兔子$x$,其 ...
- 洛谷mNOIP模拟赛Day1-斐波那契
题目背景 大样例下发链接:http://pan.baidu.com/s/1c0LbQ2 密码:jigg 题目描述 小 C 养了一些很可爱的兔子. 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家 ...
- 洛谷noip 模拟赛 day1 T3
T7983 大芳的逆行板载 题目背景 大芳有一个不太好的习惯:在车里养青蛙.青蛙在一个n厘米(11n毫米s)的Van♂杆子上跳来跳去.她时常盯着青蛙看,以至于突然逆行不得不开始躲交叉弹.有一天他突发奇 ...
- 洛谷mNOIP模拟赛Day2-星空
题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 命运偷走如果只留下结果, 时间偷走初衷只留下了苦衷. 你来过,然后你走后,只留下星空. ...
- 洛谷mNOIP模拟赛Day2-将军令
题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人 ...
- 洛谷mNOIP模拟赛Day2-入阵曲
题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 题目描述 小 F 很喜欢数学,但是到 ...
- 洛谷mNOIP模拟赛Day1-数颜色
传送门 题目大意: 给定一个序列,维护每个数字在[L,R]出现的次数以及交换a[x]和a[x+1]的操作 一开始想的分桶法,感觉复杂度还可以吧,常数有点大,于是死得很惨(65分) #include&l ...
- 洛谷noip 模拟赛 day1 T1
T7925 剪纸 题目描述 小芳有一张nnn*mmm的长方形纸片.每次小芳将会从这个纸片里面剪去一个最大的正方形纸片,直到全部剪完(剩下一个正方形)为止. 小芳总共能得到多少片正方形纸片? 输入输出格 ...
- 湖南国庆模拟赛day1 分组
题目大意:给你一个n个数的数列s,要对这些数进行分组,当有任意两个数在一种方案在一起而在另一种方案中不在一起算是两种不同的方案,一个组的"不和谐程度"为组内数的极差,如果只有一个人 ...
随机推荐
- 团队作业7——第二次项目冲刺(Beta版本12.10)
项目每个成员的进展.存在问题.接下来两天的安排. 已完成的内容:头像功能原型设计.头像裁剪功能.头像上传功能.测试 计划完成的内容:头像功能测试.bug修复 每个人的工作 (有work item 的I ...
- jstree的简单用法
一般我们用jstree主要实现树的形成,并且夹杂的邮件增删重命名刷新的功能 下面是我在项目中的运用,采用的是异步加载 $('#sensor_ul').data('jstree', false).emp ...
- DELL EqualLogic PS存储硬盘故障数据恢复成功案例分享
DELL EqualLogic PS4000采用虚拟ISCSI SAN阵列,为远程或分支办公室.部门和中小企业存储部署带来企业级功能.智能化.自动化和可靠性.以简化的管理.快速的部署及合理的价格满足了 ...
- Nginx在windows环境下的安装与简单配置
版权声明:本文为博主原创文章,未经博主允许不得转载. 一. 下载并安装Nginx 去Nginx官网下载 我这里选取nginx/Windows-1.10.3版本,下载后解压出来即可,解压出来的路径不能含 ...
- mingw打dll ,lib包命令和调用
1,下面的命令行将这个代码编译成 dll. gcc mydll.c -shared -o mydll.dll -Wl,--out-implib,mydll.lib 其中 -shared 告诉gcc d ...
- SLF4J - 借助SLF4J, 统一适配所有日志实现为logback日志实现的实践
一.屏蔽各种日志实现,去掉各种日志实现的实现依赖 二.引入slf4j和各种日志实现的适配器 1.引入slf4j 2.引入各种日志实现的适配器(适配到slf4j) 3.引入logback 引入logba ...
- cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测
参考文献----------OpenCV-Python-Toturial-中文版.pdf 参考博客----------http://www.bubuko.com/infodetail-2498014. ...
- ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)
ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1) (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26 ...
- mysql中独立表空间与共享表空间之前如何切换
环境 mysql版本:5.7.19 官方文档:(https://dev.mysql.com/doc/refman/5.7/en/innodb-multiple-tablespaces.html) 查看 ...
- Docker:云栖社区开源论题及Spark开源论题
https://yq.aliyun.com/topic/78?spm=5176.8290451.656547.7.rMYhAF https://yq.aliyun.com/activity/155?u ...