[NOIP1999] 普及组
/*By SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int m;
char n[];
struct number{
int a[];
int len;
}a,b;
number operator + (number a,number b){
int len=max(a.len,b.len);
number c={};c.len=len;
int tmp=;
for(int i=;i<=len+;i++){
c.a[i]=a.a[i]+b.a[i]+tmp;
tmp=c.a[i]/m;
c.a[i]%=m;
}
if(c.a[c.len+])c.len++;
return c;
}
bool pd(number x){
for(int i=;i<=x.len/;i++){
if(x.a[i]!=x.a[x.len-i+])return ;
}
return ;
}
int main(){
int step=;
scanf("%d",&m);
scanf("%s",n);
int i,j;
int slen=strlen(n);
for(i=;i<slen;i++){
a.len=i+;
if(n[slen-i-]>='' && n[slen-i-]<='')
a.a[i+]=n[slen-i-]-'';
else a.a[i+]=n[slen-i-]-'A'+;
}
while(step<=){
if(pd(a)){
printf("STEP=%d\n",step);
return ;
}
number b={};
b.len=a.len;
for(i=;i<=b.len;i++)
b.a[i]=a.a[a.len-i+];
a=a+b;
step++;
}
printf("Impossible!\n");
return ;
}
回文数
数据范围太小了,所以偷了懒,各种优化都没加
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int mxn=;
int h[mxn];
int ans=;
int f[mxn],cnt;
int n=;
int main(){
while(scanf("%d",&h[n+])!=EOF ) ++n;
int i,j;
for(i=;i<=n;i++)f[i]=;
for(i=;i<=n;i++)
for(j=;j<i;j++)
if(h[j]>=h[i])f[i]=max(f[i],f[j]+);
ans=;
for(i=;i<=n;i++) ans=max(ans,f[i]);
printf("%d\n",ans);
//part 2
ans=cnt=;
memset(f,,sizeof f);
for(i=;i<=n;i++){
int mini=0x3f3f3f3f,pos=;
for(j=;j<=cnt;j++){
if(f[j]>h[i] && f[j]<mini){
mini=f[j];
pos=j;
}
}
if(!pos){f[++cnt]=h[i];continue;}
f[pos]=h[i];
}
printf("%d\n",cnt);
return ;
}
导弹拦截
DP+搜索 这思路挺神的
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
using namespace std;
const int mxn=;
int m,k;
int a[mxn],cnt=;
bool vis[mxn];
int f[mxn];
int mxans=;
int ans[mxn];
int DFS(int pos){
memset(f,,sizeof f);
int i,j;
for(i=;i<=;i++){
f[i]=0x3f3f3f3f;
for(j=;j<=pos;j++){
if(a[j]>i)continue;
f[i]=min(f[i],f[i-a[j]]+);
}
if(f[i]>m)return i;
}
}
void dp(int pos){
int tmp=DFS(pos);
// printf("tmp:%d pos:%d\n",tmp,pos);
if(tmp>mxans){
mxans=tmp;
cnt=pos;
memcpy(ans,a,sizeof ans);
}
if(pos==k)return;
for(int i=tmp;i>a[pos];i--){
a[pos+]=i;
dp(pos+);
}
return;
}
int main(){
scanf("%d%d",&m,&k);
int i,j;
a[]=;cnt=;
dp(cnt);
for(i=;i<=cnt;i++){
printf("%d ",ans[i]);
}
printf("\nMAX=%d\n",mxans-);
return ;
}
邮票面值设计
[NOIP1999] 普及组的更多相关文章
- 求最长子序列(非连续)的STL方法 - 洛谷P1020 [NOIP1999 普及组] 导弹拦截
先给出例题:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大佬题解:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 ...
- P1015 [NOIP1999 普及组] 回文数
点击查看题目 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个十进制数 5656,将 5656 加 6565(即把 5656 从右向左读),得到 ...
- 洛谷 P1020 [NOIP1999 普及组] 导弹拦截
Coidng #include <iostream> #include <algorithm> #include <cstring> #include <ve ...
- NOIP2012 普及组 T3 摆花——S.B.S.
题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...
- NOIP2016普及组复赛解题报告
提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...
- 05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
- [题解]noip2016普及组题解和心得
[前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...
- NOIP2016普及组
普及组.代码有空发. 第一题就是买铅笔.暴力模拟绝对可取. 第二题就是回文日期.从t1的年份到t2的年份枚举每一年.头尾要特判. 第三题就是海港.骗了40分. 第四题就是魔法阵.不太好优化. 完.
- [NOIP2013] 普及组
计数问题 纯模拟 #include<cstdio> #include<iostream> using namespace std; int main(){ int n,x; c ...
随机推荐
- C#局部类型partial在定义实体类Model中的应用
以前一直用继承类的方法,原来还可以这样 //例如:定义一个Person的实体类,用户ID(PersonId),姓名(Name),性别(Sex),年龄(Age),地址(Address),联系方式(Tel ...
- C/S WinForm自动升级
这二天刚好完成一个C/S 自动升级的功能 代码分享一下 /// <summary> /// 版本检测 /// </summary> public class ...
- 设计模式(3)-- 原型模式 (clone分析)
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建对象. 在java中有语言级别的支持:clone 在java中使用原型模式是非常简单的事情,实现Cloneable接口,调用Objec ...
- AndroidStudio中使用SVN
AndroidStudio中使用SVN提交项目 1.安装SVN,我选择使用TortoiseSVN-1.8.7.25475-x64-svn-1.8.9.msi(安装文件地址如下:http://downl ...
- hdu1513 Palindrome
思路: dp+滚动数组. 实现: #include <iostream> #include <cstdio> #include <string> #include ...
- 事件对象(示例、封装函数EventUtil())
事件对象 什么是事件对象? 在触发DOM上的事件时都会产生一个对象. 事件对象event 1.DOM中的事件对象 (1)\type属性用于获取事件类型 (2)\target属性用于获取事件目标 (3) ...
- 获取页面URL两种方式
以请求http://localhost:8080/doctor/demo?code=1为例 一:用java代码获取 //获取URL中的请求参数.即?后的条件 code=1 String querySt ...
- HTML基础(三)图像和超链接
图像 img 元素向网页中嵌入一幅图像. 语法 <img src="" alt="" /> img标签常用属性 src 跳转的url alt 图片不 ...
- VR技术在数据中心3D机房中的应用(上)
VR技术在数据中心3D机房中的应用(上) 前两天跟朋友A吃饭,吃着吃着就说到了VR.近几年来,VR技术越来越火,感觉能跟VR沾点边的都特别高大上,朋友A也是,一提到VR,就怎么都掩盖不住他发自肺腑 ...
- strong&weak
copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString对NSString 它指出,在赋值时使用传入值的一份拷贝.拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议 ...