T1 rob

环形消灭虫子

先想出了一个n^2暴力

然后我们想到 如果从两个连续的点求解 则会出现仅有的两种结果

(因为这两种情况的交是全集)

当时因为Naive求了50次

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#define ll long long
using namespace std;
int a[*];
ll dp[*];
int main()
{
freopen("rob.in","r",stdin);
freopen("rob.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=;i<=n;i++){scanf("%d",&a[i]);a[i+n]=a[i];}
ll res=-;
int tms=min(n,);
for(int i=;i<tms;i++)
{
memset(dp,,sizeof(dp));
for(int j=;j<=n;j++)
{
if(j>)dp[j]=dp[j-];
if(j>= && dp[j]<dp[j-])dp[j]=dp[j-];
dp[j]+=a[j+i];
}
dp[n]=max(dp[n-],dp[n-]);
res=max(res,dp[n]);
}
printf("%lld",res);
return ;
}

T2 destroy

有n个点m条边

现在删掉一些边 把图分为两个联通块 求两个联通块中权值之和最小值

我们跑一个最小生成树 再把其中最大的一条边砍掉 就可以保证 剩下的是两个联通块 且权值之和最小

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#define ll long long
using namespace std;
inline int read()
{
char ch=getchar();
int x=,f=;
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=*x+ch-'';ch=getchar();}
return x*f;
}
int n,m;
struct edg
{
int from,to;
ll val;
bool operator <(const edg b)const
{
return val<b.val;
}
}es[];
int cnt;
int fa[];
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);} inline void add(int u,int v,int w)
{
es[cnt++]=(edg){u,v,w};
}
ll mx,sm;
void kruskal()
{
sort(es,es+cnt);
for(int i=;i<=cnt;i++)fa[i]=i;
for(int i=;i<cnt;i++)
{
int fx=find(es[i].from);
int fy=find(es[i].to);
if(fx!=fy)
{
mx=max(mx,es[i].val);
sm+=es[i].val;
fa[fx]=fy;
}
}
} int main()
{
freopen("destroy.in","r",stdin);
freopen("destroy.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
kruskal();
printf("%lld",sm-mx);
return ;
}

T3 permutation

给定n个数 求这n个数全排列中满足

对所有 2 ≤ i ≤ N - 1,都有 A[i - 1] + A[i + 1] ≥ 2 × A[i]

的方案数

50分 全排列

70分 状压 n^3*2^n

100分 爆搜

爆搜。。。

但是LZJ巨神告诉我们 事情并没有这么简单

首先  满足条件的序列肯定是下凸的单峰型

首先考虑序列

i  j  ... ...  l  k

现在要在这个序列左端插入一个x 只要满足 a[x]-a[j]>=2*a[i]就可以插进来 j l之间是什么数并不影响结果

右端插x同理

于是我们排序 枚举每个数往左插还是往右插

复杂度n^5

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#define ll long long
const int MOD=;
using namespace std;
inline int read()
{
char ch=getchar();
int x=,f=;
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=*x+ch-'';ch=getchar();}
return x*f;
}
int a[];
int n;
ll ans;
int dp[][][][];
bool vis[][][][];
int cnt[];
void dfs(int i,int j,int k,int l)
{
if(vis[i][j][k][l])return;
vis[i][j][k][l]=;
int mx=max(i,max(j,max(k,l)));
mx++;
if(mx==n)
{
if((!j||a[j]-a[i]>=a[i]-a[mx]) && (!l||a[l]-a[k]>=a[k]-a[mx])) (ans+=dp[i][j][k][l])%=MOD;
return;
}
for(int o=;o<=cnt[mx];o++)
{
bool flag1=,flag2=;
if(!j||a[mx]+a[j]>=*a[i]||!o)flag1=;
if(!l||a[mx]+a[l]>=*a[k]||!(cnt[mx]-o))flag2=;
if(flag1 && flag2)
{
int ni=i,nj=j,nk=k,nl=l;
if(o==)nj=i,ni=mx;
else if(o>)nj=ni=mx;
if(cnt[mx]-o==)nl=k,nk=mx;
else if(cnt[mx]-o>)nl=nk=mx;
(dp[ni][nj][nk][nl]+=dp[i][j][k][l])%=MOD;
}
}
} int main()
{
//freopen("permutation.in","r",stdin);
//freopen("permutation.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)a[i]=-read();
sort(a+,a+n+);
int tag=;
for(int i=;i<=n;i++)a[i]=-a[i];
for(int i=;i<=n;i++)
{
if(a[i]==a[tag])cnt[tag]++;
else
{
a[++tag]=a[i];
cnt[tag]=;
}
}
n=tag;
dp[][][][]=;
for(int i=;i<n;i++)
for(int j=;j<=i;j++)
for(int k=;k<=i;k++)
for(int l=;l<=k;l++)
{
dfs(i,j,k,l);
dfs(k,l,i,j);
}
for(int i=;i<=n;i++)
for(int j=;j<=cnt[i];j++)(ans*=j)%=MOD;
cout<<ans;
}

