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. 用css控制一个DIV画图标。

    在实际开发中,我们会用到一些小图形,图标.大多数情况下都是用图片来实现的,同时对图片进行处理使图片大小尽可能的缩小.但是图片在怎么处理也是按KB来算的.但是要是用CSS画,只要用很少的空间就能完成同样 ...

  2. (转)Java通过axis调用WebService

    转自:http://blog.csdn.net/wanglha/article/details/49679825 转载地址:http://www.linuxidc.com/Linux/2015-06/ ...

  3. JavaSE学习总结第13天_API常用对象3

      13.01 StringBuffer的概述 StringBuffer类概述:线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序 ...

  4. 获取多个汉字首字母(php)

    <?php function getfirstchar($s0){ $fchar = ord($s0{0}); if($fchar >= ord("A") and $f ...

  5. 关注SSO

    https://wiki.jasig.org/display/CASC/Configuring+the+Jasig+CAS+Client+for+Java+in+the+web.xml 其余的看osc ...

  6. UVALive 6947 Improvements(DP+树状数组)

    [题目链接] https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=sho ...

  7. POJ 3061 Subsequence(Two Pointers)

    [题目链接] http://poj.org/problem?id=3061 [题目大意] 给出S和一个长度为n的数列,问最短大于等于S的子区间的长度. [题解] 利用双指针获取每一个恰好大于等于S的子 ...

  8. C、C++中引用与指针的区别

    1:引用的和指针在概念上的区别 引用是变量的别名,例如 int m; int &n=m; 引用作为一个别名.它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用 ...

  9. php在apache中运行模式

    php在apache中运行模式 (2011-12-18 02:38:27) 标签: 杂谈 分类: 服务器及软件 一.php在php在三种工作方式:Apache 模块DLL) 以下分别比较: 1. ph ...

  10. Android 怎样在linux kernel 中读写文件

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...