2017-10-17 NOIP模拟赛

Reverse

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char c[];
int len,cnt,sum[];
struct node{
int n1,n0;
}a[];
int main(){
freopen("reverse.in","r",stdin);freopen("reverse.out","w",stdout);
//freopen("Cola.txt","r",stdin);
scanf("%s",c+);
len=strlen(c+);
int x1=,x0=;
for(int i=;i<=len;i++){
if(c[i]=='')x0++;
if(c[i]=='')x1++;
if((c[i]==''&&c[i+]=='')||i==len){
a[++cnt].n0=x0;
a[cnt].n1=x1;
x0=;x1=;
}
}
for(int i=cnt;i>=;i--)sum[i]=sum[i+]+a[i].n0;
int ans=;
for(int i=;i<=cnt;i++){
if(a[i].n1<sum[i+])ans+=a[i].n1;
else{
ans+=sum[i+];
break;
}
}
printf("%d",ans);
return ;
}
50分 迷之wa
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 100100
using namespace std;
int len,ans=0x7f7f7f7f;
char s[MAXN];
int sum[MAXN];
int main(){
freopen("reverse.in","r",stdin);
freopen("reverse.out","w",stdout);
scanf("%s",s);
len=strlen(s);
sum[]=s[]-'';
for(int i=;i<len;i++)
sum[i]=sum[i-]+s[i]-'';
for(int i=;i<len;i++)
ans=min(ans,sum[i]+(len--i-sum[len-]+sum[i]));
cout<<ans;
}
100分 前缀和+O(n)扫一遍
Number

