最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

CodeforcesRound#256(Div.2)A/B/C/D_html/css

来源:懂视网 责编:小采 时间:2020-11-27 15:54:50
文档

CodeforcesRound#256(Div.2)A/B/C/D_html/css

CodeforcesRound#256(Div.2)A/B/C/D_html/css_WEB-ITnose:A. Rewards 水题 #include#include#includeusing namespace std;int main(){ int a1,a2,a3,b1,b2,b3,s,t1,t2,sum1,sum2; while(scanf(%d%d%d,&a1,&a2,&a3)!=EOF) { scanf(%d%d%d,&b1,&b2,
推荐度:
导读CodeforcesRound#256(Div.2)A/B/C/D_html/css_WEB-ITnose:A. Rewards 水题 #include#include#includeusing namespace std;int main(){ int a1,a2,a3,b1,b2,b3,s,t1,t2,sum1,sum2; while(scanf(%d%d%d,&a1,&a2,&a3)!=EOF) { scanf(%d%d%d,&b1,&b2,

A. Rewards

水题


#include#include#includeusing namespace std;int main(){ int a1,a2,a3,b1,b2,b3,s,t1,t2,sum1,sum2; while(scanf("%d%d%d",&a1,&a2,&a3)!=EOF) { scanf("%d%d%d",&b1,&b2,&b3); scanf("%d",&s); sum1 = a1+a2+a3; sum2 = b1+b2+b3; if(sum1>=5) { t1 = sum1/5; if(sum1%5) t1++; } else if(sum1>0) t1 = 1; else t1 = 0; if(sum2>=10) { t2 = sum2/10; if(sum2%10) t2++; } else if(sum2>0) t2 = 1; else t2 = 0; if(t1+t2>s) puts("NO"); else puts("YES"); } return 0;}

B. Suffix Structures

题意:给你两个字符串,要把a串变为b串,如果只需要删除某些字符就能达到目的就输出automaton

如果只通过交换某些字符就输出array,如果两种操作都需要才能达到目的就输出both,如果两种操作

同时使用都不行则输出need tree.


算法:

这个其实情况很复杂的,必须保持头脑清晰清晰清晰~


1、首先如果两个串是相同的则输出array。

2、如果a串长度小于b串长度或者b串中的对应字母在a串中个数不够或者种类不够都是need tree.

3、如果a串长度等于b串长度,且a串中能找到对应的b串中的字母则输出array.

4、如果a串长度大于b串长度,b串中的字母在a串中依次出现则输出automaton.如果虽然都出现了但是

顺序不一样,则输出both。


#include#include#include#includeusing namespace std;char s1[110],s2[110];vector c;int cnt1[30],cnt2[30];int main(){ int flag1,flag2,d,flag; while(scanf("%s%s",s1,s2)!=EOF) { if(strcmp(s1,s2)==0) { printf("array\n"); continue; } flag1 = flag2 = flag = 0; c.clear(); memset(cnt1,0,sizeof(cnt1)); memset(cnt2,0,sizeof(cnt2)); int len1 = strlen(s1); int len2 = strlen(s2); if(len1>len2) flag1 = 1; for(int i=0;i cnt1[s2[i]-'a']) { flag = 1; break; } } if(flag || len1


C. Painting Fence

题意:有n个长度为ai的木条。然后有一个油漆刷,木条宽度和油漆刷的宽度都为1,要把

木条都涂色。且油漆刷刷到的地方都要有木块。问最少需要刷多少次。


算法:记忆化搜索

1、横向刷的下面一定是横向刷。

2、刷完了下面共同的长度后会把木条分成断开的几截,每一截由若干木条的上半部分未刷油漆的组成。

每一部分要么就是竖着刷要么就是横着刷,这时比较两种刷法的次数,取小者。[l,r]的部分竖着刷要刷

r-l+1下,横着刷还是先刷公共部分,再看上面分成几截,于是又出现了相同的子问题。用dfs递归解决。

#include#include#include#define maxn 5010using namespace std;typedef long long ll;ll a[maxn];ll min(ll x,ll y){ return x


D. Multiplication Table

题意:n行m列的乘法表,为第k大的数是哪个。

比如:2*3的乘法表为 1 2 3

2 4 6

算法:二分查找。

由于最大的数为n*m=25*10^10,想到二分。第k大的数就是说有k个小于等于他的数(这种说法也不准确),

反正就是第一个找到的这样的最小的数。

充分利用乘法表的特点,每一行都是行数乘以1-m。所以找比小于等于x的数就是min(m,x/i)。


P.S 。。反正我是没想到这个解法啦。。o(?□?)o。。学习了。。


#include#include#include#includeusing namespace std;typedef long long ll;ll k,n,m;ll min(ll x,ll y){ return x>1; if(check(mid)>=k) { ans = mid; r = mid-1; } else l = mid+1; } printf("%I64d\n",ans); } return 0;}

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

CodeforcesRound#256(Div.2)A/B/C/D_html/css

CodeforcesRound#256(Div.2)A/B/C/D_html/css_WEB-ITnose:A. Rewards 水题 #include#include#includeusing namespace std;int main(){ int a1,a2,a3,b1,b2,b3,s,t1,t2,sum1,sum2; while(scanf(%d%d%d,&a1,&a2,&a3)!=EOF) { scanf(%d%d%d,&b1,&b2,
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top