组队赛第二场:字符串哈希+DP
思路:这题周赛的时候没做出来,有点可惜了。要是当时记起来unsigned long long自己主动取模,然后提醒一下大帝的话,后续大帝就能过了。
唉,导致让他取了好多个模,最后还是WA了。太不机智了。
范逗了。
这题我是从前面哈希的。看到题解中从后面哈希。就是不爽,所以自己从前面哈希。
事实上都一样啦。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<bitset>
#define INF 100007
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
char s[100005];
ull base[100010],hash[100010];
int main()
{
int m,l,i,j;//system("pause");
for(i=1,base[0]=1;i<100001;i++)
base[i]=base[i-1]*131ULL;
while(~scanf("%d%d",&m,&l))
{
map<ull,int>mm;
scanf("%s",s);
int sum=0,len=strlen(s);
for(i=1,hash[0]=0;i<=len;i++)
hash[i]=hash[i-1]*131+s[i-1]-'a'+1;
for(i=0;i<l&&i+m*l<=len;i++)
{
mm.clear();
for(j=i;j<m*l+i;j+=l)
mm[hash[j+l]-hash[j]*base[l]]++;
if(mm.size()==m) sum++;
for(j=m*l+i;j<=len-l;j+=l)
{
int head=j-m*l;
mm[hash[head+l]-hash[head]*base[l]]--;
if(mm[hash[head+l]-hash[head]*base[l]]==0)
mm.erase(hash[head+l]-hash[head]*base[l]);
mm[hash[j+l]-hash[j]*base[l]]++;
if(mm.size()==m) sum++;
}
}
printf("%d\n",sum);
}
return 0;
}
HDU 4815
这题逗逼了。刚開始大帝告诉我题意可能我理解错了。然后就用二进制枚举了。然后然后……然后就浪费了一个多小时一直WA,后面大帝发觉我理解错了之后。他又敲了背包才过……唉……发现题意真的是有点难理解了。到如今题意和解法还都是半知半懂的。
正确的解法是:总的情况是:1<<n,然后可组合的次数除以总的情况>=p的最小分数是正确答案。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
long long dp[40005];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,i,j,sum=0,a[45];
double p;
memset(dp,0,sizeof(dp));
dp[0]=1;
cin>>n>>p;
for(i=0;i<n;i++)
scanf("%d",a+i),sum+=a[i];
sort(a,a+n);
for(i=0;i<n;i++)
for(j=sum;j>=a[i];j--)
dp[j]+=dp[j-a[i]];
long long sum1=1LL<<n,sum2=0;
for(i=0;i<=sum;i++)
{
sum2+=dp[i];
if((double)sum2/(double)sum1>=p)
{
printf("%d\n",i);
break;
}
}
}
return 0;
}
组队赛第二场:字符串哈希+DP的更多相关文章
- 2018牛客网暑期ACM多校训练营(第二场) A - run - [DP]
题目链接:https://www.nowcoder.com/acm/contest/140/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K ...
- Codeforces Round #543 (Div. 2) F dp + 二分 + 字符串哈希
https://codeforces.com/contest/1121/problem/F 题意 给你一个有n(<=5000)个字符的串,有两种压缩字符的方法: 1. 压缩单一字符,代价为a 2 ...
- [SCOI2007]压缩(动态规划,区间dp,字符串哈希)
[SCOI2007]压缩 状态:设\(dp[i][j]\)表示前i个字符,最后一个\(M\)放置在\(j\)位置之后的最短字串长度. 转移有三类,用刷表法来实现. 第一种是直接往压缩串后面填字符,这样 ...
- [比赛|考试]nowcoder NOIPpj组第二场
nowcoder NOIPpj组第二场 370pts/400pts(100,100,100,70) rank3 给自己的反思:前3题都A了,T4O(N^2)不会就是不会(没准是我懒得推了),DP了70 ...
- 2019HDU多校第一场1001 BLANK (DP)(HDU6578)
2019HDU多校第一场1001 BLANK (DP) 题意:构造一个长度为n(n<=10)的序列,其中的值域为{0,1,2,3}存在m个限制条件,表示为 l r x意义为[L,R]区间里最多能 ...
- 【2019多校第一场补题 / HDU6578】2019多校第一场A题1001Blank——dp
HDU6578链接 题意 有一串字符串,仅由 {0,1,2,3}\{0, 1, 2, 3\}{0,1,2,3} 组成,长度为 nnn,同时满足 mmm 个条件.每个条件由三个整数组成:l.r.xl.r ...
- Vijos1680距离/openjudge2988计算字符串的距离[DP]
描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb_c_”,“_a_bcbcd_”和“abcb_c_”都是X的扩展 ...
- 2014百度之星预赛(第二场)——Best Financing
2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...
- 2018牛客暑期ACM多校训练营第二场(有坑未填)
第二场终于等来学弟 开始(被队友带飞)的开心(被虐)多校之旅 A run A题是一个递推(dp?)+前缀和 因为看数据量比较大 就直接上前缀和了 一个比较简单的递推 没有太多难点 签到题 需要注意 ...
随机推荐
- PHP 页面跳转到另一个页面的几种方法分享
如何在 PHP 中从一个页面重定向到另外一个页面呢?今天 清源 为大家列举出了三种办法,供大家来参考. 一.用HTTP头信息 也就是用PHP的HEADER函数.PHP里的HEADER函数的作用就是向 ...
- qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)
笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...
- for循环遍历字符串的还有一种方法
遍历字符c,让它各自等于字符串数组chars里面的各个字符.然后运行以下的语句,当c被赋值为chars里面全部字符各一次后.就会退出这个循环. 通常我们遍历字符串数组用 for(int i=0;i&l ...
- 【ASP.NET Web API教程】1 ASP.NET Web API入门
原文 [ASP.NET Web API教程]1 ASP.NET Web API入门 Getting Started with ASP.NET Web API第1章 ASP.NET Web API入门 ...
- struts2官方演示程序总结struts2-blank
struts-2.2.3.1-all\struts-2.2.3.1\apps\struts2-blank总结 1.Html可以访问action ,如下: < head > ...
- 【Visual C++】Windows GDI贴图闪烁解决方法
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的 ...
- BCB/Delphi中常用的VCL函数说明(文件函数)
--------------------文件操作--------------------函数名称:ChangeFileExt函数说明:更改指定文件的扩展名,函数原型如下:AnsiString __fa ...
- UVA 11054 Wine trading in Gergovia 葡萄酒交易 贪心+模拟
题意:一题街道上很多酒店,交易葡萄酒,正数为卖出葡萄酒,负数为需要葡萄酒,总需求量和总售出量是相等的,从一家店到另外一家店需要路费(路费=距离×运算量),假设每家店线性排列且相邻两店之间距离都是1,求 ...
- 用百度API实现热(WIFI)、GPS、基站定位
直接在代码.. .嘎嘎 /** * 百度基站定位错误返回码 */ // 61 : GPS所在地结果 // 62 : 扫描整合的基础上有针对性的失败.在这一点上的定位结果无效. // 63 : 网络异常 ...
- 大白菜U盘启动制作工具装机维护版V5.0–大白菜U盘下载中心
大白菜U盘启动制作工具装机维护版V5.0–大白菜U盘下载中心 大白菜U盘启动制作工具装机维护版V5.0