小$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. ros多机系统

    编辑从机的~/.bashrc添加如下指令 方法一 export ROS_MASTER_URI=http://qian:11311 #qian是主机的机器名 export ROS_HOSTNAME=ro ...

  2. duilib库分析3.DUILibxml配置

    我这里是借用网友colin3dmax整理的关于duilib的分析哈,感谢他的分享,我觉得很有必要贴出来让大家都学习观摩下 DUILibxml配置项根节点        子类      属性       ...

  3. 20175323《Java程序设计》第三周学习总结

    教材学习内容总结 这周开始用幕布记录学习过程和思路,下面是我这章的知识框架总结https://mubu.com/doc/aNMW9Clym0 教材学习中的问题和解决过程 问题1:教材90页的Trian ...

  4. Redis-GEO

    一. Redis的GEO特性 Redis3.2版本提供了GEO功能,支持存储地理位置信息用来实现诸如摇一摇,附近位置这类依赖于地理位置信息的功能.二. 命令2.1 增加地理位置信息 命令:geoadd ...

  5. 杂项-语言-Swift:Swift

    ylbtech-杂项-语言-Swift:Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于 ...

  6. clipboard.js操作剪贴版——一些移动端交互和兼容经验

    https://github.com/zenorocha/clipboard.js 库,真的是个好库,而且不依赖flash,几乎完美支持移动端.但是,移动端应用有些不趟不知的小tip,这里归档下. 原 ...

  7. iconfont 在vue项目中的应用(icon-component组件)

    前言:上一篇记录了iconfont的三种基本使用方法. 在Vue中应该如何使用呐?Vue中的组件化思想很明确,要提高组件的复用率,增强项目的可维护性,扩展性.以下是采用icontfont的使用方式之s ...

  8. MFC 窗口刷新防止闪烁方法

    防止窗口闪烁的方法 1.将Invalidate()替换为InvalidateRect(). Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重 ...

  9. 【默默努力】vue-pc-app

    最近在github上面看到了一个团队的项目,真的非常赞.他们进行vue-cli的二次开发,将项目用自己的方式打包. 今天的这个开源项目地址为:https://github.com/tffe-team/ ...

  10. php访问其他网站接口

    使用函数:  file_get_contents($url); 传入接口url及其参数:如 $url="http://192.168.1.1/test.jsp?id=1&type=2 ...