#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#ifdef WIN32
#define PLL "%I64d"
#else
#define PLL "%lld"
#endif
using namespace std;
int n,cnt[];
long long ans;
short b[];
int count(int x){
memset(cnt,,sizeof(cnt));
while(x){
cnt[x%]++;
x/=;
}
int res=;
for(int i=;i>=;i--){
if(cnt[i])res=res*+i;
}
return res;
}
int main(){
//freopen("Cola.txt","r",stdin);
freopen("number.in","r",stdin);freopen("number.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
int now=count(i);
ans+=b[now];
b[now]++;
}
printf(PLL,ans);
return ;
}
75分 桶
/*
枚举,用vis一个二进制数组表示当前数每一位的状态,出现或者不出现。
然后把二进制转为十进制,cnt[十进制]+1。
最后因为要求多少对,所以答案累加C(i,2)。
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define size 1024 using namespace std;
int n,cnt[size],vis[];
int Use[]={,,,,,,,,,};
long long ans; int main()
{
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
cin>>n;
int start,End;
for(int i=;i<=n;i++)
{
start=i;End=;memset(vis,,sizeof vis);
while(start) vis[start%]=,start/=;
for(int j=;j<=;j++) if(vis[j]) End+=Use[j];
cnt[End]++;
}
for(int i=;i<size;i++) ans+=1ll*cnt[i]*(cnt[i]-)/;
cout<<ans<<endl;
fclose(stdin);fclose(stdout);
return ;
}
100分 桶
Wave

#include<iostream>
#include<cstdio>
#define maxn 2000010
using namespace std;
int f[maxn][],n,k,a[maxn],ans;
int qread(){
int i=,j=;
char ch=getchar();
while(ch<''||ch>''){if(ch=='-')j=-;ch=getchar();}
while(ch<=''&&ch>=''){i=i*+ch-'';ch=getchar();}
return i*j;
}
int main(){
freopen("wave.in","r",stdin);freopen("wave.out","w",stdout);
//freopen("Cola.txt","r",stdin);
n=qread();k=qread();
for(int i=;i<=n;i++){
a[i]=qread();
f[i][]=;
}
for(int i=;i<=n;i++){
for(int j=;j<i;j++){
if(a[j]-a[i]>=k){//i是奇数项
f[i][]=max(f[i][],f[j][]+);
ans=max(ans,f[i][]);
}
if(a[i]-a[j]>=k){//i是偶数项
f[i][]=max(f[i][],f[j][]+);
ans=max(ans,f[i][]);
}
}
}
printf("%d",ans);
}
20分 暴力dp
/*
很神奇。
贪心,在满足k的限制下,偶数项尽量大,奇数项尽量小。
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 2000007 using namespace std;
int a[N];
int n,k,m,ans,cur; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int main()
{
n=read();k=read();
for(int i=;i<n;i++) a[i]=read();
ans=,m=,cur=a[];
for(int i=;i<n;i++)
{
if(m)
if(cur-a[i]>=k)
m=,ans++,cur=a[i];
else cur=max(cur,a[i]); else
if(a[i]-cur>=k)
m=,ans++,cur=a[i];
else cur=min(cur,a[i]);
}
printf("%d\n",ans);
return ;
}
100分 贪心
2017-10-17 NOIP模拟赛的更多相关文章
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- 2017 10.25 NOIP模拟赛
期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- 2018.10.16 NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...
- 2016.10.30 NOIP模拟赛 day2 AM 整理
题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分 2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...
- 2016.10.30 NOIP模拟赛 day2 PM 整理
满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...
- 2017.5.27 NOIP模拟赛(hzwer2014-5-16 NOIP模拟赛)
期望得分:100+100+60+30=290 实际得分:100+20+60+0=180 当务之急:提高一次正确率 Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一 ...
- 2017.6.11 NOIP模拟赛
题目链接: http://files.cnblogs.com/files/TheRoadToTheGold/2017-6.11NOIP%E6%A8%A1%E6%8B%9F%E8%B5%9B.zip 期 ...
- 2018.10.03 NOIP+ 模拟赛 解题报告
得分: \(30+5+0=35\)(考得真不咋滴) \(T1\):奥义商店(点此看题面) 以为很简单,对着这题想了一个多小时,最后果断打了个暴力交了... ... 看完题解发现其实也不是很难. 对于\ ...
- 2018.10.30 NOIp模拟赛 T1 改造二叉树
[题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...
随机推荐
- Selenium-键盘操作
在webdriver的Keys类中提供了键盘所有的按键操作,当然也包括一些常见的组合操作如Ctrl+A全选),Ctrl+C(复制),Ctrl+V(粘贴).更多参考官方文档对应的编码http://sel ...
- pyglet--EventLoop对象(主事件循环,用于从系统消息队列中取出消息,并派发给各个窗口)
一.识别系统消息,并派出该消息 EventLoop(应用程序的事件循环),用于循环的从系统消息队列中获取系统消息(包含消息的各种参数:如鼠标位置,事件类型,鼠标左右键,哪个键盘键等),然后派发相应的事 ...
- IE input 去掉文本框的叉叉和密码输入框的眼睛图标
::-ms-clear, ::-ms-reveal{display: none;}
- FFMPEG基于内存的转码实例——输入输出视频均在内存
我在6月份写了篇文章<FFMPEG基于内存的转码实例>,讲如何把视频转码后放到内存,然后通过网络发送出去.但该文章只完成了一半,即输入的数据依然是从磁盘文件中读取.在实际应用中,有很多数据 ...
- Code Chef - Chef and Graph Queries
传送门 题目大意 给定一个$n$个点$m$条边的无向图$(n,m\leq 200000)$. 有$q$每次询问$(q\leq 200000)$,每次给定一个区间$L,R$,求仅保留编号$\in[L,R ...
- IronPython 个人网站样例----宝藏挖掘
IronPython for ASP.NET 的 CTP 已经发布两个多星期了,惭愧的是,因为工作繁忙,一直没有太多时间来学习.居然忽略了 Personal Web Site Starter Kit ...
- Python:列表反序和解析
1)列表反序 A.list.reverse():将列表反序: l = [1, 2, 3, 4, 5] print(l.reverse()) -->[5, 4, 3, 2, 1] B.l.[::- ...
- 【转】 Pro Android学习笔记(四四):Dialog(1):触发Dialog
目录(?)[-] 创建dialog fragment Activity显示对话框 Android提供alert.prompt.pick-list,单选.多选,progress.time-picker和 ...
- Linux keepalived与lvs的深入分析
一)概述 在本篇文章里,我们会涉及两部份内容,一个是LVS,另一个则是keepalived. 即我们用LVS和keepalived实现了负载均衡及高可用的服务器. LVS有实现三种IP负载均衡技术 ...
- js获取集合对象的个数
代码: var t={"a":"1","b":'2'}; alert(Object.keys(t).length); 用处:可用于集合对象的 ...