CF 191 总结
A. Flipping Game
链接:http://codeforces.com/contest/327/problem/A
题意:从 i 到 j 翻转一次使得 1 的 个数最多~
直接暴力搞~
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
int N;
int a[], b[];
int main( )
{
while(scanf("%d", &N)!= EOF){
for(int i=; i<N; ++ i){
scanf("%d", &a[i]);
b[i]=a[i];
}
int ans=-;
for( int i=; i<N; ++ i ){
for( int j=i; j<N; ++ j ){
for( int k=i; k<=j ; ++ k){
b[k]=-a[k];
}
int t=;
for( int k=; k<N; ++ k ){
if(b[k]) t++;
ans=ans>t?ans:t;
b[k]=a[k];
}
}
}
printf("%d\n", ans);
}
return ;
}
B. Hungry Sequence
链接:http://codeforces.com/contest/327/problem/B
题意:生成一个排列, 如果 i < j 那么 p[i]<p[j] 且 p[j]%p[i] != 0 ~
数据范围:n < =10^5 ~ 直接生成10^5个素数即可~
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
int a[], p[];
void getp( )
{
for( int i=; i<=; i+= ){
if( !a[i] ){
for( int j=i*i; j<; j+=i ){
a[j]=;
}
}
}
p[]=;
int k=;
for(int i=; i<; i+=){
if( !a[i] )p[k++]=i;
}
}
int main( )
{
getp( );
int N;
while( scanf("%d", &N)!= EOF ){
for ( int i=; i<N; ++ i ){
printf(i!=N-?"%d ":"%d\n", p[i]);
}
}
return ;
}
C. Magic Five
链接:http://codeforces.com/contest/327/problem/C
题意:给定字符串 s 和 整数 k 表示有 k 个 s 重复组成的字符串 S‘ 要从中截取一些,使得剩下的字符串能表示的整数能整除5~
思路: 等比数列求和;
例如求sum=2^1+2^2+2^3+2^4+2^5+2^6+2^7 .. + 2^n~
公式就为 若n%2==0 T(n)=T(n/2)+T(n/2)*2^(n/2);
若n%2==1 T(n)=T(n/2)+T(n/2)*2^(n/2)+ 2^n;
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
typedef __int64 LL;
const LL Mod=1e9+;
char s[];
LL m, k, ans, x;
LL P_M(int x, int n )
{
LL rec=, t=x;
while( n ){
if(n&){
rec*=t;
rec%=Mod;
}
t*=t;
t%=Mod;
n>>=;
}
return rec;
}
LL Sum( int x, int n )
{
if( n== )
return x;
LL t=Sum( x, n/ );
t=( t+t*P_M(m, n/))%Mod;// m为公比;
if( n& ) t=(t+P_M( m, n-)*x)%Mod;// 加上an
return t;
} int main( )
{
while( scanf("%s%I64d", s, &k)!= EOF ){
int l=strlen ( s );
m=P_M(, l), x=;
for( int i=; i<l; ++ i ){
if( s[i]=='' || s[i]=='' ){
ans=(ans+x)%Mod;
}
x=(x*)%Mod;
}
ans=Sum( ans, k );
printf("%I64d\n", ans);
}
return ;
}
D. Block Tower
链接:http://codeforces.com/contest/327/problem/D
题意:堆房子,要求人最多,堆红色的时候,要求边上一定要有蓝色的~
思路:只要总数最大,过程不做要求~所以可以把每一块先变成蓝色, 再逐渐变成红色~
#include <cstdio>
#include <cmath>
#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
#define lega(x, a) ((x)<=(a) && 0 <(x))
char s[][];
bool vi[][];
int N, M, ans;
struct Node
{
int x, y;
bool f;
Node( ){}
Node(int _x, int _y, bool _f){
x=_x, y=_y, f=_f;
}
}p;
stack<Node>sn;
const int xx[]={,,,-};
const int yy[]={,-,,};
void DFS( int x, int y )
{
int _x,_y;
for( int i=; i<; ++ i ){
_x=x+xx[i], _y=y+yy[i];
if( lega(_x,N) && lega(_y, M) && !vi[_x][_y] ){
vi[_x][_y]=;
sn.push(Node( _x,_y, false ));
DFS( _x, _y );
}
}
} int main( )
{
while( scanf("%d%d", &N, &M)!= EOF ){
for( int i=;i<=N; ++ i ){
scanf("%s", s[i]+);
}
while(!sn.empty()){
sn.pop( );
}
memset(vi, , sizeof vi);
ans=;
for( int i=; i<=N; ++ i ){
for( int j=; j<=M; ++ j ){
if( !vi[i][j]&&s[i][j]=='.' ){
vi[i][j]=;
sn.push(Node(i, j, true));
ans-=; // 最后一个不能被拆, 减少两次操作
DFS(i, j); }
}
}
ans+=*sn.size( );
printf("%d\n", ans);
for( int i=; i<=N; ++ i ){
for(int j=; j<=M; ++ j){
if( vi[i][j] ){
printf("B %d %d\n", i, j);
}
}
}
while( !sn.empty( ) ){
p=sn.top( );
sn.pop( );
if( !p.f ){// 只要求建红色的时候边上有蓝色的, 并不是要求最后的状态是红色边上有蓝色
printf("D %d %d\n", p.x, p.y);
printf("R %d %d\n", p.x, p.y);
}
}
}
return ;
}
E. Axis Walking
链接:http://codeforces.com/contest/327/problem/E
题意: 有两个集合 A, K, 要求 A 集合的一个排列, 其前缀和不等于 k 中任意一个元素, 求有多少个排列~
思路: 设 A 集合的元素为 a1, a2, a3~~~an, 用一整数 x 的对应位表示~
DP方程,i表示选择从1–n中选择 i 个数字,dp[i][n]表示可行解
dp[0][n]=1,表示初始状态.
如x的二进制位为1111。分别表示有a1,a2,a3,a4 ,四个数~
则有 dp[1111]=dp1110]+dp[1101]+dp[1011]+dp[0111]~
#include <cstdio>
#include <cmath>
#include <iostream>
#define lowbit(x) ((x)&(-x))
using namespace std; const int Mod=1e9+;
int N, K, a[];
int b[(<<)+], dp[(<<)+];
int main( )
{
while( scanf("%d", &N)!= EOF ){
int kk[]={};
for( int i=; i<N; ++ i ){
scanf("%d", &a[i]);
b[<<i]=a[i];
}
scanf("%d", &K);
for( int i=; i<K; ++ i ){
scanf("%d", &kk[i]);
}
dp[]=, b[]=;
for( int i=; i<(<<N); ++ i ){
b[i]=b[i-lowbit(i)]+b[lowbit(i)];
if(b[i]==kk[] || b[i]==kk[]){
continue;
}
int temp=;
for( int j=i; j; j-=lowbit(j) ){
temp+=dp[i-lowbit(j)];
while( temp>=Mod )temp-=Mod;
}
dp[i]=temp;
}
printf("%d\n", dp[(<<N)-]);
}
return ;
}
CF 191 总结的更多相关文章
- CF 191 div2
A.数据量很小,直接爆搞. #include <iostream> #include <cstdio> #include <algorithm> #include ...
- codeforces 327 B. Hungry Sequence
题目链接 题目就是让你输出n个数的序列,要保证该序列是递增的,并且第i个数的前面不能保护它的约数,我直接先对前100000的素数打表,然后输出前n个,so easy. //cf 191 B #incl ...
- codeforces 327 A Ciel and Dancing
题目链接 给你一串只有0和1的数字,然后对某一区间的数翻转1次(0变1 1变0),只翻转一次而且不能不翻转,然后让你计算最多可能出现多少个1. 这里要注意很多细节 比如全为1,要求必须翻转,这时候我们 ...
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- cf Round 613
A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...
- 【OpenJudge 191】【POJ 1189】钉子和小球
http://noi.openjudge.cn/ch0405/191/ http://poj.org/problem?id=1189 一开始忘了\(2^{50}\)没超long long差点写高精度Q ...
- ARC下OC对象和CF对象之间的桥接(bridge)
在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...
- [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现
1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...
随机推荐
- Android设置透明、半透明等效果
设置透明效果 大概有三种 1.用android系统的透明效果Java代码 android:background="@android:color/transparent" 例如 设 ...
- Flash图表控件FusionCharts如何在图表中显示标识和图片
在FusionCharts的图表中显示外部商标 使用FusionCharts之后,用户可以在运行时加载需要在图表中显示的外部标识/图片/图像.这个标识可以GIF / JPEG / PNG或SWF文件格 ...
- python中get、post数据
方法一:urllib2 参考:http://www.cnblogs.com/chenzehe/archive/2010/08/30/1812995.html post: #!/usr/bin/pyth ...
- centos下的防火墙配置
1,查看防火墙文件: vim /etc/sysconfig/iptables # Generated by iptables-save v1. :: *filter :INPUT ACCEPT [:] ...
- 使用Apache CXF开发WebServices服务端、客户端
在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = C ...
- web关键词搜索高亮代码
<script type="text/javascript"> /* * 参数说明: * obj: 对象, 要进行高亮显示的html标签节点. * hlWords: 字 ...
- 使用codeblock实现JNI开发-2016.01.31
使用交叉编译工具实现andorid平台下的jni开发,记录codeblock配置过程,方便后续参考. 1 工具版本信息 NDK r8b Code::Blocks 10.05 2 配置过程 使用code ...
- qemu-img convert -c -O qcow2 source.raw aim.qcow2
qemu-img convert -c -O qcow2 source.raw aim.qcow2 qemu-img create -f qcow2 -o preallocation=metadata ...
- css兼容
1.不同浏览器默认边距不同,必须对body自定义:margin:0;padding:0; 2.margin.padding属性值为%时,不是所有浏览器都支持: 3.transparent属性,IE7之 ...
- hdu2067
如果i==j&&j-1>=0时候,f[i][j]=f[i][j-1]; 如果j==0时候,f[i][j]=1; 其他 f[i][j]=f[i-1][j]+f[i][j-1]; # ...