A.数据量很小,直接爆搞。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <stack>
#include <map>
#include <iomanip>
#define PI acos(-1.0)
#define Max 2505
#define inf 1<<28
#define LL(x) ( x << 1 )
#define RR(x) ( x << 1 | 1 )
#define REP(i,s,t) for( int i = ( s ) ; i <= ( t ) ; ++ i )
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define mp(a,b) make_pair(a,b)
#define PII pair<int,int>
using namespace std; int a[111] ;
int num[11111] ;
int main() { int n ;
cin >> n ;
int ans = 0 ;
for (int i = 1 ; i <= n ;i ++ ){
cin >> a[i] ;
num[i] = num[i - 1] + a[i] ;
}
ans = num[n] - 1 ;
for(int i = 1; i <= n; ++i ){
for(int j = 1; j <= i; ++ j){
int sum = num[n] - 2 * ( num[i] - num[j-1] ) + ( i - j + 1 );
ans = max(sum ,ans) ;
}
}
cout << ans << endl; return 0 ;
}

B,直接打个素数表,然后输出前N个素数就可以了。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <stack>
#include <map>
#include <iomanip>
#define PI acos(-1.0)
#define Max 2505
#define inf 1<<28
#define LL(x) ( x << 1 )
#define RR(x) ( x << 1 | 1 )
#define REP(i,s,t) for( int i = ( s ) ; i <= ( t ) ; ++ i )
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define mp(a,b) make_pair(a,b)
#define PII pair<int,int>
using namespace std; bool flag[11111111] ;
void prime(){
flag[0] = 1 ;
flag[1] = 1 ;
flag[2] = 0 ;
for (int i = 2 ;i <= 1300000 ; i ++ ){
if(!flag[i]){
for (int j = 2 * i ;j <= 1300000 ;j += i){
flag[j] = 1 ;
}
}
}
}
int a[111] ;
int num[1111111] ;
int main() {
prime() ;
int nn = 0 ;
for (int i = 2 ;i <= 1300000 ;i ++ ){
if(!flag[i])num[nn ++ ] = i ;
}
int n ;
cin >> n ;
cout << num[0] ;
for (int i = 1 ;i < n ;i ++ ){
printf(" %d",num[i]) ;
}
cout << endl;
return 0 ;
}

C,可以推出,k个连续的字符串是满足等比数列的关系的。

所以我们只需求出a1 和比例q就可以了。

首相就是只有一个字符串的时候,所有的删除的总和。

q就是pow(2 , l),l是字符串的长度。

等比数列求和公式 (a1 * (q ^ n - 1)) / (q - 1)%MOD 。先将a1 拿到外面去,不参与计算。我们设q ^ n - 1为a ,q - 1 为b 。那么式子就变成a / b %MOD 。这就变成很熟悉的拓展欧几里德了,先求出b % MOD的逆元x . x * b % MOD  = 1 ,那么 (a / b ) %MOD * (x * b) % MOD 的值不变,那么可以将式子化简成(a * x) % MOD 。

最后再将a1乘上即可。

#define MOD 1000000007

char a[111111] ;

inline ll extend_gcd(ll a ,ll b , ll& x , ll& y){
ll ans , t ;
if(b == 0){
x = 1 ;
y = 0 ;
return a ;
}
ans = extend_gcd(b , a % b ,x ,y ) ;
t = x ;
x = y ;
y = t - (a / b) * y ;
return ans ;
} ll quick_pow(ll a ,ll b , ll M){
ll ret = 1 ;
ll temp = a ;
while(b){
if(b & 1){
ret = (ret * temp) % M ;
}
temp = (temp * temp) % M ;
b >>= 1 ;
}
return ret ;
}
int main(){
cin >> a ;
int k ;
cin >> k ;
int l = strlen(a) ;
ll a1 = 0 ;
REP(i , 0 ,l - 1 ){
if(a[i] == '0' || a[i] == '5'){
a1 = (a1 + quick_pow(2 ,i ,MOD)) % MOD ;
}
}
ll a = quick_pow(2 , l ,MOD) ;
ll aa = (a - 1 + MOD) % MOD ;
ll x , y ;
extend_gcd(aa ,MOD , x ,y) ;
x = (x + MOD) % MOD ;
ll c = (quick_pow(a , k ,MOD) - 1) * x % MOD ;
ll ans = c * a1 % MOD ;
cout << ans << endl;
return 0 ;
}

