#272是自己打的第一场cf,感觉这一套质量挺棒的,不像后两场略水

//先附上A,B,C的题解,因为离noip只剩下一点时间了,所以之后不一定还刷cf,暂且就先放上前三题好了

A题目大意忘了。懒得看,反正很水。

B组合数学:

题目大意:给你两个字符串;s1,s2

其中s2字符串可能含有未知的字符,对于未知的字符你可以取+或者-,问你s2和s1相同的概率是多少?

给字符串附上值;

其中我们可规定+时,x++;-时,x--;并记录下有未知的字符有tot个,找到其中+有i个,- 有 tot-i个时,未知的字符串的值会等于已知

然后运用排列组合的思想,计算 ans个选i个有多少种选法;C(ans,i)

最后除以2^tot就为答案;

附上代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
char s1[50],s2[50];
int l;
int sum1,sum2;
int ans,temp,f;
double tot;
int c(int m,int n){
int x=1,y=1;
double z;
for(int i=0;i<m;i++){
x*=(n-i);
y*=(m-i);
}
z=x/(y+0.0);
return z;
}
int main(){
//freopen("data.txt","r",stdin);
cin>>s1>>s2;
l=strlen(s1);
for(int i=0;i<l;i++){
if(s1[i]=='+') sum1++; else sum1--;
if(s2[i]=='+') sum2++;
else if(s2[i]=='-') sum2--;
else ans++;
}
temp=1;
for(int i=1;i<=ans;i++) temp*=2;
for(int i=0;i<=ans;i++){
if(sum2+i-(ans-i)==sum1){
f=c(i,ans);
break;
}
}
tot=f/(temp+0.0);
printf("%.12f",tot);
return 0;
}

C数论

题目大意:给你a,b两个数,如果存在某个数 x 满足,mod(x,b)≠0且 div(x,b)/mod(x,b)=k,k属于[1,a]

其中mod(x,b)=b%x;div(x,b)=b/x;

问你所有可能的k的和是多少?

好题啊....这套题貌似数学味道很重,D题瞥了眼貌似也是数论题;

说说这题吧,我们可设

x=y*b+z;z∈[0,b-1]

如果想到了这一步,就差不多对了一半了(代码量太少了其实是)

之后很自然的,我们会想到枚举z,也就是余数,以及枚举k,但是这很明显会超时;

自己动手算几个,z一定时,x值的变化,我们会发现x不是一般的数列,而是等差数列!

然后自己套个等差数列的公式即可;

PS:但是因为取余的细节问题,WA了很多次;这里MARK一下:

首先要知道虽是答案取余,但是是最终的答案取余么?明显不是。但是在运算过程中什么时候取余是很关键的,没有在适当的时候取余会导致结果错误;

那么什么时候取余呢?正确的方法是,在每一个运算符之后;

就比如: a*b+c让你对这个式子的答案取余。应该是这么算的: (a*b%mod+c)%mod

但是这里还有一个很细节的地方:

int a,b; a*b的值,就会保存在一个临时变量temp里,而且这个临时变量的类型也为int;

但是,可能会出现 a*b的值在mod之前就已经爆int了,这时temp里存的值是有问题的,当然返回的值同样也会有问题,这样会导致答案错误;

(你可以试一下这一题11这个点如果i为int 为发生什么)

改进的方法就是,把a,b改为long long ,或是写成 1LL*a*b;

建议还是用前面一种,因为后面一种在式子很长的情况下,极有可能会漏掉;

附上代码:

→ Source
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const long long mod=1e9+7;
long long temp,ans,sum;
long long a,b;
int main(){
//freopen("data.txt","r",stdin);
scanf("%d%d",&a,&b);
for(long long i=1;i<b;i++){
ans=(ans+i*a%mod+a*(a+1)/2%mod*i%mod*b%mod)%mod;
}
cout<<ans;
return 0;
}

