2017-10-01-morning
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的更多相关文章
- Cheatsheet: 2017 10.01 ~ 12.31
Mobile Updating Your App for iOS 11 Get Started With Natural Language Processing in iOS 11 Getting S ...
- 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 ...
- 调试大叔V1.0.1(2017.09.01)|http/s接口调试、数据分析程序员辅助开发神器
2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cook ...
- 九月 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 ...
- 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!
前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...
- Adobe Audition CC 2017 (10.0)安装教程
Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...
- Xamarin 2017.10.9更新
Xamarin 2017.10.9更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4获得新功能.Visual Studio 2015需要工具-选项-Xamarin ...
- 2017.10.12 Java的计数器的开发
//我们用一个合成的applet/application来简单显示出一个计数器的结果/** * Created by qichunlin on 2017/10/12. */ /*简单的计数器*/ im ...
- 2017.10.10 java中的继承与多态(重载与重写的区别)
1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...
- Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组
Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 思路 这道题,两个数组原本就有序.于是我们采用双指针 ...
随机推荐
- BaseAdapter的优化
传统的 package cct.commonadapter.bean; import android.content.Context; import android.view.LayoutInflat ...
- 模块 (Module)
#1.模块概念的官网描述 -- Module If you quit from the Python interpreter and enter it again, the definitions y ...
- swift VTables
VTables https://github.com/apple/swift/blob/master/docs/SIL.rst#vtables decl ::= sil-vtable sil-vtab ...
- 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 ...
- jQuery 全选、全不选、反选
<!DOCTYPE html> <html lang="en"> <head> <title></title> < ...
- vue 写一个聊天工具
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CAD使用DeleteXData删除数据(com接口)
主要用到函数说明: MxDrawEntity::DeleteXData 删除扩展数据,详细说明如下: 参数 说明 pzsAppName 删除的扩展数据名称,如果为空,删除所有扩展数据 c#代码实现如下 ...
- mysql事件【定时器】
一,借鉴[luo奔的蜗牛] 1.创建一张表 create table mytable ( id int auto_increment not null, name ) not null default ...
- 服务器端编程心得(二)—— Reactor模式
最近一直在看游双的<高性能linux服务器编程>一书,下载链接: http://download.csdn.net/detail/analogous_love/9673008 书上是这么介 ...
- css3新特性学习系列 -- border
css3新特性 border属性(border-radius.border-image.box-shadow)详解 1.border-radius 圆角 支持:IE9+ 用法: border-rad ...