D,DFS,每次进入一个空地,先将他建成蓝色的,然后向四个方向DFS,最后回溯的时候将这个蓝色的建筑拆掉建成红色的,当然第一个进入的点是不能建成红色的。

这个很容易证明,一个联通块里面,肯定有一个是蓝色的,其他都是红色的。

int n , m ;
char op[11111111] ;
int xx[11111111] ;
int yy[11111111] ;
int ss[555][555] ;
char Map[555][555] ;
int num = 0 ;
void dfs(int x ,int y ,int first ) {
if(x < 1 || x > n || y < 1 || y > m)return ;
op[num] = 'B' ;
xx[num] = x ;
yy[num] = y ;
num ++ ;
ss[x][y] = 0 ;
if(ss[x - 1][y])dfs(x - 1 ,y , 1) ;
if(ss[x][y - 1])dfs(x ,y - 1 ,1 ) ;
if(ss[x + 1][y])dfs(x + 1 ,y , 1) ;
if(ss[x][y + 1])dfs(x ,y + 1 ,1 ) ;
if(first) {
op[num] = 'D' ;
xx[num] = x ;
yy[num] = y ;
num ++ ;
op[num] = 'R' ;
xx[num] = x ;
yy[num] = y ;
num ++ ;
}
}
int main() {
cin >> n >> m ;
for (int i = 1 ; i <= n ; i ++ ) {
for (int j = 1 ; j <= m ; j ++ ) {
cin >> Map[i][j] ;
if(Map[i][j] == '.') {
ss[i][j] = 1 ;
}
}
}
for (int i = 1 ; i <= n ; i ++ ) {
for (int j = 1 ; j <= m ; j ++ ) {
if(ss[i][j]) {
dfs(i ,j , 0 ) ;
}
}
}
cout << num << endl;
for (int i = 0 ; i < num ; i ++ ) {
cout << op[i] << " " << xx[i] << " " << yy[i] << endl;
}
return 0 ;
}

E。状态压缩DP。

枚举1<< 24的状态。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <stack>
#include <map>
#include <iomanip>
#define PI acos(-1.0)
#define Max 2505
#define inf 1<<28
#define LL(x) ( x << 1 )
#define RR(x) ( x << 1 | 1 )
#define REP(i,s,t) for( int i = ( s ) ; i <= ( t ) ; ++ i )
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define mp(a,b) make_pair(a,b)
#define PII pair<int,int>
using namespace std; #define MOD 1000000007 inline void RD(int &ret) {
char c;
do {
c = getchar();
} while(c < '0' || c > '9') ;
ret = c - '0';
while((c=getchar()) >= '0' && c <= '9')
ret = ret * 10 + ( c - '0' );
} int a[111111] ;
int sum[1 << 24] ;
int dp[1 << 24] ;
int k[11] ; int main(){ int n ;
cin >> n ;
for (int i = 0 ;i < n ; i ++ ){
RD(a[i]) ;
} int m ;
cin >> m ;
for (int i = 0 ;i < m ;i ++ ){
RD(k[i]) ;
}
dp[0] = 1 ;
for (int i = 1 ;i < (1 << n) ; ++ i){//枚举当前路径
int pos ;
bool flag = 0 ;
sum[i] = 0 ;
for (int j = 0 ;j < n ;j ++ ){
if(i & (1 << j)){//i 在 j 这点为1 ,直接在这里找出sum[i]的值会T。O(2 ^ 24 * n)
pos = j ;//一开始我直接写sum[i] += a[j] ;就T了
break ;
}
}
sum[i] = sum[i ^ (1 << pos)] + a[pos] ;//i 状态的所有步数。
for (int j = 0 ; j < m ;j ++ ){//i状态的步数是否不能走。
if(sum[i] == k[j]){
dp[i] = 0 ;
flag = 1 ;
break ;
}
}
if(flag)continue ;
dp[i] = 0 ;
for (int j = 0 ;j < n ;j ++ ){
if(i & (1 << j)){//i 这位可以由i ^ (1 << j )这一状态过来。
dp[i] = (dp[i] + dp[i ^ (1 << j)]) ;
if(dp[i] >= MOD)dp[i] -= MOD ;
}
}
} cout << dp[(1 << n) - 1] << endl;
return 0 ;
}

