noip模拟赛Bywzj52501 17.10.18
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的更多相关文章
- noip 模拟赛 After 17(递推+特殊的技巧)
来源:Violet_II T1 好神的一题,我竟然没做出来QAQ 首先我们发现,答案是sigma(x[i]*x[j], i>j)+sigma(y[i]*y[j], i>j).显然只需要讨论 ...
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- NOI.AC NOIP模拟赛 第五场 游记
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
随机推荐
- 第三方-Swift2.0后Alamofire的使用方法
第一部分,配置项目 首先我们创建一个工程如下图 在此只讲纯手打拉第三方框架的方法 然后把下载的Alamofire解压文件全部放进创建的项目文件夹中,如下图 关键时刻到了哦,集中精神,注意!!! 这个图 ...
- 用C#来学习唐诗三百首和全唐诗
Begin 最近把项目做完了,闲来无事,就想做点好玩的事情,刚好前几天下载了[唐诗三百首]和[全唐诗]这两个txt文件,正好用C#来整理一下. 然后导出QData格式,可以给其他软件读取. 以后弄个开 ...
- TextView实现打印机效果 ,字符串逐字显示
https://github.com/lygttpod/AndroidCustomView/blob/master/app/src/main/java/com/allen/androidcustomv ...
- 爬虫入门【2】Requests库简介
发送请求 使用Requests发送网络请求很简单 #首先要导入requests库 import requests #返回一个Response对象 r=requests.get('https://git ...
- nginx学习之进程控制篇(三)
1. 进程 nginx有一个master进程和一个或多个工作进程. master process worker process or master process worker process wor ...
- Pipeline outbound
netty源码死磕8 Pipeline outbound 出站流程揭秘 1. Pipeline outbound流程 1.1. 出站的定义 简单回顾一下. 出站(outbound) 操作,通常是处于上 ...
- "ORA-01012: not logged on"以及"Connected to an idle instance."解决思路
今天测试用的ORACLE服务器出现卡顿情况,于是准备重启一下,在运行shutdown指令关闭数据库的时候意外断开连接,后面想再次进入ORACLE服务器启动时便遇见如下报错: 使用sqlplus /no ...
- js hoisting
1.变量提升 var x = 2; function test(){ console.log(x) var x = 1; } ==>运行程序报错,在test()函数中,x被提升到了顶部声明,相当 ...
- 读a paper of ICCV 2017 : Areas of Attention for Image Captioning
前言废话,作者说把代码公布在gitub上,但是迟迟没有公布,我发邮件询问代码情况,邮件也迟迟不回,表示很尴尬..虽然种种这些,但是工作还是好工作,这个没的黑,那我们今天就来详细的介绍这篇文章. 导论: ...
- zend 和 esftp插件开发大型PHP项目,ZEND最常用快捷键
先说一下如何安装zend的esftp插件,下载插件esftp-1.1.1.zip,下载地址http://sourceforge.net/projects/esftp/ 或者 http://yun.ba ...