CF1288
A
考虑\(x + 1 = \sqrt{d}\)时在有理域上有最优界。
那我在整数域上附近取三个点取min就行了。
// code by fhq_treap
#include<bits/stdc++.h>
#define ll long long
#define N 300005
inline ll read(){
char C=getchar();
ll A=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') A=(A << 1)+(A << 3)+(C - 48) , C=getchar();
return A*F;
}
template <typename T>
void write(T x)
{
if(x < 0) {
putchar('-');
x = -x;
}
if(x > 9)
write(x/10);
putchar(x % 10 + '0');
return;
}
int n,d,t;
int main(){
scanf("%d",&t);
while(t -- ){
scanf("%d%d",&n,&d);
int ans = d;
int k = sqrt(d);
ans = std::min(ans,(d + k - 1) / k + k - 1);
k ++ ;
ans = std::min(ans,(d + k - 1) / k + k - 1);
k -= 2;
if(k != 0)
ans = std::min(ans,(d + k - 1)/ k + k - 1);
puts((ans <= n) ? "Yes" : "No");
}
}
B
考虑枚举\(b\)的位数,然后发现\(b\)一定是 \(9999\) 这类的形式,而\(a\)可以随意取。
// code by fhq_treap
#include<bits/stdc++.h>
#define ll long long
#define N 300005
inline ll read(){
char C=getchar();
ll A=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') A=(A << 1)+(A << 3)+(C - 48) , C=getchar();
return A*F;
}
template <typename T>
void write(T x)
{
if(x < 0) {
putchar('-');
x = -x;
}
if(x > 9)
write(x/10);
putchar(x % 10 + '0');
return;
}
int t;
int main(){
scanf("%d",&t);
while(t -- ){
int a,b;
scanf("%d%d",&a,&b);
int k = 0,now = 9;
while(b >= now){
k++;
now = now * 10 + 9;
}
std::cout<<1ll * k * a<<std::endl;
}
}
C
直接暴力\(dp\),再利用前缀和优化到\(O(n^2)\)
// code by fhq_treap
#include<bits/stdc++.h>
#define ll long long
#define N 300005
#define mod ((ll)1e9 + 7)
inline ll read(){
char C=getchar();
ll A=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') A=(A << 1)+(A << 3)+(C - 48) , C=getchar();
return A*F;
}
template <typename T>
void write(T x)
{
if(x < 0) {
putchar('-');
x = -x;
}
if(x > 9)
write(x/10);
putchar(x % 10 + '0');
return;
}
//f[i][j][k] = \sum(f[i - 1][p][q](q <= k,p >= j,j <= k))
int f[1005][1005];
int g[1005][1005];
int n,m;
inline void got(){
int tmp = 0;
for(int i = 1;i <= n;++i)
for(int j = 1;j <= n;++j)
g[i][j] = 0;
for(int i = 1;i <= n;++i){
tmp = 0;
for(int j = n;j >= 1;--j){
tmp = (tmp + f[i][j]) % mod;
g[i][j] = g[i - 1][j];
g[i][j] = (g[i][j] + tmp) % mod;
}
}
}
int main(){
scanf("%d%d",&n,&m);
f[1][n] = 1;
got();
for(int i = 1;i <= m;++i){
for(int j = 1;j <= n;++j){
for(int k = j;k <= n;++k){
f[j][k] = g[j][k];
}
}
got();
}
std::cout<<g[n][1] % mod<<std::endl;
}
D
二分答案,将一个长度为 \(m\) 的数字序列转换为 \(01\) 序列。
可以获得这个答案则有两个\(01\)串或起来为全1串。
可以\(O({2^m}^2)\)做。
// code by fhq_treap
#include<bits/stdc++.h>
#define ll long long
#define N 300005
inline ll read(){
char C=getchar();
ll A=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') A=(A << 1)+(A << 3)+(C - 48) , C=getchar();
return A*F;
}
template <typename T>
void write(T x)
{
if(x < 0) {
putchar('-');
x = -x;
}
if(x > 9)
write(x/10);
putchar(x % 10 + '0');
return;
}
int n,m;
int a[300005][8];
int ansx = 1,ansy = 1;
int t[(1 << 9)];
inline bool check(int lim){
for(int i = 0;i < (1ll << m);++i)
t[i] = 0;
for(int i = 1;i <= n;++i){
int tmp = 0;
for(int j = 1;j <= m;++j){
if(a[i][j] >= lim)
tmp = tmp | (1ll << (j - 1));
}
t[tmp] = i;
}
for(int i = 0;i < (1ll << m);++i)
for(int j = 0;j < (1ll << m);++j){
if(((i | j) == ((1ll << m) - 1)) && (t[i]) && t[j]){
ansx = t[i];
ansy = t[j];
return 1;
}
}
return 0;
}
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;++i)
for(int j = 1;j <= m;++j){
scanf("%d",&a[i][j]);
}
int l = -1,r = 1e9;
#define mid ((l + r) >> 1)
while(l <= r){
if(check(mid))
l = mid + 1;
else
r = mid - 1;
}
l --;
while(check(l + 1))
l ++ ;
std::cout<<ansx<<" "<<ansy<<std::endl;
}
E
经典套路,前面留\(m\)个位置,用树状数组维护排名。
// code by fhq_treap
#include<bits/stdc++.h>
#define ll long long
#define N 300005
inline ll read(){
char C=getchar();
ll A=0 , F=1;
while(('0' > C || C > '9') && (C != '-')) C=getchar();
if(C == '-') F=-1 , C=getchar();
while('0' <= C && C <= '9') A=(A << 1)+(A << 3)+(C - 48) , C=getchar();
return A*F;
}
template <typename T>
void write(T x)
{
if(x < 0) {
putchar('-');
x = -x;
}
if(x > 9)
write(x/10);
putchar(x % 10 + '0');
return;
}
int n;
int a[N];
int minn[N],maxx[N];
int T[N << 2];
#define lowbit(x) (x & -x)
inline void add(int x,int p){
for(int i = x;i <= N << 2;i += lowbit(i))
T[i] += p;
}
inline int find(int x){
int ans = 0;
for(int i = x;i;i -= lowbit(i))
ans += T[i];
return ans;
}
int m,pos[N];
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;++i)
minn[i] = maxx[i] = i,pos[i] = m + i,add(pos[i],1);
int now = m;
for(int i = 1;i <= m;++i){
int k;
scanf("%d",&k);
minn[k] = 1;
maxx[k] = std::max(maxx[k],find(pos[k]));
add(pos[k],-1);
pos[k] = now -- ;
add(pos[k],1);
}
for(int i = 1;i <= n;++i){
maxx[i] = std::max(maxx[i],find(pos[i]));
std::cout<<minn[i]<<" "<<maxx[i]<<std::endl;
}
}
CF1288的更多相关文章
随机推荐
- Bootstrap移动端导航(简易)
效果 在线查看 代码少,都在HTML里 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 【c++ Prime 学习笔记】第12章 动态内存
对象的生存期: 全局对象:程序启动时创建,程序结束时销毁 局部static对象:第一次使用前创建,程序结束时销毁 局部自动对象:定义时创建,离开定义所在程序块时销毁 动态对象:生存期由程序控制,在显式 ...
- 对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)
前言 这是<Spring Cloud 进阶>专栏的第六篇文章,往期文章如下: 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强? openFeign夺命连环9问,这谁受得了? 阿里面 ...
- Manjaro / ArchLinux 安装网易云音乐解决搜索不能输入中文方法
0. 安装网易云音乐 yay -S netease-cloud-music 1.先安装qcef这个软件包. sudo yay -S qcef 2.编辑/opt/netease/netease-clou ...
- BUAA 2020 软件工程 个人项目作业
BUAA 2020 软件工程 个人项目作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 ...
- 文献翻译|Design of True Random Number Generator Based on Multi-stage Feedback Ring Oscillator(基于多级反馈环形振荡器的真随机数发生器设计)
基于多级反馈环形振荡器的真随机数发生器设计 摘要 真随机数生成器(trng)在加密系统中起着重要的作用.本文提出了一种在现场可编程门阵列(FPGA)上生成真随机数的新方法,该方法以 多级反馈环形振荡器 ...
- cat userlist(课上练习)
问题描述 Linux文件系统的三层抽象是什么? 写出Cat userlist的过程,要详述目录文件,i-node.数据块,要画图示意. 假设块大小为4k, userlist的大小不小于10k,自己假设 ...
- readelf
readelf的help内容如下所示: Usage: readelf <option(s)> elf-file(s) Display information about the conte ...
- hdu 1856 More is better(并查集)
题意: Mr Wang wants some boys to help him with a project. Because the project is rather complex, the m ...
- Docker+nginx搭建tomcat集群
1.环境准备: a.宿主机CentOS7 b.连接工具FinalShell c.镜像nginx1.20.1,tomcat (镜像拉取:docker pull 镜像名称) 2.创建nginx文件夹,to ...