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. BaseAdapter的优化

    传统的 package cct.commonadapter.bean; import android.content.Context; import android.view.LayoutInflat ...

  2. 模块 (Module)

    #1.模块概念的官网描述 -- Module If you quit from the Python interpreter and enter it again, the definitions y ...

  3. swift VTables

    VTables https://github.com/apple/swift/blob/master/docs/SIL.rst#vtables decl ::= sil-vtable sil-vtab ...

  4. Swift protocol extension method is called instead of method implemented in subclass

    Swift protocol extension method is called instead of method implemented in subclass protocol MyProto ...

  5. jQuery 全选、全不选、反选

    <!DOCTYPE html> <html lang="en"> <head> <title></title> < ...

  6. vue 写一个聊天工具

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. CAD使用DeleteXData删除数据(com接口)

    主要用到函数说明: MxDrawEntity::DeleteXData 删除扩展数据,详细说明如下: 参数 说明 pzsAppName 删除的扩展数据名称,如果为空,删除所有扩展数据 c#代码实现如下 ...

  8. mysql事件【定时器】

    一,借鉴[luo奔的蜗牛] 1.创建一张表 create table mytable ( id int auto_increment not null, name ) not null default ...

  9. 服务器端编程心得(二)—— Reactor模式

    最近一直在看游双的<高性能linux服务器编程>一书,下载链接: http://download.csdn.net/detail/analogous_love/9673008 书上是这么介 ...

  10. css3新特性学习系列 -- border

    css3新特性 border属性(border-radius.border-image.box-shadow)详解 1.border-radius  圆角 支持:IE9+ 用法: border-rad ...