CODEFORCES #272 DIV2[为填完]的更多相关文章

  1. Codeforces #180 div2 C Parity Game

    // Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...

  2. Codeforces #541 (Div2) - E. String Multiplication(动态规划)

    Problem   Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...

  3. Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)

    Problem   Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...

  4. Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)

    Problem   Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...

  5. Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)

    Problem   Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...

  6. 【Codeforces #312 div2 A】Lala Land and Apple Trees

    # [Codeforces #312 div2 A]Lala Land and Apple Trees 首先,此题的大意是在一条坐标轴上,有\(n\)个点,每个点的权值为\(a_{i}\),第一次从原 ...

  7. codeforces#518 Div2 ABCDE

    A---Birthday http://codeforces.com/contest/1068/problem/A 题意: 有n种硬币,m个人.m个人要给Ivan送硬币,每个人送的硬币都要互不相同但数 ...

  8. codeforces #309 DIV2

    这场并没有做,做的赛后的,太晚了时间,中午做了两题,稍微贴一下,剩余的题目本周争取补完 A题: 链接:http://codeforces.com/contest/554/problem/A #incl ...

  9. Codeforces Round div2 #541 题解

    codeforces Round #541 abstract: I构造题可能代码简单证明很难 II拓扑排序 III并查集 启发式排序,带链表 IV dp 处理字符串递推问题 V 数据结构巧用:于二叉树 ...

随机推荐

  1. EasyUI 扩展自己定义EasyUI校验规则 验证规则(经常使用的)

    比如 校验输入框仅仅能录入0-1000之间 最多有2位小数的数字 表单<input type="text" id="rate" name="ra ...

  2. java字节中的基本类型的职业的数目 (采访总是问)

    因为移动装置存储器中的移动开发的局限性,数据的字节数需要考虑往往在占领中使用的类型. 下面介绍下一个Java,以加深记忆. 在Java中一共同拥有8种基本数据类型,当中有4种整型,2种浮点类型,1种用 ...

  3. ios 调节器 modal 得知

    代码中创建: 1.appdelegate 该contoller放置controller下一个 - (BOOL)application:(UIApplication *)application didF ...

  4. oracle_constraint的用处

    ql中constraint主要是增加约束 这个主要就是增加约束的 以下几种约束 .并 一一列举: 1.主键约束: 主键约束:就是对一个列进行了约束,约束为(非空.不重复)要对一个列加主键约束的话,这列 ...

  5. UVA Don&#39;t Get Rooked

    主题如以下:  Don't Get Rooked  In chess, the rook is a piece that can move any number of squaresverticall ...

  6. 教你一步一步部署.net免费空间OpenShift系列之四------绑定域名、使用CDN加速

    很抱歉这几天没有时间,有人问我怎么绑定域名的问题也没有答复,下面进入正题,惊闻ASP.Net要开源了,难道.Net春天要来了?不废话,上回书说,部署完毕ASP.Net网站后,直接访问不能访问(嗯,众所 ...

  7. struts2源代码分析(个人觉得非常经典)

    读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过.实际上Struts1.x与Struts2并无我们想象的血缘关系.虽然Struts2的开 ...

  8. 【Unity Shaders】Mobile Shader Adjustment —— 为手机定制Shader

    本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图.这里是本书所需的代码和 ...

  9. Hadoop-2.4.1完全分布式环境搭建

      Hadoop-2.4.1完全分布式环境搭建   Hadoop-2.4.1完全分布式环境搭建 一.配置步骤如下: 主机环境搭建,这里是使用了5台虚拟机,在ubuntu 13系统上进行搭建hadoop ...

  10. DataTable相关操作,筛选,取前N条数据,获取指定列数据

    DataTable相关操作,筛选,取前N条数据,获取指定列数据2013-03-12 14:50 by Miracle520, 2667 阅读, 0 评论, 收藏, 编辑 1 #region DataT ...