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. 图片剪裁控件——ClipImageView

    这段时间在做自己的项目时,须要使用到图片剪裁功能,当时大概的思考了一些需求.想到了比較简单的实现方法.因此就抽了点时间做了这个图片剪裁控件--ClipImageView 这里先贴上ClipImageV ...

  2. 网站存储session的方案

    1: ASP.NET State Service是什么 用来管理 Session 的,正常来说,Session 位于IIS进程中(其实可以理解成在服务器的内存中),当IIS重启或程序池回收会自动清空S ...

  3. 我的Android进阶之旅------>Android系统设置默认来电铃声、闹钟铃声、通知铃声

    首先了解Android系统本身提供的默认铃声文件,这些文件都放在  /system/media/audio  目录下. /system/media/audio/ringtones   系统来电铃声 / ...

  4. 程序运行之ELF文件的段

    我们将之前的代码增加下变量来具体看下 在代码中增加了全局变量以及静态变量,还有一个简单的函数. #include <stdio.h> int global_var=1; int globa ...

  5. iview 表单相关

    view表单验证的步骤: 第一步:给 Form 设置属性 rules :rules第二步:同时给需要验证的每个 FormItem 设置属性 prop 指向对应字段即可 prop=”“第三步:注意:Fo ...

  6. sqlalchemy——多表操作

    一对多:一对一 # one -- many class Students(Base): __tablename__ = "students" sid = Column(Intege ...

  7. mysql主从复制(linux下)

    转至:http://369369.blog.51cto.com/319630/790921 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:   1. ...

  8. php基本语法与函数

    1.标记与注释 <?php 代码 ?> 用/*  */注释一段代码,  用 // 注释一行代码   /**    */文档注释 注意:若php下面只有php代码没有别的代码,那么最好不要加 ...

  9. Android FrameLayout单帧布局

    FrameLayout:所有控件位于左上角,并且直接覆盖前面的子元素. 在最上方显示的层加上: android:clickable="true" 可以避免点击上层触发底层. 实例: ...

  10. hadoop 根据secondary namenode恢复namenode

    refer to http://www.cnblogs.com/Richardzhu/p/3435989.html http://blog.csdn.net/wuzhilon88/article/de ...