5.22 noip模拟赛
本来我是不想写的,无奈不会写。蒟蒻 考场就是想不出来 今天得到了100分额外水过了100分我是真的失败。还有一个根本不会check 感觉自己非常之菜。
这道题是这样的 还行吧比较有意思 首先确立一个真命题对于一个入度为2的点其一定是属于链上的一点的。因为 考虑其不在链上的情况如果连接的是不管连接的一定是多度数点>=3和其他的点但其末尾一定是一个度数等于1的点我们将其提上来把当前的点插到直径上即可。为什么不考虑单度数点呢?因为树的直径一定只有两个单度数点我们考虑也没用。
再确定一个假命题 当一棵树的度数一定是这颗树也确定,假的!同分异构体和等效氢的方法将其排除!那么此时对答案的影响就只有多度数点了考虑对答案的贡献是 任意一个多度数点和双度数点一样都可以连在树的直径之上这个我们随便想都是可行的。于是有解法了 对于多度数点删一些边即可当度数>=3时删掉n-2条边然后就没了。
//#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<iomanip>
#include<cctype>
#include<cstdio>
#include<deque>
#include<utility>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 1000000000
#define ll long long
#define db double
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline int read()
{
int x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
inline void put(int x)
{
x<?putchar('-'),x=-x:;
int num=;char ch[];
while(x)ch[++num]=x%+'',x/=;
num==?putchar(''):;
while(num)putchar(ch[num--]);
putchar('\n');return;
}
const int MAXN=;
int n,flag,ans,cnt,flag1;
int a[MAXN];
int main()
{
freopen("1.in","r",stdin);
//freopen("tree.in","r",stdin);
//freopen("tree.out","w",stdout);
n=read();ans=n-;
for(int i=;i<=n;++i)
{
a[i]=read();
if(a[i]>=)ans-=a[i]-;
if(a[i]==n-&&n>)flag1=;
if(a[i]<=)flag=;
cnt+=a[i];
}
if(cnt!=((n-)<<))flag=;
if(flag==){put(-);return ;}
if(flag1==){put();return ;}
put(ans);
return ;
}
看完题目显然是一个二分 但是我不会check 丢人 check是 找到ad的值域和bc的值域观察是否有交集即可。
我没想到我不知道为什么我会没想到 这我知道了以后感觉很显然就这样判断一下就是100分诶。
//#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<iomanip>
#include<cctype>
#include<cstdio>
#include<deque>
#include<utility>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 1000000000
#define ll long long
#define db double
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline int read()
{
int x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
inline void put(int x)
{
x<?putchar('-'),x=-x:;
int num=;char ch[];
while(x)ch[++num]=x%+'',x/=;
num==?putchar(''):;
while(num)putchar(ch[num--]);
putchar('\n');return;
}
int a,b,c,d;
inline int check(db x)
{
db maxx,maxx1,minn,minn1;
maxx=maxx1=-(ll)INF*(ll)INF*1.0;
minn=minn1=(ll)INF*(ll)INF*1.0;
db a1=a+x,a2=a-x;
db b1=b+x,b2=b-x;
db c1=c+x,c2=c-x;
db d1=d+x,d2=d-x;
maxx=max(maxx,a1*d1);
maxx=max(maxx,a1*d2);
maxx=max(maxx,a2*d1);
maxx=max(maxx,a2*d2);
minn=min(minn,a1*d1);
minn=min(minn,a1*d2);
minn=min(minn,a2*d1);
minn=min(minn,a2*d2);
maxx1=max(maxx1,c1*b1);
maxx1=max(maxx1,c1*b2);
maxx1=max(maxx1,c2*b1);
maxx1=max(maxx1,c2*b2);
minn1=min(minn1,c1*b1);
minn1=min(minn1,c1*b2);
minn1=min(minn1,c2*b1);
minn1=min(minn1,c2*b2);
if(minn<=maxx1&&minn>=minn1)return ;
if(maxx<=maxx1&&maxx>=minn1)return ;
return ;
}
int main()
{
freopen("1.in","r",stdin);
//freopen("matrix.in","r",stdin);
//freopen("matrix.out","w",stdout);
a=read();b=read();c=read();d=read();
//if(a==1&&b==2&&c==3&&d==4){puts("0.2000000000");return 0;}
db l=,r=1000000000.0;
while(l+0.0000001<r)
{
db mid=(l+r)/;
if(check(mid))r=mid;
else l=mid;
}
if(check(l))printf("%.12lf",l);
else printf("%.12lf",r);
return ;
}
这个简单一个矩阵快速幂解决了。。
//#include<bits/stdc++.h>
#include<iostream>
#include<queue>
#include<iomanip>
#include<cctype>
#include<cstdio>
#include<deque>
#include<utility>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x))
#define INF 1000000000
#define ll long long
#define db double
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline ll read()
{
ll x=,f=;char ch=getc();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getc();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getc();}
return x*f;
}
inline void put(ll x)
{
x<?putchar('-'),x=-x:;
ll num=;char ch[];
while(x)ch[++num]=x%+'',x/=;
num==?putchar(''):;
while(num)putchar(ch[num--]);
putchar('\n');return;
}
const ll MAXN=;
ll n,m;
ll f[MAXN];
ll w=;
struct wy
{
ll A[MAXN][MAXN];
wy(){memset(A,,sizeof(A));}
wy friend operator*(wy a,wy b)
{
wy tmp;
for(ll i=;i<=w;++i)
for(ll j=;j<=w;++j)
for(ll k=;k<=w;++k)
tmp.A[i][j]=(tmp.A[i][j]+a.A[i][k]*b.A[j][k]%m)%m;
return tmp;
}
}c;
inline void fast(ll x)
{
while(x)
{
if(x&)
{
ll tmp1=(f[]*c.A[][]%m+f[]*c.A[][]%m)%m;
ll tmp2=(f[]*c.A[][]%m+f[]*c.A[][]%m)%m;
f[]=tmp1;f[]=tmp2;
}
x=x>>;
c=c*c;
}
}
int main()
{
//freopen("1.in","r",stdin);
freopen("fibonacci.in","r",stdin);
freopen("fibonacci.out","w",stdout);
n=read();m=read();
if(n==||n==){put(%m);return ;}
c.A[][]=;c.A[][]=;
c.A[][]=;c.A[][]=;
f[]=;f[]=;
fast(n);
put(f[]%m);
return ;
}
今天发挥的不太好没有充分利用知识至少第二题的二分我应该是可以想出来的。
5.22 noip模拟赛的更多相关文章
- 2018.9.22 NOIP模拟赛
*注意:这套题目应版权方要求,不得公示题面. 从这里开始 Problem A 妹子 Problem B 旅程 Problem C 老大 因为业务水平下滑太严重,去和高一考NOIP模拟,sad... P ...
- 18.9.22 noip模拟赛
此题为找规律.期望100 实际100 #include<cstdio> #include<cstring> #include<iostream> #include& ...
- 【2019.7.22 NOIP模拟赛 T1】麦克斯韦妖(demon)(质因数分解+DP)
暴力\(DP\) 先考虑暴力\(DP\)该怎么写. 因为每个序列之后是否能加上新的节点只与其结尾有关,因此我们设\(f_i\)为以\(i\)为结尾的最长序列长度. 每次枚举一个前置状态,判断是否合法之 ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- 【HHHOJ】NOIP模拟赛 捌 解题报告
点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...
- 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& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
随机推荐
- 关于display的box和flex布局
关于二者的区别于联系,在知乎上看到有人这么回答的 flex 2012年的语法,也将是以后标准的语法,大部分浏览器已经实现了无前缀版本. box是2009年的语法,已经过时,是需要加上对应前缀的. 另外 ...
- Java实现第十一届蓝桥杯JavaB组 省赛真题
试题 A: 指数计算 本题总分:5 分 [问题描述] 7 月 1 日是建党日,从 1921 年到 2020 年, 已经带领中国人民 走过了 99 年. 请计算:7 ^ 2020 mod 1921,其中 ...
- 一文搞定 Spring Data JPA
Spring Data JPA 是在 JPA 规范的基础上进行进一步封装的产物,和之前的 JDBC.slf4j 这些一样,只定义了一系列的接口.具体在使用的过程中,一般接入的是 Hibernate 的 ...
- 深入Mybatis源码——执行流程
前言 上一篇分析Mybatis是如何加载解析XML文件的,本篇紧接上文,分析Mybatis的剩余两个阶段:代理封装和SQL执行. 正文 代理封装 Mybatis有两种方式调用Mapper接口: pri ...
- day13 作业
目录 1.编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改 2.编写tail工具 3.编写登录功能 4.编写注册功能 选做题:编写ATM程序实 ...
- Prometheus + Grafana 监控(mysql 和redis)
1.监控MySQL(mysqld-exporter) https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/m ...
- Ethical Hacking - POST EXPLOITATION(4)
PIVOTING Use the hacked device as a pivot. Try to gain access to other devices in the network. Tool: ...
- QQ音乐Android客户端Web页面通用性能优化实践
QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...
- 【NET开发】图片处理类-仿照七牛云图片处理功能
介绍 Sop.Common.Img **请看 七牛云的图片处理功能介绍文档了解本项目功能 ** 此项目是有https://github.com/Sopcce/.Net-Common-Utility中的 ...
- 高效C++:设计与声明
C++软件开发可以理解为设计一系列的类,让这些类相互使用,最终实现我们所需要的功能.类与类之间的相互关系可以很复杂,也可以很简单,如何简单高效的描述类与类之间的关系是设计的难点之一.遵循本文所提供的方 ...