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[ ...
随机推荐
- codeforces D. Multiplication Table
http://codeforces.com/contest/448/problem/D 题意:一个n×m的矩阵,a[i][j]=i*j; 然后把a数组排序,找出第k个数. 思路:1-n×m二分枚举,然 ...
- NBU是最牛逼的备份软件
NBU是最牛逼的备份软件 TSM是IBM的备份 好好看看几个厂商 VERITAS 公司下的NBU入门级备份有BEHP的备份软件有DPIBM的是TSMCommvault也非常牛逼这都是做到了小机AI ...
- 7.微软AJAX的解决方案
Asp.net中内置的简化AJAX开发的控件UpdatePanel非常方便,但是它会带了许多viewstate,所以高手们并不喜欢它.但它开发在内网应用时可以考滤 放入ScriptManager,将要 ...
- Android 中的MVC与数据流动
今天看了一个Android的Training生命周期转换的例子,顿觉得他的设计非常巧妙,我的分析如下: 1.在com.example.android.lifecycle包中有: 3个正常的全屏acti ...
- java学习面向对象之多态
如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: abstract class Animal { ; abstract void eat(); public void run( ...
- 【转】MFC窗口句柄各类指针获取函数
原文网址:http://www.pythonschool.com/CPP_JHK/5003.html 获取所在类窗口的句柄 this->m_hwnd; // this是一个指针,指向当前类的实例 ...
- unity中的mesh合并
在分析shadowgun时,无意中发现所有的环境建筑运行后,都被合并成一个叫做 "Combined Mesha (root: scene)" 的mesh了,但是没有发现任何合并的脚 ...
- 《Numerical Methods》-chaper4-一元非线性方程的解
在许多生产时间问题中,我们根据已知条件往往会列出一个一元非线性方程,一个最典型的例子就是银行存款的问题,由于其利息需要基于前一年的本息和,因此列出来的方程x的指数往往是高次的.还有物理问题当中一系列用 ...
- Nodejs负载均衡:haproxy,slb以及node-slb - i5ting的个人空间 - 开源中国社区
Nodejs负载均衡:haproxy,slb以及node-slb - i5ting的个人空间 - 开源中国社区 undefined
- IOS 表视图UITableView 束NSBundle
今天搞了一下表视图UITableView 表视图是在以后应用程序开发中经常用到的一个视图,所以必须要熟练掌握 所获不多,对视图有了一个大概的了解 其中有用到NSBundle , 束 这个类 先说一 ...