小$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. hdu多校第三场 1007 (hdu6609) Find the answer 线段树

    题意: 给定一组数,共n个,第i次把第i个数扔进来,要求你删掉前i-1个数中的一些(不许删掉刚加进来这个数),使得前i个数相加的和小于m.问你对于每个i,最少需要删掉几个数字. 题解: 肯定是优先删大 ...

  2. day18_文件处理_迭代器_生成器

    #!/usr/bin/env python # -*- coding:utf-8 -*- # ********************day18_文件处理_迭代器_生成器 ************** ...

  3. ie6-8 avalon2 单页应用项目实战备忘

    坑爹的ie,作为小组leader,尼玛,小伙伴儿们不乐意做的事情,我来做好了..心累... 如果,各位同学有定制开发ie6-8版本的需求,还是尽量不要用单页应用模式了,也不要用avalon这类mvvm ...

  4. 关于type return to continue,or q <return> to quit

    由于GDB要打印的信息被分页了 所以需要设置不分页显示 set pagination off

  5. awk 一些题目

    1.1. 输出记录最多的IP [腾讯面试题]:一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是重复的),写一个shell脚本输出登陆次数最多的用户. Ip_input.txt的内容假设如下: ...

  6. java_日历类

    calendar是日历类,该类是抽象类不能被实例化 public class CalendarTest { /* 创建对象和方法的使用 */ public static void main(Strin ...

  7. sparkStreaming入门

    1.环境 jdk : 1.8 scala : 2.11.7 hadoop:2.7 spark : 2.2.0 2. 开发工具 idea 2017.2 3.maven的pom文件 <depende ...

  8. iOS开发系列-线程同步技术

    概述 多线程的本质就是CPU轮流随机分配给每条线程时间片资源执行任务,看起来多条线程同时执行任务. 多条线程同时访问同一块资源,比如操作同一个对象.统一变量.同一个文件,就会引发数据错乱和数据安全的问 ...

  9. iOS开发系列-GCD

    概述 GCD是苹果公司为多核的并行运算提出的解决方案.全称是Grand Central Dospatch.纯C语言,提供了非常多强大的函数. GCD自动管理线程的声明周期(创建线程.调度任务.销毁线程 ...

  10. JQuery和JavaScript常用方法的一些区别

    jquery 就对javascript的一个扩展,封装,就是让javascript更好用,更简单,为了说明区别,下面与大家分享下JavaScript 与JQuery 常用方法比较   jquery 就 ...