小$P$的咕事

总结:

还行,就是$T1$写的慢了,$T2,T3$暴力有点锅

T1

小模拟。

打就是了。

可以小小的手玩一下。

(考试的时候某同志人肉对拍了$20min$)=.=

418 ms 360 KiB C++11 / 4.1 K
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#define N 10
#define Up 0
#define Down 1
#define Left 2
#define Right 3
#define LL long long using namespace std;
int bd[N][N],legal=0;
int bef[N][N],aft[N][N];
int bl,chn;
bool failed=0;
LL sco=0;
vector<int> dat;
void pour(){
for(int i=1;i<=bl;i++){
for(int j=1;j<=bl;j++){
if(bd[i][j]==0)printf(" ");
else printf("%4d",bd[i][j]);
}puts("");
}
}
void tou(){
int num;
for(int c=1;c<=bl;c++){
num=0;
dat.clear();
for(int l=1;l<=bl;l++){
// cout<<l<<" "<<c<<" "<<num<<endl;
// for(int i:dat){
// cout<<i<<" ";
// }
// if(!dat.empty())cout<<endl;
if(bd[l][c]==0)continue;
if(num==0)num=bd[l][c];
else {
if(num==bd[l][c]){
dat.push_back(num<<1);
sco+=num<<1;
num=0;
}
else{
dat.push_back(num);
num=bd[l][c];
}
}
}
if(num!=0)dat.push_back(num);
int vid=0;
for(int l=1;l<=bl;l++)
bd[l][c]=0;
for(int l=1;l<=bl;l++){
if(vid==dat.size())
break;//All set
bd[l][c]=dat[vid];
vid++;
}
}
}
void tod(){
int num;
for(int c=1;c<=bl;c++){
num=0;
dat.clear();
for(int l=bl;l>=1;l--){
// cout<<l<<" "<<c<<" "<<num<<endl;
if(bd[l][c]==0)continue;
if(num==0)num=bd[l][c];
else {
if(num==bd[l][c]){
dat.push_back(num<<1);
sco+=num<<1;
num=0;
}
else{
dat.push_back(num);
num=bd[l][c];
}
}
}
if(num!=0)dat.push_back(num);
int vid=0;
for(int l=bl;l>=1;l--)
bd[l][c]=0;
for(int l=bl;l>=1;l--){
if(vid==dat.size())
break;//All set
bd[l][c]=dat[vid];
vid++;
}
} }
void tol(){
int num;
for(int l=1;l<=bl;l++){
num=0;
dat.clear();
for(int c=1;c<=bl;c++){
if(bd[l][c]==0)continue;
if(num==0)num=bd[l][c];
else {
if(num==bd[l][c]){
dat.push_back(num<<1);
sco+=num<<1;
num=0;
}
else{
dat.push_back(num);
num=bd[l][c];
}
}
}
if(num!=0)dat.push_back(num);
int vid=0;
for(int c=1;c<=bl;c++)
bd[l][c]=0;
for(int c=1;c<=bl;c++){
if(vid==dat.size())
break;//All set
bd[l][c]=dat[vid];
vid++;
}
}
}
void tor(){
int num;
for(int l=1;l<=bl;l++){
num=0;
dat.clear();
for(int c=bl;c>=1;c--){
if(bd[l][c]==0)continue;
if(num==0)num=bd[l][c];
else {
if(num==bd[l][c]){
dat.push_back(num<<1);
sco+=num<<1;
num=0;
}
else{
dat.push_back(num);
num=bd[l][c];
}
}
}
if(num!=0)dat.push_back(num);
int vid=0;
for(int c=bl;c>=1;c--)
bd[l][c]=0;
for(int c=bl;c>=1;c--){
if(vid==dat.size())
break;//All set
bd[l][c]=dat[vid];
vid++;
}
}
}
void make_new(int k,int val){
int tot=0,cnt=0;
for(int i=1;i<=bl;i++)
for(int j=1;j<=bl;j++)
if(bd[i][j]==0)tot++;
if(tot==0)return ;
k=1+k%tot;
for(int i=1;i<=bl;i++){
for(int j=1;j<=bl;j++){
if(bd[i][j]==0){
cnt++;
if(cnt==k){
bd[i][j]=val;
return ;
}
}
}
}
}
bool check(){
for(int i=1;i<=bl;i++)
for(int j=1;j<=bl;j++)
if(aft[i][j]!=bef[i][j])return 1;
return 0;
}
int main(){
int a,b,c;
// freopen("game.in" ,"r",stdin);
// freopen("game.out","w",stdout);
scanf("%d%d",&bl,&chn);
scanf("%d%d%d",&a,&b,&c);
bd[a][b]=c;
scanf("%d%d%d",&a,&b,&c);
bd[a][b]=c;
for(int i=1;i<=chn;i++){
scanf("%d%d%d",&a,&b,&c);
for(int j=1;j<=bl;j++)
for(int k=1;k<=bl;k++)
bef[j][k]=bd[j][k];
// puts("============================");
// pour();
switch(a){
case Up:// cout<<"---------Up------------"<<endl;
tou();
break;
case Down:// cout<<"--------Down------"<<endl;
tod();
break;
case Left://cout<<"----------Left--------"<<endl;
tol();
break;
case Right: //cout<<"----------Right-----------"<<endl;
tor();
break;
default:puts("Wrong Input");
}
// pour();
for(int j=1;j<=bl;j++)
for(int k=1;k<=bl;k++)
aft[j][k]=bd[j][k];
if(!check())break;
legal++;
make_new(b,c);
}
printf("%d\n%lld\n",legal,sco);
}