CF 191 div2的更多相关文章

  1. cf 442 div2 F. Ann and Books(莫队算法)

    cf 442 div2 F. Ann and Books(莫队算法) 题意: \(给出n和k,和a_i,sum_i表示前i个数的和,有q个查询[l,r]\) 每次查询区间\([l,r]内有多少对(i, ...

  2. CF#603 Div2

    差不多半年没打cf,还是一样的菜:不过也没什么,当时是激情,现在已是兴趣了,开心就好. A Sweet Problem 思维,公式推一下过了 B PIN Codes 队友字符串取余过了,结果今天早上一 ...

  3. CF R631 div2 1330 E Drazil Likes Heap

    LINK:Drazil Likes Heap 那天打CF的时候 开场A读不懂题 B码了30min才过(当时我怀疑B我写的过于繁琐了. C比B简单多了 随便yy了一个构造发现是对的.D也超级简单 dp了 ...

  4. CF#581 (div2)题解

    CF#581 题解 A BowWow and the Timetable 如果不是4幂次方直接看位数除以二向上取整,否则再减一 #include<iostream> #include< ...

  5. [CF#286 Div2 D]Mr. Kitayuta's Technology(结论题)

    题目:http://codeforces.com/contest/505/problem/D 题目大意:就是给你一个n个点的图,然后你要在图中加入尽量少的有向边,满足所有要求(x,y),即从x可以走到 ...

  6. CF 191 总结

    A. Flipping Game 链接:http://codeforces.com/contest/327/problem/A 题意:从 i 到 j 翻转一次使得 1 的 个数最多~ 直接暴力搞~ # ...

  7. CF 197 DIV2 Xenia and Bit Operations 线段树

    线段树!!1A 代码如下: #include<iostream> #include<cstdio> #define lson i<<1 #define rson i ...

  8. CF#345 div2 A\B\C题

    A题: 贪心水题,注意1,1这组数据,坑了不少人 #include <iostream> #include <cstring> using namespace std; int ...

  9. CF R303 div2 C. Woodcutters

    C. Woodcutters time limit per test 1 second memory limit per test 256 megabytes input standard input ...

随机推荐

  1. 搭建Hadoop集群 (三)

    通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种D ...

  2. 从头编译ARM交叉编译环境

    首先Cygwin需安装基本的命令 例如make binutils gcc 还有diffutils 没有他会报找不到cmp命令 这些都可以在setup.exe中找到 编译gcc时,需要注意一个原则:不要 ...

  3. Git-常用命令集合

    该文章会陆续添加内容,学习网页来自http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 ...

  4. Windows Server 2012 R2 Standard序列号

    备用一个吧,免得用起来的时候找不到. NB4WH-BBBYV-3MPPC-9RCMV-46XCB

  5. DelphiXe5中的双向绑定(使用使用TBindScope和TBindExpression,并覆盖AfterConstruction函数)

    在Delphi下等这一功能很久了,虽然C#下早已实现了这一功能.但是在Dephi下尝试这项功能时还是有些许的激动.闲言少絮,直接上代码. unit BindingDemo; interface use ...

  6. CSS 常用自定义样式

    目录: 1. 文本单行显示,并对超出部分截断以省略号代替: 2.列布局或栅格布局:比如:左侧固定宽度,右侧占满剩下的宽度: 章节: 1. 文本单行显示,并对超出部分截断以省略号代替:参见以下代码: d ...

  7. Hibernate 配置详解(12) 补充

    hibernate.hbm2ddl.import_files_sql_extractor 这个配置项用于补充这篇文章: http://blog.csdn.net/stefwu/article/deta ...

  8. iOS 按钮倒计时功能

    iOS 按钮倒计时功能, 建议把按钮换成label,这样会避免读秒时闪烁 __block ; __block UIButton *verifybutton = _GetverificationBtn; ...

  9. POJ 3311 Hie with the Pie (BFS+最短路+状态压缩)

    题意:类似于TSP问题,只是每个点可以走多次,求回到起点的最短距离(起点为点0). 分析:状态压缩,先预处理各点之间的最短路,然后sum[i][buff]表示在i点,状态为buff时所耗时...... ...

  10. No.1小白的HTML+CSS心得篇

    一个web前端的小白,听前辈说写好笔记很关键,so 特此用博客来开始记录自己的旅程——Web之路 最近几天看的HTML 1.纠正一个认知错误 “HTML是一种编程语言”  ————(错) HTML ( ...