最新文章专题视频专题问答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
当前位置: 首页 - 科技 - 知识百科 - 正文

CodeforcesRound#271(Div.2)解题报告_html/css

来源:动视网 责编:小采 时间:2020-11-27 15:56:10
文档

CodeforcesRound#271(Div.2)解题报告_html/css

CodeforcesRound#271(Div.2)解题报告_html/css_WEB-ITnose:题目地址:http://codeforces.com/contest/474 A题:Keyboard 模拟水题。 代码如下: #include #include #include #include #include #include #include #include #include #include #include using na
推荐度:
导读CodeforcesRound#271(Div.2)解题报告_html/css_WEB-ITnose:题目地址:http://codeforces.com/contest/474 A题:Keyboard 模拟水题。 代码如下: #include #include #include #include #include #include #include #include #include #include #include using na


题目地址:http://codeforces.com/contest/474

A题:Keyboard

模拟水题。

代码如下:

#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL __intchar s[]={"qwertyuiopasdfghjkl;zxcvbnm,./"};int main(){ int i, x, j, len; char c, s1[200]; scanf("%c",&c); if(c=='L') x=1; else x=-1; scanf("%s",s1); len=strlen(s1); for(i=0;i

B题:Worms

水题。

代码如下:

#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL __intint dp[1100000];int main(){ int n, m, i, j, sum=0, x; scanf("%d",&n); for(i=0;i

C题: Captain Marmot

暴力枚举,共4*4*4*4种情况,对每一种情况分别判断是否是正方形。我居然一直都以为是矩形。

判断方法:将4条边与两条对角线分别计算出来。然后排序,4个小的肯定是边,2个大的是对角线,然后判断边是否都相等,对角线是否都相等,对角线是否是边的sqrt(2)倍(这里最好是用平方来判断是否是2倍)。然后找出移动次数最少的输出即可。

代码如下:

#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL __intconst int mod=1e9+7;struct node{ LL x, y;}t1[5], t2[5], fei[5];node solve(node x, node y, int z){ node t; t=x; int i; for(i=0;i

D题:Flowers

DP,还是水题。可以这样考虑:

第n个只有两种情况,若第n个是R,那么情况数为dp[n-1]种。若第n个是W,由于W只能连续k个,所以说,第n-k+1至第n个必须都是W,那么此时情况数为dp[n-k]种。所以状态转移方程为:

dp[n]=dp[n-1]+dp[n-k]。

然后用一个数组保存前缀和即可。

代码如下:

#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL __intconst int mod=1e9+7;LL dp[110000], sum[110000];int main(){ int i, j, n, k, a, b; LL x=0; sum[0]=0; dp[0]=0; scanf("%d%d",&n,&k); for(i=1;i<=k-1;i++) dp[i]=1; dp[k]=2; for(i=k+1;i<=100000;i++) { dp[i]=dp[i-k]+dp[i-1]; dp[i]%=mod; } for(i=1;i<=100000;i++) { sum[i]=(sum[i-1]+dp[i])%mod; } while(n--) { scanf("%d%d",&a,&b); printf("%Id\n",(sum[b]+mod-sum[a-1])%mod); } return 0;}
自己能做出来的只有这么些。sad。

文档

CodeforcesRound#271(Div.2)解题报告_html/css

CodeforcesRound#271(Div.2)解题报告_html/css_WEB-ITnose:题目地址:http://codeforces.com/contest/474 A题:Keyboard 模拟水题。 代码如下: #include #include #include #include #include #include #include #include #include #include #include using na
推荐度:
标签: div round Codeforces
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top