[agc008d]kth-k
题意:
给你一个长度为N的整数序列X,构造一个整数序列a满足:
1.a的长度为$N^2$,且1~N中每个数字恰好出现N次;
2.数字i在a中第i次出现的位置为$X_i$;
如果不能构造输出“No”,否则先输出“Yes”然后在第二行输出构造的序列(本题有SPJ)。
$1\leq N\leq 500$
$1\leq X_i\leq N^2$且$X_i$互不相同
题解:
我太菜了只会$O(n^3)$。。。dalao们纷纷$O(n^2)$碾了过去不知道比我快到哪里去了。。。
分别向前向后扫一遍,记录当前每个数字还需要填多少个,贪心填然后判断即可。
代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
using namespace std;
typedef long long ll;
int n,N,cnt=,s[],num[],tot[],a[];
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&num[i]);
a[num[i]]=i;
tot[i]=i-;
}
N=n*n;
for(int i=;i<=N;i++){
if(a[i])s[++cnt]=a[i];
}
for(int i=;i<=N;i++){
if(a[i])continue;
for(int j=;j<=n;j++){
if(!tot[s[j]])continue;
a[i]=s[j];
tot[s[j]]--;
break;
}
}
for(int i=;i<=n;i++){
tot[i]=n-i;
}
for(int i=N;i;i--){
if(a[i])continue;
for(int j=n;j;j--){
if(!tot[s[j]])continue;
a[i]=s[j];
tot[s[j]]--;
break;
}
}
for(int i=;i<=n;i++){
int tmp=;
for(int j=;j<=N;j++){
if(a[j]==i)tmp++;
if(tmp==i){
if(j!=num[i])return puts("No"),;
break;
}
}
}
puts("Yes");
for(int i=;i<=N;i++)printf("%d ",a[i]);
return ;
}
我会说我考试时去atc的submission看了一下全是熟悉的id吗
[agc008d]kth-k的更多相关文章
- AtCoder Grand Contest 008 D - K-th K
题目传送门:https://agc008.contest.atcoder.jp/tasks/agc008_d 题目大意: 给你一个长度为\(N\)的序列\(A\),请你构造一个长度为\(N^2\)的序 ...
- K-th K
题目描述 You are given an integer sequence x of length N. Determine if there exists an integer sequence ...
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
- POJ2985 The k-th Largest Group[树状数组求第k大值+并查集||treap+并查集]
The k-th Largest Group Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8807 Accepted ...
- [Swift]LeetCode703. 数据流中的第K大元素 | Kth Largest Element in a Stream
Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...
- UVA11525 Permutation[康托展开 树状数组求第k小值]
UVA - 11525 Permutation 题意:输出1~n的所有排列,字典序大小第∑k1Si∗(K−i)!个 学了好多知识 1.康托展开 X=a[n]*(n-1)!+a[n-1]*(n-2)!+ ...
- 主席树套树状数组 动态区间第k小
先打上代码以后更新解释 #include <cstdio> #include <iostream> #include <algorithm> #include &l ...
- bzoj 2998 第k小字串
这道题用后缀数组貌似会T. 后缀自动机做法: t==0:第k小的本质不同字串 首先把后缀自动机建出来,我们会得到一个DAG,并且只存在一个点入度为0(我们称之为根),可以证明字符串的任意一个本质不同的 ...
- 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树
题目传送门 题解 orz vfk的题解 3065: 带插入区间K小值 系列题解 一 二 三 四 惨 一开始用了一种空间常数很大的方法,每次重构的时候merge两颗线段树,然后无限RE(其实是MLE). ...
- BZOJ 4923: [Lydsy1706月赛]K小值查询 Splay + 思维
Description 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. In ...
随机推荐
- BZOJ4545: DQS的trie 广义后缀自动机_LCT
特别鸣神犇 fcwww 替我调出了无数个错误(没他的话我都快自闭了),祝大佬省选rp++ 板子题,给我写了一天QAQ...... 用 LCT 维护后缀树,暴力更新用 LCT 区间更新链即可 其实,在计 ...
- js 时间戳 中国标准时间 年月日 日期之间的转换
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 服务器搭建域控与SQL Server的AlwaysOn环境过程(五)配置异地机房节点
0 引言 注意点1 注意异地节点最好至少有2个AG节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示WSFC集群有脱机危险 在异地节点只有一个的情况下,虽然Windows2012R2有动态 ...
- laydate日期范围控制
1.html <input type="text" id="startTime" name="startTime" class=&qu ...
- elment表格分页
项目的时候遇到了一个分页的bug,经过分析Element源码之后找到了问题所在,现在把这个问题及解决方法记录下来. 项目中要实现的功能是用户选择查看表格的时候在任意页面点击查询,得到结果之后要展示的页 ...
- UVA401-Palindromes(紫书例题3.3)
A regular palindrome is a string of numbers or letters that is the same forward as backward. For exa ...
- Selenium:简单的尝试一下
一.创建maven工程引入依赖 1)创建项目 创建一个简单的maven工程即可 这里我使用jar项目进行简单的演示 2)引入依赖 <dependencies> <dependency ...
- snprintf
snprintf(),函数原型为int snprintf(char *str, size_t size, const char *format, ...). 将可变参数 “…” 按照format的 ...
- 洛谷 P1825 [USACO11OPEN]玉米田迷宫Corn Maze
P1825 [USACO11OPEN]玉米田迷宫Corn Maze 题目描述 This past fall, Farmer John took the cows to visit a corn maz ...
- [Javascirpt] Developer-friendly Flow Charts with flowchart.js
Flowchart.js is a great tool for creating quick, simple flowcharts in a way that keeps you out of a ...