T1 位运算1(bit)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK拥有一个十进制的数N。它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值。例如数字123拥有6的价值,数字999拥有27的价值。

假设数字N的价值是K,LYK想找到一个价值是K-1的数字,当然这个答案实在太多了,LYK想使得这个价值为K-1的数字尽可能大。

输入格式(bit.in)

一个数N。

输出格式(bit.out)

一个数表示答案。你需要输出一个非负整数,且这个数不包含前导0。

输入样例1

199

输出样例1

198

输入样例2

1000

输出样例2

0

对于20%的数据n<=10

对于40%的数据n<=100

对于60%的数据n<=1000

对于100%的数据1<=n<=100000。

 /*
把数的每一位拿出来,
从最后判断是否可以减一
*/
#include <cstdio> inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
int n,cnt,num[]; int Presist()
{
freopen("bit.in","r",stdin);
freopen("bit.out","w",stdout);
read(n);
for(; n; n/=) num[++cnt]=n%;
for(int i=; i<=cnt; ++i)
if(num[i]) { num[i]--; break; }
for(; cnt>&&!num[cnt]; ) cnt--;
for(int i=cnt; i>=; --i) printf("%d",num[i]);
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

AC

T2 火柴棒 (stick)

Time Limit:1000ms   Memory Limit:128MB

题目描述

众所周知的是,火柴棒可以拼成各种各样的数字。具体可以看下图:

通过2根火柴棒可以拼出数字“1”,通过5根火柴棒可以拼出数字“2”,以此类推。

现在LYK拥有k根火柴棒,它想将这k根火柴棒恰好用完,并且想知道能拼出的最小和最大的数分别是多少。

输入格式(stick.in)

一个数k。

输出格式(stick.out)

两个数,表示最小的数和最大的数。注意这两个数字不能有前导0。

输入样例

15

输出样例

108 7111111

数据范围

对于30%的数据k<=10。

对于60%的数据k<=20。

对于100%的数据1<k<=100。

 /*
打表可以发现,最大值就只有1,7两种数字
且容易发现k&1==1时,第一位是7,其余时1
最小值只有1,2,0,6,8这几种数字、
且容易发现,出现8和6的情况可以特判
最多可能存在1个1或是2,其余是0或者8且0最多出现2个
*/
#include <cstring>
#include <cstdio> inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
const int use[]={,,,,,,,,,};
int k,num[],cnt,tmp[];
bool flag; inline void Get_min()
{
for(int i=; i<=; ++i)
if(use[i]==k)
{
printf("%d ",i);
return ;
}
if(k%==)
{
for(int i=; i<=k/; ++i)
printf("");
printf(" "); return ;
}
else if(k%==)
{
printf("");
for(int i=; i<=k/; ++i)
printf("");
printf(" "); return ;
}
int tmp=k;
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp=k;cnt=;
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
}
inline void Get_max(int k)
{
if(k&) k-=,printf("");
for(; k; k-=) printf("");
} int Presist()
{
freopen("stick.in","r",stdin);
freopen("stick.out","w",stdout);
read(k);
if(k!=) Get_min();
else printf("22 "); Get_max(k);
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

考场AC代码

 #include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <vector>
#include <set>
using namespace std;
long long dp[];
int f[],n;
int main()
{
freopen("stick.in","r",stdin);
freopen("stick.out","w",stdout);
f[]=; f[]=; f[]=; f[]=; f[]=;
f[]=; f[]=; f[]=; f[]=; f[]=;
dp[]=; dp[]=; dp[]=; dp[]=; dp[]=;dp[]=;
for (int i=; i<=; i++)
{
dp[i]=dp[i-f[]]*;
for (int j=; j<=; j++)
if (dp[i-f[j]]!=)
dp[i]=min(dp[i],dp[i-f[j]]*+j);
}
cin>>n;
cout<<dp[n]<<' ';
if (n%==) {cout<<; n-=;}
while (n){cout<<; n-=;}
return ;
}

std动归

T3 听音乐(music)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK喜欢听音乐,总共有n首音乐,有m个时刻,每个时刻LYK会听其中一首音乐,第i个时刻会听第ai首音乐。它给自己定了一个规定,就是从听音乐开始,听的每连续n首音乐都是互不相同的。例如当n=3时,从听歌开始,123321就是一个合法的顺序(此时LYK听了两轮歌,分别是123和321,每一轮的歌都是互不相同的),而121323就是一个不合法的顺序(LYK也听了两轮歌,第一轮中121存在听了两次相同的歌)。我们现在只截取其中一个片段,也就是说并不知道LYK之前已经听了什么歌。因此121323也仍然可以是一个合法的顺序,因为LYK之前可能听过3,然后再听121323,此时LYK听了三轮歌,分别是312,132和3。

现在LYK将告诉你这m个时刻它听的是哪首歌。你需要求出LYK在听这m首歌之前可能听过的歌的不同方案总数(我们认为方案不同当且仅当之前听过的歌的数量不同)。LYK向你保证它之前听过的歌的数量是在0~n-1之间的。因此你输出的答案也应当是0~n中的某个整数(答案是0表示LYK记错了,没有一个合法的方案)。

输入格式(music.in)

第一行两个数n,m。

第二行m个数表示ai。

输出格式(music.out)

一个数表示答案。

输入样例1

4 10

3 4 4 1 3 2 1 2 3 4

输出样例1

1

样例解释1:LYK之前一定只听过2首歌(12或者21),这样可以分成3部分分别是34,4132,1234,每一部分都没有出现相同的歌。对于其它情况均不满足条件。

输入样例2

6 6

6 5 4 3 2 1

输出样例2

6

样例解释2:LYK之前听过0~5首歌的任意几首都是有可能满足条件的。

数据范围

对于50%的数据n,m<=1000。

对于100%的数据1<=n,m<=100000,1<=ai<=n。

其中均匀分布着n<m以及n>=m的情况。

提示:

LYK知道这个题目很长,但为了便于理解已经加了很多注释了……建议没看懂的同学们再重新看一遍……

 #include <cstdio>

 inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} const int N();
int n,m,a[N],ans;
int stretch[N];
bool vis[N]; inline void Prepare(int r)
{
stretch[r]=m;
vis[ a[r] ]=;
for(int i=m-; i; --i)
{
if(!vis[a[i]]) stretch[i]=r,vis[a[i]]=;
else
{
for(; i<r; vis[a[r--]]= )
if(a[i]==a[r]){ r--; break; }
stretch[i]=r;
}
}
} int Presist()
{
freopen("music.in","r",stdin);
freopen("music.out","w",stdout);
read(n),read(m);
for(int i=; i<=m; ++i) read(a[i]);
Prepare(m); //处理出每个点作为歌单第一首所能得到的最长的歌单结束点
if(n<m) //此时能组成多个歌单
{
for(int i=,pos; i<=n; ++i)
{
if(stretch[]<i) break; //第一首无法匹配,就直接结束了
for(int j=i+; j<=m; j+=n)
{
pos=m<(j+n-)?m:(j+n-);//找到结束点,判断是否匹配
if(stretch[j]<pos) goto lose;
}
ans++; lose:;
}
}
else //至多两个
{
for(int i=; i<n; ++i)
if(i>=m) ans+=(stretch[]==m); // 判断能否得到一种歌单
else ans+=(stretch[]>=i&&stretch[i+]>=m);//判断是否能得到分开的两个歌单
}
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

AC

2017-10-01-morning的更多相关文章

  1. Cheatsheet: 2017 10.01 ~ 12.31

    Mobile Updating Your App for iOS 11 Get Started With Natural Language Processing in iOS 11 Getting S ...

  2. VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人]

    VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人] 对最新版本的V ...

  3. 调试大叔V1.0.1(2017.09.01)|http/s接口调试、数据分析程序员辅助开发神器

    2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cook ...

  4. 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.

    Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...

  5. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  6. Adobe Audition CC 2017 (10.0)安装教程

    Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...

  7. Xamarin 2017.10.9更新

     Xamarin 2017.10.9更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4获得新功能.Visual Studio 2015需要工具-选项-Xamarin ...

  8. 2017.10.12 Java的计数器的开发

    //我们用一个合成的applet/application来简单显示出一个计数器的结果/** * Created by qichunlin on 2017/10/12. */ /*简单的计数器*/ im ...

  9. 2017.10.10 java中的继承与多态(重载与重写的区别)

    1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...

  10. Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组

    Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 思路 这道题,两个数组原本就有序.于是我们采用双指针 ...

