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. KPI、KPA、OKR三者的区别

    KPI.KPA或者OKR并不是水火不相容有你无我的概念,针对不对的业务状态.管理模式应该有所选择.以下是介绍它们之间的区别. 什么是KPI关键绩效指标 KPI(key performance indi ...

  2. EasyDSS流媒体服务器灵活地帮助用户实现摄像机RTSP转RTMP直播功能

    简要描述 今天突然接到国内某上市公司同事打来的技术咨询电话,经过简单的沟通,大概所描述的需求是: 1.目前现场有非常多的摄像机资源需要接入: 2.需要将摄像机的RTSP流转成RTMP流接入到微信小程序 ...

  3. Symfony 上传图片教程

    介绍:我使用的Bundle:"vich/uploader-bundle": "^1.4"; "liip/imagine-bundle": & ...

  4. CryptoJS加密

    <script type="text/javascript" src="CryptoJS/core.min.js"></script>& ...

  5. 【HTTP】HTPP学习笔记

    1.了解web及网络基础 HTTP的诞生 TCP/IP协议族 应用层 FTP文件传输协议 HTTP超文本传输协议 DNS域名系统:IP地址<--->域名 传输层 TCP传输控制协议 三次握 ...

  6. sprintf在51单片机中的使用

    sprintf在51单片机中的使用 unsigned char ch20_str[4]; unsigned char ch2o_m_str[6]; ch2o = 123; ch2o_m = 23456 ...

  7. linux mount一个硬盘

    我们在使用linux的情况下,难免有时会需要增加一块硬盘,在windows下增加硬盘很简单,所有的操作都是有画面.linux下增加一块硬盘,并且让这块硬盘可以正常的使用,所有的操作都在字符命令行的方式 ...

  8. [原创]java WEB学习笔记12:一个简单的serlet连接数据库实验

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. android 电池(二):android关机充电流程、充电画面显示【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/8498580 上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下a ...

  10. 签offer和签三方协议

    一般来讲,签约分为两种:签offer和签三方协议.其中,前者对个人及企业的约束效力远不及后者.下面分别来介绍. 1.签offer offer一般是单位提供给你的一个录用意向,以合同的形式提供给你,要求 ...