Orz LZJ

最后得分应该是80+100+50=230

(第一题爆int咯妈了个zz)

但是xgy错了一个价值80分的等号

yyc错了价值...不知道多少分反正好多好多分的三个字符

所以我好像是3个250中考的最高的Orz

noip模拟赛Bywzj52501 17.10.18的更多相关文章

  1. noip 模拟赛 After 17(递推+特殊的技巧)

    来源:Violet_II T1 好神的一题,我竟然没做出来QAQ 首先我们发现,答案是sigma(x[i]*x[j], i>j)+sigma(y[i]*y[j], i>j).显然只需要讨论 ...

  2. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  3. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  4. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  5. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

  6. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  7. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  8. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  9. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

随机推荐

  1. 第三方-Swift2.0后Alamofire的使用方法

    第一部分,配置项目 首先我们创建一个工程如下图 在此只讲纯手打拉第三方框架的方法 然后把下载的Alamofire解压文件全部放进创建的项目文件夹中,如下图 关键时刻到了哦,集中精神,注意!!! 这个图 ...

  2. 用C#来学习唐诗三百首和全唐诗

    Begin 最近把项目做完了,闲来无事,就想做点好玩的事情,刚好前几天下载了[唐诗三百首]和[全唐诗]这两个txt文件,正好用C#来整理一下. 然后导出QData格式,可以给其他软件读取. 以后弄个开 ...

  3. TextView实现打印机效果 ,字符串逐字显示

    https://github.com/lygttpod/AndroidCustomView/blob/master/app/src/main/java/com/allen/androidcustomv ...

  4. 爬虫入门【2】Requests库简介

    发送请求 使用Requests发送网络请求很简单 #首先要导入requests库 import requests #返回一个Response对象 r=requests.get('https://git ...

  5. nginx学习之进程控制篇(三)

    1. 进程 nginx有一个master进程和一个或多个工作进程. master process worker process or master process worker process wor ...

  6. Pipeline outbound

    netty源码死磕8 Pipeline outbound 出站流程揭秘 1. Pipeline outbound流程 1.1. 出站的定义 简单回顾一下. 出站(outbound) 操作,通常是处于上 ...

  7. "ORA-01012: not logged on"以及"Connected to an idle instance."解决思路

    今天测试用的ORACLE服务器出现卡顿情况,于是准备重启一下,在运行shutdown指令关闭数据库的时候意外断开连接,后面想再次进入ORACLE服务器启动时便遇见如下报错: 使用sqlplus /no ...

  8. js hoisting

    1.变量提升 var x = 2; function test(){ console.log(x) var x = 1; } ==>运行程序报错,在test()函数中,x被提升到了顶部声明,相当 ...

  9. 读a paper of ICCV 2017 : Areas of Attention for Image Captioning

    前言废话,作者说把代码公布在gitub上,但是迟迟没有公布,我发邮件询问代码情况,邮件也迟迟不回,表示很尴尬..虽然种种这些,但是工作还是好工作,这个没的黑,那我们今天就来详细的介绍这篇文章. 导论: ...

  10. zend 和 esftp插件开发大型PHP项目,ZEND最常用快捷键

    先说一下如何安装zend的esftp插件,下载插件esftp-1.1.1.zip,下载地址http://sourceforge.net/projects/esftp/ 或者 http://yun.ba ...