尼玛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模拟试题的更多相关文章

  1. 10.26 noip模拟试题

    enc[问题背景]zhx 和他的妹子聊天.[问题描述]考虑一种简单的加密算法.假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映射到另一个字母.例如考虑映射规则:a->b, b- ...

  2. 10.27 noip模拟试题

    1.铺瓷砖(tile.cpp/c/pas)[问题描述]有一面很长很长的墙. 你需要在这面墙上贴上两行瓷砖. 你的手头有两种不同尺寸的瓷砖,你希望用这两种瓷砖各贴一行.瓷砖的长可以用分数表示,贴在第一行 ...

  3. 10.18 noip模拟试题

    分火腿 (hdogs.pas/.c/.cpp) 时间限制:1s:内存限制 64MB 题目描述: 小月言要过四岁生日了,她的妈妈为她准备了n根火腿,她想将这些火腿均分给m位小朋友,所以她可能需要切火腿. ...

  4. 10.13 noip模拟试题

    Porble 1时间与空间之旅(tstrip.*) 题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship.spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship ...

  5. 10.11 noip模拟试题

    4题均为128M,1s 1. 锻炼计划(exercise.pas) 身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题.小x设计了自己的锻炼计划,但他不知道这个计划是否可行, ...

  6. 10.8 noip模拟试题

      1.花 (flower.cpp/c/pas) [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的 ...

  7. 10.4 noip模拟试题

    题目名称 PA 青春 三部曲 名称 huakai taritari truetears 输入 huakai.in taritari.in truetears.in 输出 huakai.out tari ...

  8. 10.3 noip模拟试题

    希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“ ...

  9. 10.25 noip模拟试题

    今天题目略水2333 依旧不粘题目了23333 T1 /*数学题 给定n个斜率 求有多少个三元组 保证两两斜率不同 ans=C(n,3)-ΣC(len[i],2)*(n-len[i])-ΣC(len[ ...

随机推荐

  1. 提升 DevOps 效率,试试 ChatOps 吧!

    本文翻译自文章 To Boost DevOps, Try ChatOps,文中用简单易懂的方式介绍了 ChatOps 的发展和价值,由 OneAPM 工程师编译整理. 当我们谈论 DevOps 时,总 ...

  2. hadoop-2.0.0-mr1-cdh4.2.0源码编译总结

    准备编译hadoop-2.0.0-mr1-cdh4.2.0的同学们要谨慎了.首先看一下这篇文章: Hadoop作业提交多种方案 http://www.blogjava.net/dragonHadoop ...

  3. java 对list进行排序

    前提: list中的元素是自定义对象,如何根据对象的元素进行排序呢? 比如List<Student>students 是一个list,每个元素都是Student对象,Student对象中有 ...

  4. 社区发现(Community Detection)算法 [转]

    作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

  5. tyvj P1952 Easy(递推+期望)

    P1952 Easy 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下 ...

  6. mac下的改装人生——关于机械键盘

    这几天好像弄了很多关于机械键盘的东西,我自己的这块键盘也已经慢慢熟悉了,感觉打字超级爽哈,然后看了很多网上关于机械键盘的帖子,也看了很多教程,在Amazon和Taobao看了很多键盘的价位,前几天还试 ...

  7. Sorting Algorithm

    sorting 应该是最容易被考到的东西,自己老是学了背,背了忘.为了方便复习,这里进行总结 1. Bubble Sort 定义:每两个两个比较,每扫完一次,当前扫过的最大值放在了末尾. for i ...

  8. STL之map、multimap

    map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺序排列.元素的插入过程是按照排序规则 ...

  9. Boxes - SGU 126(找规律)

    题目大意:有两个箱子,一个箱子装了A个球,一个箱子装了B个球,可以从球多的那个箱子拿出来球少的箱子里面球的总数放在少的那个箱子里面,问能否把球全部放在一个箱子里面? 分析:很容易求出来最后放的拿一下一 ...

  10. MenuDrawer的使用

    ---恢复内容开始--- MenuDrawer框架是一个可以实现上下左右滑动的框架,在使用中可以在xml文件中配置也可以在java代码中实现效果的配置 可以以jar的形式或依赖的形式存在      用 ...