2016.11.6 night NOIP模拟赛 考试整理
题目+数据:链接:http://pan.baidu.com/s/1hssN8GG 密码:bjw8
总结:
总分:300分,仅仅拿了120份。
这次所犯的失误:对于2,3题目,我刚刚看就想到了正确思路,急于敲正确思路,而没有去骗基础得分。
结果第二题DP打残了,第三题排列组合漏了一个小点没考虑到,都是仅仅拿了10分。
T1:
/*
第一题比较容易,注意一些细节就可以了。
比如删除前导0不能删没了等等。
*/
#define N 1500
#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
char a[N],b[N];
int a1[N],b1[N],len;
void input()
{
scanf("%s%s",a+,b+);
len=strlen(a+);
for(int i=;i<=len;++i)
a1[i]=a[i]-'';
for(int i=;i<=len;++i)
b1[i]=b[i]-'';
}
int main()
{
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
input();
for(int i=;i<=len;++i)
{
if(a1[i]>b1[i]) b1[i]=;
if(a1[i]<b1[i]&&b1[i]!=) a1[i]=;
}
int ia=,ib=;
bool flag=false;
while(ia<len&&(a1[ia]==||a1[ia]==))
{
if(a1[ia]==) flag=true;
ia++;
}
if(a1[ia]==) ia++;
if(ia>len&&(!flag)) printf("BOOM");
else{
for(int i=ia;i<=len;++i)
if(a1[i]!=) printf("%d",a1[i]);
if(ia>len&&flag) printf("");
}
printf("\n");
flag=false;
while(ib<len&&(b1[ib]==||b1[ib]==))
{
if(b1[ia]==) flag=true;
ib++;
}
if(b1[ib]==) ib++;
if(ib>len&&(!flag)) printf("BOOM");
else{
for(int i=ib;i<=len;++i)
if(b1[i]!=) printf("%d",b1[i]);
if(ib>len&&flag) printf("");
}
fclose(stdin);
fclose(stdout);
return ;
}
T2:正确做法所用的技巧和NOIP2015Day2子串相同都用到了辅助数组。
哎╮(╯▽╰)╭圆形操场不是成环考虑的。
说明:测试数据中有两组是有问题的,就是当出现偶数组合并不了的时候,是输出了最大值。而zhx大牛的最大值是1e9,因人而异吧。
#define N 405
#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
typedef long long ll;
int n,sum[N];
ll f1[N][N],f2[N][N];
void input()
{
scanf("%d",&n);
int x;
for(int i=;i<=n;++i)
{
scanf("%d",&x);
sum[i]=sum[i-]+x;
}
}
void DP()
{
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
f1[i][j]=f2[i][j]=(<<)-;
for(int i=;i<=n-;++i)
f2[i][i+]=sum[i+]-sum[i-];
for(int i=;i<=n;++i)
f1[i][i]=;
for(int len=;len<=n;++len)
for(int i=;i+len-<=n;++i)
{
int j=i+len-;
for(int k=i;k<j;++k) f2[i][j]=min(f2[i][j],f1[i][k]+f1[k+][j]+sum[j]-sum[i-]);
for(int k=i;k<j;++k) f1[i][j]=min(f1[i][j],f2[i][k]+f1[k+][j]+sum[j]-sum[k]);
/*注意这个推f1这个方程中,所加的代价是sum[j]-sum[k],因为i---k-1,这段石子的花费,我们在推f2的时候已经加过了,所以不能重复加了*/
}
}
int main()
{
freopen("merge.in","r",stdin);
freopen("merge.out","w",stdout);
input();
DP();
cout<<f1[][n]<<endl;
fclose(stdin);
fclose(stdout);
return ;
}
T3:
#define N 100010
#include<iostream>
using namespace std;
#include<cstdio>
#define mod 1000000007
typedef long long ll;
int n,m,x,y;
bool p1[N],p2[N];
ll jc[N],ny[N];
ll quick_pow(ll a,ll b)//a^b
{
ll ans=;
while(b)
{
if(b&)
{
ans=(ans*a)%mod;
}
a=(a*a)%mod;
b>>=;
}
return ans;
}
ll Mo(ll x)/*这里定义了一个负数的取模方法,因为负数取模还是负数,所以为了预防结果输出这种不合逻辑的答案,我们需要进行如下处理*/
{
if(x>=&&x<mod) return x;
x%=mod;
if(x<) x+=mod;
return x;
}
ll C(int n,int m)
{
if(m>n||m<) return ;
if(m==n||m==) return ;
return jc[n]*ny[m]%mod*ny[n-m]%mod;
}
int main()
{
freopen("problem.in","r",stdin);
freopen("problem.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=m;++i)
{
scanf("%d%d",&x,&y);
if(x==y)
{
printf("");
return ;
}
p1[x]=true;p2[y]=true;
}
int s=;
for(int i=;i<=n;++i)
{
if(!p1[i]&&!p2[i]) s++;/*统计可以自由放的个数*/
}
jc[]=;
for(int i=;i<=n;++i) jc[i]=(jc[i-]*i)%mod;
for(int i=;i<=n;++i) ny[i]=quick_pow(jc[i],mod-);
ll ans=jc[n-m];
for(int i=;i<=s;++i)
{
if(i&) ans=Mo(ans-C(s,i)*jc[n-m-i]);
else ans=Mo(ans+C(s,i)*jc[n-m-i]);
}
cout<<ans<<endl;
fclose(stdin);
fclose(stdout);
return ;
}
2016.11.6 night NOIP模拟赛 考试整理的更多相关文章
- NOIP模拟赛-2018.11.7
		
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...
 - NOIP模拟赛-2018.11.6
		
NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...
 - NOIP模拟赛-2018.11.5
		
NOIP模拟赛 好像最近每天都会有模拟赛了.今天从高二逃考试跑到高一机房,然而高一也要考试,这回好像没有拒绝的理由了. 今天的模拟赛好像很有技术含量的感觉. T1:xgy断句. 好诡异的题目,首先给出 ...
 - 11/1 NOIP 模拟赛
		
11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...
 - 10.17 NOIP模拟赛
		
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
 - 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) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
 - 10.16 NOIP模拟赛
		
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
 
