尼玛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. LightOj_1079 Just another Robbery

    题目链接 题意: 抢银行(这个背景最爱了), 有n家银行, 每家银行抢劫被抓的概率是p[i],你认为当你被抓的概率低于P的时候是安全的. 问, 你最多能抢劫到多少money. 思路: 抽象成背包问题, ...

  2. java怎么连接sql server,需要注意的几点

    一.JAVA连接SQL的语句    JAVA连接SQL2000语句为:  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  Drive ...

  3. 【POJ2773】Happy 2006 欧几里德

    题目描述: 分析: 根据欧几里德,我们有gcd(b×t+a,b)=gcd(a,b) 则如果a与b互质,则b×t+a与b也一定互质,如果a与b不互质,则b×t+a与b也一定不互质. 所以与m互质的数对m ...

  4. js中常用framesetiframe页面跳转传参方法实例大全

    logf的空间

  5. sublime配置python开发

    想在sublime里要python shell那种交互或者run module F5 F5 F5下这种效果的话,还是挺容易实现的,windows下的:1. 打开Sublime text 3 安装pac ...

  6. Xcode5最初级的教程

    相信IT男们,总会有那么一天希望自己捣鼓一个小App 让女朋友开心一下.那么就有了本文的开始的动机,话说带着兴趣做事情的时候进度是最快的也是最轻松的,这也是因为为什么有女朋友陪着的时候走多远的路脚都不 ...

  7. CSU 1505 酷酷的单词 湖南省赛第十届题目

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1505 题意:技巧题,就是一行字符串中,每个字母出现的次数互不相同,复即为酷的单词. 解题 ...

  8. ubuntu 桌面

    u盘虚拟光驱打开.ios,读写到u盘 goagent:wine goagent.exe的路径:右键在终端中运行proxy.py. 终端中wine exe文件 ubuntu安装镜像文件: 下载压缩包解压 ...

  9. openStack opts

  10. TCP连接建立的三次握手过程可以携带数据吗?

    前几天实验室的群里扔出了这样一个问题:TCP连接建立的三次握手过程可以携带数据吗?突然发现自己还真不清楚这个问题,平日里用tcpdump或者Wireshark抓包时,从来没留意过第三次握手的ACK包有 ...