T2

终于让我用树状数组维护了一回$dp$

树状数组太棒辣!

××话说我刚开始颓了半天如何维护区间最值。(话说我只要前后缀……)

不过我都打了点了不如放在这……

#define N 111111
int pre[N];
inline int lowbit(int x){return x&(-x);}
void chan(int pos,int val){//修值
while(pos<=pn){
pre[pos]=val;
int ppos=lowbit(pos);
for(int i=1;i<ppos;i<<=1)
ch[x]=max(ch[x],ch[x-i]);
pos+=lowbit(pos);
}
}
int maxn(int l,int r){//查值
int res=0;
while(l<=r){
res=max(pre[r],res);
r--;
for(;r-lowbit(r)>=l;r-=lowbit(r))
res=max(pre[r],res);
}
return res;
}

然后才是正解$qwq$

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#define N 111111
#define LF double using namespace std; int nn,vn,arr[N],val[N];
LF pre[N],aft[N];
LF szsz[N],ans;
inline int fvind(int v){return lower_bound(val+1,val+vn+1,v)-val;}
inline int lowbit(int x){return x&(-x);}
void add(int pos,LF va){
while(pos<=nn){
szsz[pos]=max(szsz[pos],va);
pos+=lowbit(pos);
}
}
LF query(int pos){
LF res=0;
while(pos){
res=max(res,szsz[pos]);
pos-=lowbit(pos);
}
return res;
}
int main(){
scanf("%d",&nn);
for(int i=1;i<=nn;i++){
scanf("%d",arr+i);
val[i]=arr[i];
}
sort(val+1,val+nn+1);
vn=unique(val+1,val+nn+1)-val-1;
for(int i=1;i<=nn;i++)
arr[i]=fvind(arr[i]);
for(int i=1;i<=nn;i++){
pre[i]=query(arr[i]-1)+val[arr[i]];
add(arr[i],pre[i]);
}
memset(szsz,0,sizeof szsz);
for(int i=nn;i>=1;i--){
aft[i]=query(arr[i]-1)+val[arr[i]];
add(arr[i],aft[i]);
}
for(int i=1;i<=nn;i++){
// cout<<pre[i]<<" "<<aft[i]<<endl;
ans=max(ans,pre[i]);
// ans=max(ans,aft[i]);
ans=max(ans,(pre[i]+aft[i]-val[arr[i]])/2.0);
}
printf("%.3lf\n",ans);
}

T3

打法一:

随机化

打法二:

随机化

打法三:

随机化

打法四:

随机化

打法五:

枚举斜率直接把每个复数看成向量投影在斜率方向,最后搞一搞。$(gugugu)$