随机推荐
- [示例] Firemonkey 不规则按钮实做
			
利用 Firemonkey 控件的组合及可塑性,可以做出千变万化的效果及功能,下面展示一个不规则按钮的实做: 效果图: 实做方法: 开一个新工程 Multi-Device Application 放一 ...
 - javascript组合继承
			
javascript继承有几种继承方式,现在来说说其中的组合继承. 组合继承是结合了原型链和借用构造函数这两种技术的继承方式,分别利用它们的长处,避免了短处.那就先说说这两种技术吧. 原型链 原型链 ...
 - jQuery元宵猜灯谜特效(元宵十五日猜一个字)
			
在线体验:http://keleyi.com/keleyi/phtml/jqtexiao/35.htm jQuery元宵猜灯谜特效的HTML代码如下: <!DOCTYPE html> &l ...
 - AMD and CMD are dead之KMDjs内核之依赖分析
			
有人说js中有三座大三:this.原型链和scope tree,搞懂了他们就算是js成人礼.当然还有其他不同看法的js成人礼,如熟悉js的:OOP.AP.FP.DOP.AOP.当然还听说一种最牛B的j ...
 - Android—Socket中关闭IO流后导致Socket关闭不能再收发数据的解决办法
			
以Socket发送数据为例: 发送数据时候要声明:DataOutputStream os = new DataOutputStream(socket.getOutputStream()); 最近开发遇 ...
 - iOS之关于 srand() 和rand()
			
srand(seed)用来将随机序列的起始点设为seed srand((int)time(0))表示以当前时间对应的int值为随机序列起点,这样每次运行程序,由于起点不同才可以得到不同的随机数 tim ...
 - MDM证书申请的流程
			
MDM证书申请的流程 整个流程分为两部分:vendor,customer. 一.Vendor 1.成为一个 MDM Vendor 1) 首先你需要拥有一个 Apple Enterprise accou ...
 - Android 拍照后保证保证图片不失真,进行压缩
			
今天在网上找了一下参考,得出把图片压缩至KB 其他不想多说.直接上代码 拍完照后调用下面代码 BitmapUtils.compressBitmap(photoPath, photoPath, 640) ...
 - 初识JavaScript 变量, 操作符, 数组
			
这里讲的不会太多, 因为所有的语言都是一样的, 一些基本的东西, 所以就随便写写. 变量 变量就是可变的量, 编程角度理解就是用于存储某种/某些数值的存储器. 我们可以把变量具象理解为一个盒子, 而我 ...
 - git笔记
			
这篇有关git的博客,写着写着有些崩了.里面有些碎碎念了.下次一定注意这个问题. 创建项目: midir xx :创建xx文件夹 git init : 为当前文件夹创建代码仓库 提交代码: git a ...