随机推荐

  1. windows系统同时安装多个nodejs环境(一键切换)

    由于不同程序对nodejs的环境要求不同,从而导致在单台电脑上开发多个nodejs应用很烦人: 好在gnvm,这个家伙帮我解决了问题 官网: https://github.com/kenshin/gn ...

  2. 微信官方UI库—WeUI

    WeUI 为微信 Web 服务量身设计 概述 WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一.包含button.cell ...

  3. Android GetTimeAgo(时间戳转换几天前,几分钟前,刚刚等)

    package com.studychen.seenews.util; import android.content.Context; /** * Created by tomchen on 2/26 ...

  4. rabbitmq在storm中使用

    storm中只能进行任务计算,不能保存中间结果,最后结果. 这就有一个需求,保存计算结果,最好还是分布式的,因为storm也是分布式,大数据计算. 流行的分布式计算中使用队列保存数据居多. kafka ...

  5. Windows下使用JMeter

    简介 Apache JMeter是100%纯java桌面应用程序,被设计用来测试C/S结构的软件(例如web应用程序).它可以被用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Ser ...

  6. js中cookie的操作

    JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...

  7. CentOS 6.4 linux下编译安装 LNMP环境

    1.nginx编译安装 2.PHP编译安装 3.mysql编译安装 4.NGINX配置模板 5.CentOS 6.4 php-fpm 添加service 添加平滑启动/重启

  8. HDU_1542_(树状数组)

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  9. chgrp - 改变文件的组所有权

    总览 chgrp [选项] 组文件... POSIX 选项: [-R] [--] Austin 草拟选项: [-hHLPR] GNU 团体指示: [--reference=rfile] GNU 选项 ...

  10. css 动态导入css文件 @import 动态js加载 都是静态的

    @import "http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css" /*-防止各大cdn公共库加载地址失效 ...