10.24 noip模拟试题
尼玛pdf依旧不会粘23333
/*
每段合并到总的里面
假设总的有X个 这一段有Y个
一共有X+1个空 那么就有
C(X+1,1)+C(X+1,2)+C(X+1,3)+...+C(X+1,Y)
这样是WA的!!!
比如说 C(X+1,2) 那就是Y个放到两个空里
分别放几个...忘了算了23333
自己就想到这里 Wa了 10分
(暴力40 吐血了)
*/
#include<iostream>
#include<cstdio>
#define maxn 1010
#define mod 1000000007
#define ll long long
using namespace std;
ll n,m,a[maxn],f[maxn],len[maxn],c[maxn][maxn],ans=;
ll init(){
ll x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
void Get_c(){
for(int i=;i<=n;i++)c[i][]=;
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
c[i][j]=c[i-][j]+c[i-][j-];
}
ll G(ll x,ll y){
ll sum=;
for(ll i=;i<=y;i++)
sum+=c[x+][i];
return sum;
}
int main()
{
freopen("lantern.in","r",stdin);
freopen("lantern.out","w",stdout);
n=init();m=init();
for(int i=;i<=m;i++){
ll x=init();f[x]=;
}
Get_c();
ll sum=;f[n+]=;
for(int i=;i<=n+;i++){
if(!f[i])sum++;
else {
len[++len[]]=sum;sum=;
}
}
sum=len[];
for(int i=;i<=len[];i++){
ans=ans*G(sum,len[i]);
ans%=mod;sum+=len[i];
}
for(int i=;i<len[];i++){
ans=ans*(<<len[i]-);
ans%=mod;
}
cout<<ans<<endl;
}
/*
同桌想到了更简单的方法
合并的方案数有(n-m)!/(πlen[i]!)
证明吗 我们联想 4个红球 3个黑球 5个蓝球
放在一起的方案数 (4+3+5)!/(4!*3!*5!)
就是把一样的颜色删掉
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100010
#define mod 1000000007
#define inf 1e10
#define ll long long
using namespace std;
ll n,m,a[maxn],f[maxn],ans=,len[maxn],c[maxn],prime[maxn],num;
ll init(){
ll x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
void Prime(){
for(int i=;i<=n;i++){
if(f[i]==)prime[++num]=i;
for(int j=;j<=num;j++){
if(i*prime[j]>n)break;
f[i*prime[j]]=;
if(i%prime[j]==)break;
}
}
}
void J(ll x){
for(int i=;i<=num;i++){
ll P=prime[i];
while(P<=n){
c[i]+=x/P;
P*=prime[i];
}
}
}
void JJ(ll x){
for(int i=;i<=num;i++){
ll P=prime[i];
while(P<=n){
c[i]-=x/P;
P*=prime[i];
}
}
}
ll Pow(ll x,ll y){
ll r=;
for(int i=;i<=y;i++)
r=r*x,r%=mod;
return r;
}
int main()
{
freopen("lantern.in","r",stdin);
freopen("lantern.out","w",stdout);
n=init();m=init();
for(int i=;i<=m;i++){
ll x=init();f[x]=;
}
ll sum=;f[n+]=;
for(int i=;i<=n+;i++){
if(!f[i])sum++;
else {
len[++len[]]=sum;sum=;
}
}
memset(f,,sizeof(f));
Prime();J(n-m);
for(int i=;i<=len[];i++)
JJ(len[i]);
for(int i=;i<len[];i++){
ans=ans*Pow(,len[i]-);
ans%=mod;
}
for(int i=;i<=n;i++)
ans=ans*Pow(prime[i],c[i]),ans%=mod;
cout<<ans<<endl;
return ;
}
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 100010
#define inf 1e18
#define ll long long
using namespace std;
ll n,m,p[maxn],c[maxn],ans;
ll init(){
ll x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
bool Judge(ll x){
for(int j=,i=;i<=n;i++){
if(p[i]-c[j]>x)return ;
ll R=;
if(c[j]<p[i])R=max(x-(p[i]-c[j])+c[j],(x+p[i]+c[j])/);
else R=p[i]+x;
while(j<=m+&&R>=c[j])j++;
if(j>m)return ;
}
return ;
}
int main()
{
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
n=init();m=init();
for(int i=;i<=n;i++)p[i]=init();
for(int i=;i<=m;i++)c[i]=init();
ll l=,r=inf;
while(l<=r){
ll mid=l+r>>;
if(Judge(mid)){
r=mid-;ans=mid;
}
else l=mid+;
}
cout<<ans<<endl;
return ;
}
/*暴力没调出来 输出了不修改的 然而没数据 过几天再改吧*/
#include<cstdio>
#include<cstring>
#include<iostream>
#define maxn 100010
#define inf 100000000
#define ll long long
using namespace std;
ll n,m,num,head[maxn],len[maxn],C,f[maxn];
struct node{
ll v,t,pre,o;
}e[maxn*];
struct edge{
ll u,v,t;
}p[maxn];
ll init(){
ll x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
ll min(ll x,ll y){
return x>y?x:y;
}
void Add(ll from,ll to,ll dis,ll fal){
num++;e[num].v=to;
e[num].t=dis;
e[num].o=fal;
e[num].pre=head[from];
head[from]=num;
}
ll Dfs(ll now,ll from){
ll s=;f[now]=;
for(ll i=head[now];i;i=e[i].pre){
ll v=e[i].v;
if(v!=from&&i!=C)s+=Dfs(v,now);
}
return s;
}
ll Get(){
ll sum=;
for(ll i=;i<=m;i++){
ll l=Dfs(p[i].u,p[i].v);
ll r=Dfs(p[i].v,p[i].u);
len[i]=l*r*p[i].t;sum+=len[i];
}
return sum;
}
ll Solve(ll u,ll v,ll x){
C=x;memset(f,,sizeof(f));m++;
Add(u,v,p[x].t,n);Add(v,u,p[x].t,n);
ll sum=Get();for(ll i=;i<=n;i++)
if(f[i]==)return inf;
num-=;m--;return sum;
}
int main()
{
//freopen("road.in","r",stdin);
//freopen("road.out","w",stdout);
n=init();ll u,v,t;m=n-;
for(ll i=;i<n;i++){
u=init();v=init();t=init();
p[i].u=u;p[i].v=v;p[i].t=t;
Add(u,v,t,i);Add(v,u,t,i);
}
ll mx=Get();
/*for(ll i=1;i<=n;i++)
for(ll j=i+1;j<=n;j++)
for(ll k=1;k<=m;k++){
mx=min(mx,Solve(i,j,k));
}*/
cout<<mx<<endl;
return ;
}
10.24 noip模拟试题的更多相关文章
- 10.26 noip模拟试题
enc[问题背景]zhx 和他的妹子聊天.[问题描述]考虑一种简单的加密算法.假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映射到另一个字母.例如考虑映射规则:a->b, b- ...
- 10.27 noip模拟试题
1.铺瓷砖(tile.cpp/c/pas)[问题描述]有一面很长很长的墙. 你需要在这面墙上贴上两行瓷砖. 你的手头有两种不同尺寸的瓷砖,你希望用这两种瓷砖各贴一行.瓷砖的长可以用分数表示,贴在第一行 ...
- 10.18 noip模拟试题
分火腿 (hdogs.pas/.c/.cpp) 时间限制:1s:内存限制 64MB 题目描述: 小月言要过四岁生日了,她的妈妈为她准备了n根火腿,她想将这些火腿均分给m位小朋友,所以她可能需要切火腿. ...
- 10.13 noip模拟试题
Porble 1时间与空间之旅(tstrip.*) 题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship.spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship ...
- 10.11 noip模拟试题
4题均为128M,1s 1. 锻炼计划(exercise.pas) 身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题.小x设计了自己的锻炼计划,但他不知道这个计划是否可行, ...
- 10.8 noip模拟试题
1.花 (flower.cpp/c/pas) [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的 ...
- 10.4 noip模拟试题
题目名称 PA 青春 三部曲 名称 huakai taritari truetears 输入 huakai.in taritari.in truetears.in 输出 huakai.out tari ...
- 10.3 noip模拟试题
希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“ ...
- 10.25 noip模拟试题
今天题目略水2333 依旧不粘题目了23333 T1 /*数学题 给定n个斜率 求有多少个三元组 保证两两斜率不同 ans=C(n,3)-ΣC(len[i],2)*(n-len[i])-ΣC(len[ ...
随机推荐
- LightOj_1027 A Dangerous Maze
题目链接 题意: 你在一个迷宫里, 开始的时候你面前有n个门, 选择每个门的概率相等, 有两种结果: 1)回到|x|分钟之前(x为负时) 2)x分钟之后出迷宫(x为正时) 每次回到|x|分钟之前, 你 ...
- hadoop 各种counter 解读
http://blog.sina.com.cn/s/blog_61ef49250100uxwh.html 经过了两天的休息与放松,精神饱满了吧?上星期我们学习了MapReduce的过程,了解了其基本过 ...
- error proc
/*************************************************************************\ * Copyright (C) Michael ...
- 如何使用 Java 构建微服务?
[编者按]微服务背后的大理念是将大型.复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化.本文主要介绍了利用 Java 生态系统构建微服务的多种方法,并分析了每种方法的利弊 ...
- 如何从代码层防御10大安全威胁中的 Xpath Injection?
普遍性和可检测性: Xpath 注入是 OWASP TOP10 安全威胁中 A1 Injection 中的一种,注入漏洞发生在应用程序将不可信的数据发送到解释器时.虽然注入漏洞很容易通过审查代码发现, ...
- C语言嵌入式系统编程修炼之一:背景篇
不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑,汇编语言具备这样的特质.但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发 ...
- 14.6.3.5 Configuring InnoDB Buffer Pool Flushing
14.6.3.5 Configuring InnoDB Buffer Pool Flushing InnoDB 执行某些任务在后台, 包括脏叶的刷新(那些已经发生改变的pages 但是没有写入到数据文 ...
- python换行写入文件
今天用python做写入文件时,碰到,写入的东西不能换行,打开写入的文件都是一行.后来发现需要在写入的字符后面加上+'\n'. 另外python需要追加写入文件的时候,是用这个方法f = open(' ...
- 【Mongous】write after end
执行1(---) 执行2(----) 完成1(POST) 执行3(---)
- javascipt取整数四舍五入
1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.f ...