模拟
skymeteorite
这个作者很懒,什么都没留下…
展开
-
Decode Alien Message模拟
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121425#problem/F 题意:给出按键盘的手势,问是否存在多种这个手势来按不同的按钮 思路:由于给出的键盘是九宫格加一个0,那限制条件就很多了,从一个方向的边界到另一个方向的边界,就不可能重复#include<iostream>#include<cstring>#includ原创 2016-07-10 17:29:08 · 513 阅读 · 0 评论 -
hdu1877进制转换
#include <iostream>#include <cstdio>using namespace std;int a[100];int main(){ long long A,B,sum; int m; while(cin>>m,m) { int i=0; scanf("%I64d%I64d",&A,&B);原创 2018-02-05 23:55:01 · 182 阅读 · 0 评论 -
手机键盘 模拟
题目描述 按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符原创 2018-02-04 22:31:04 · 1260 阅读 · 0 评论 -
hdu5969
http://acm.hdu.edu.cn/showproblem.php?pid=5969 要使或的和最大,要尽可能的让高位为1。将l和r两个数的二进制形式写出来,缺的补0,每一位都对齐,由于l<=r,所以在不相等的情况下,一定会出现某一位,r这一位上是1,而l这一位上是0,这样,我们可以选择一个数x这一位是1,往后所有都是0,y这一位是0,往后所有都是1,这样选择的x,y一定满足要求,而且x|原创 2016-11-08 21:11:10 · 613 阅读 · 0 评论 -
hdu5904 简单dp
http://acm.hdu.edu.cn/showproblem.php?pid=5904求两个串最长公共递增子序列的长度,且递增的序列相差1,这就简单多了,只要求出两个序列以每一位为结尾的连续序列的长度#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;cons原创 2016-09-30 20:34:32 · 385 阅读 · 0 评论 -
Pair: normal and paranormal 栈的应用
http://acm.hust.edu.cn/vjudge/contest/128024#problem/H 一个字符串有大小写对应,每次删掉相邻的大小写字母并记录相应位置,看最后能否删完。#include <iostream>#include <stack>#include <cstdio>using namespace std;const int maxn=5050;struct nod原创 2016-08-13 20:26:32 · 397 阅读 · 0 评论 -
hdu5875思维题
给你一个序列,给出询问l,r求a[l]%a[i+1]%a[i+2]….%a[r]的结果 由于取余比自己大的数没有意义,只要预处理一下,从比自己小于等于的地方开始取余就行#include <iostream>#include <cstdio>using namespace std;const int maxn=100010;int a[maxn],b[maxn];int main(){原创 2016-09-12 20:49:55 · 409 阅读 · 0 评论 -
nefu003模拟
题意,问矩阵存不存在一个子矩阵满足子矩阵内所有元素的和等于某值 n只有50,但直接暴力肯定也不行,考虑构造一个矩阵b表示他左上方的矩阵的值,这样用b就可以表示出所有的子矩阵了#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;long long a[55][55];int main(){原创 2016-08-31 21:47:33 · 241 阅读 · 0 评论 -
poj3320尺取法
这道意思是一本书有n页,每一页上有一个知识点标号a[i]可能重复,要求选择一个最小的区间使得能够覆盖所有知识点分析:[l,r]区间推进,统计区间中能够覆盖的知识点数,对于每一个l,r都是满足可以覆盖所有知识点的最小r,处理好区间知识点数的统计就好了#include <iostream>#include <map>#include <cstdio>#include <set>using nam原创 2016-08-09 21:30:39 · 553 阅读 · 0 评论 -
hdu5806尺取法
将不小于m的数看作1,剩下的数看作0,那么只要区间内1的个数不小于k则可行,枚举左端点,右端点可以通过two-pointer求出。时间复杂度O(n)O(n)。#include <cstdio>#include <algorithm>#include <iostream>using namespace std;int a[200005],sum[200005];int n,m,k;int t原创 2016-08-09 20:35:28 · 591 阅读 · 0 评论 -
hdu5857模拟
所有的情况都可以转化成分离和相交两种情况,再分类讨论#include <cmath>#include <cstdio>#include <iostream>using namespace std;const int maxn=100010;int n,m;int a[100010];int l1,r1,l2,r2;int solve(int len){ if(r1 <= l2)原创 2016-08-31 10:47:12 · 266 阅读 · 0 评论 -
hdu5752简单模拟
最大2^32,分段查询即可,0特判#include <iostream>#include <cstring>using namespace std;char s[110];int main(){ while(cin>>s) { int len=strlen(s); int n; if(len>10) {原创 2016-07-26 18:39:14 · 754 阅读 · 0 评论 -
hdu5744简单模拟
如果每个字符出现次数都是偶数, 那么答案显然就是所有数的和. 对于奇数部分, 显然需要把其他字符均匀分配给这写奇数字符#include <iostream>using namespace std;int a[100005];int main(){ int t; cin>>t; while(t--) { int n; int num原创 2016-07-26 18:16:25 · 448 阅读 · 0 评论 -
hdu2031进制转换
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main(){ int n,r; int a[1000]; while(cin>>n>>r) { if(n<0) { n=-n;原创 2018-02-20 16:07:35 · 433 阅读 · 0 评论