19.10.14-Q的更多相关文章

  1. Java每日一面(Part1:计算机网络)[19/10/14]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.1 说一说TCP的四次挥手 ​ "挥手",即终止TCP连接,断开一个TCP连接池. ​ 需要客户端和服务端总共发出四个包,以 ...

  2. Ubuntu 19.10 安装 jupyter

    安装pip3 ubuntu 19.10 已经没有python了,取代的是python3. 执行sudo apt install python3-pip安装pip3 安装jupyter 执行sudo p ...

  3. 程序员的 Ubuntu 19.10 配置与优化指南

    原文地址:程序员的 Ubuntu 19.10 配置与优化指南 0x00 环境 CPU: Intel Core i9-9900k GPU: GeForce RTX 2070 SUPER RAM: DDR ...

  4. 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画

    [源码下载] 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画 作者:webabcd 介绍背水一战 Windows 10 之 动画 线性动画 - ColorAnimatio ...

  5. Thinkpad W520 + Ubuntu 12.04LTS, 13.10, 14.04LTS安装Nvidia显卡驱动设置

    Thinkpad W520 + Ubuntu 12.04LTS, 13.10, 14.04LTS安装Nvidia显卡驱动设置 http://henzhai.com/tech/2012/07/w520- ...

  6. macOS 10.14虚拟机安装教程

    windows10下安装vmware14.0以及macOS 10.14图文详解 工具/原料   windows10 vmware 14.0 macOS 10.14懒人版 mac补丁unlocker工具 ...

  7. OS + macOS Mojave 10.14.4 / sushi / ssh-keygen / ssh-copy-id

    s 系统版本: macOS 10.14.4 (18E226) 内核版本: Darwin 18.5.0 型号名称: Mac mini 2014 型号标识符: Macmini7,1 处理器名称: Inte ...

  8. VMware15安装MAC(MAC OS 10.13)(OS X 10.14)原版可升级最新可解锁macOS Unlocker3.0(OS X 10.13)

      目录树 1.1.2安装环境: 1.1.3所需资源: 1.1.4 Unlocker 3.0解锁 1.1.5 配置环境 1.1.6开始安装 1.1.7开启虚拟机进入MAC安装界面 1.1.8 macO ...

  9. APPLE-SA-2019-3-25-2 macOS Mojave 10.14.4,Security Update 2019-002 High Sierra, Security Update 2019-002 Sierra

    APPLE-SA-2019-3-25-2 macOS Mojave 10.14.4, Security Update2019-002 High Sierra, Security Update 2019 ...

  10. VMWare 14.1 15 Pro 安装 macOS Mojave 10.14.1系统 遇到的问题解决方案

    安装环境 WIN10VMware Workstation Pro 15.0.0 Build 10134415工具准备1.VMware Workstation Pro 15.0.0 Build 1013 ...

随机推荐

  1. 修改docker+jenkins挂载目录

    1.停止docker [root@jenkins data]# systemctl stop docker 2.创建目录,拷贝数据 [root@jenkins data]# mkdir -p /new ...

  2. (转)Android在子线程中更新Activity中UI的方法

    转:http://blog.sina.com.cn/s/blog_3fe961ae0100mvc5.html 在Android平台下,进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些处 ...

  3. Windows下DNS ID欺骗的原理与实现

    域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息.通常,网络用户通过UDP协议和DNS服务器进行通信,而服务器在特定的53端口监听,并返回用户所需 ...

  4. VS2010-MFC(常用控件:滚动条控件Scroll Bar)

    转自:http://www.jizhuomi.com/software/191.html 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合框设置了相应属性 ...

  5. day17_内置函数_文件处理

    20180729    修改部分代码 更新:# # 5.max与列表指定参数 20180728    初次上传 #!/usr/bin/env python # -*- coding:utf-8 -*- ...

  6. VMware下CentOS6.5无法连接网络

    VMware下CentOS6.5无法连接网络的主要原因就是eth0文件配置了不正确的地址 正确配置方法如下: 1.确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然 ...

  7. 19.SimLogin_case04

    # 利用cookies登录马蜂窝 import requests from lxml import etree session = requests.Session() phone_number = ...

  8. 拦截器(Interceptor)与过滤器(Filter)的区别

    转自:https://www.jianshu.com/p/cf088baa9b04 过滤器,是在java web中将你传入的request.response提前过滤掉一些信息,或者提前设置一些参数.然 ...

  9. AJAX相关概念及应用

    1.Ajax(Asynchronous JavaScript And XML) 异步的JavaScript和XML XML 可扩展标记语言 Ajax是常用的WEB开发技术,是联系前端和后端的桥梁 应用 ...

  10. rem适配手机

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...