Codeforces Round #277.5 (Div. 2) ABCDF
http://codeforces.com/contest/489
| # | Name | ||
|---|---|---|---|
| A |
standard input/output
1 s, 256 MB |
||
| B |
standard input/output
1 s, 256 MB |
||
| C |
standard input/output
1 s, 256 MB |
||
| D |
standard input/output
1 s, 256 MB |
||
| E |
standard input/output
1 s, 256 MB |
||
| F |
standard input/output
1 s, 256 MB |
ABCD都是水题,F题有点碉,是个记忆化搜索/DP。
代码:
A:
//#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
#define mz(array) memset(array, 0, sizeof(array))
#define mf1(array) memset(array, -1, sizeof(array))
#define minf(array) memset(array, 0x3f, sizeof(array))
#define REP(i,n) for(i=0;i<(n);i++)
#define FOR(i,x,n) for(i=(x);i<=(n);i++)
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define WN(x) printf("%d\n",x);
#define RE freopen("D.in","r",stdin)
#define WE freopen("huzhi.txt","w",stdout)
#define mp make_pair
#define pb push_back
#define pf push_front
#define ppf pop_front
#define ppb pop_back
typedef long long ll;
typedef unsigned long long ull; const double pi=acos(-1.0);
const double eps=1e-; const int maxn=; int n; int ans;
int a[maxn];
int ax[maxn],ay[maxn]; ll farm(){
int i,j,k;
ll re=;
ans=;
FOR(i,,n-){
k=i;
FOR(j,i+,n-){
if(a[j]<a[k]){
k=j;
}
}
if(k!=i){
ax[ans]=i;
ay[ans]=k;
ans++;
swap(a[k],a[i]);
}
}
return re;
} int main(){
int i;
scanf("%d",&n);
REP(i,n)RD(a[i]);
farm();
WN(ans);
REP(i,ans){
printf("%d %d\n",ax[i],ay[i]);
}
return ;
}
B:
//#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
#define mz(array) memset(array, 0, sizeof(array))
#define mf1(array) memset(array, -1, sizeof(array))
#define minf(array) memset(array, 0x3f, sizeof(array))
#define REP(i,n) for(i=0;i<(n);i++)
#define FOR(i,x,n) for(i=(x);i<=(n);i++)
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define WN(x) printf("%d\n",x);
#define RE freopen("D.in","r",stdin)
#define WE freopen("huzhi.txt","w",stdout)
#define mp make_pair
#define pb push_back
#define pf push_front
#define ppf pop_front
#define ppb pop_back
typedef long long ll;
typedef unsigned long long ull; const double pi=acos(-1.0);
const double eps=1e-; const int maxn=;
const int maxm=; int n,m; //struct Edge{
// int v,next;
//}e[maxm];
//int head[maxn],en;
//
//inline void add(const int &x,const int &y){
// e[en].v=y;
// e[en].next=head[x];
// head[x]=en++;
//} int a[maxn],b[maxn]; int farm(){
sort(a,a+n);
sort(b,b+m);
int i,j;
j=;
int ans=;
REP(i,n){
while(j<m && b[j]<a[i]-)j++;
if(j==m)break;
if(abs(a[i]-b[j])<=){
j++;
ans++;
}
}
return ans;
} int main(){
int i;
RD(n);
REP(i,n)RD(a[i]);
RD(m);
REP(i,m)RD(b[i]);
WN(farm());
return ;
}
C:
//#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
#define mz(array) memset(array, 0, sizeof(array))
#define mf1(array) memset(array, -1, sizeof(array))
#define minf(array) memset(array, 0x3f, sizeof(array))
#define REP(i,n) for(i=0;i<(n);i++)
#define FOR(i,x,n) for(i=(x);i<=(n);i++)
#define FORD(i,x,y) for(i=(x);i>=(y);i--)
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define WN(x) printf("%d\n",x);
#define RE freopen("D.in","r",stdin)
#define WE freopen("huzhi.txt","w",stdout)
#define mp make_pair
#define pb push_back
#define pf push_front
#define ppf pop_front
#define ppb pop_back
typedef long long ll;
typedef unsigned long long ull; const double pi=acos(-1.0);
const double eps=1e-; const int maxn=;
const int maxm=; int m,s; //struct Edge{
// int v,next;
//}e[maxm];
//int head[maxn],en;
//
//inline void add(const int &x,const int &y){
// e[en].v=y;
// e[en].next=head[x];
// head[x]=en++;
//} char s1[],s2[]; bool farm(){
if(m> && s==)return ;
if(s > m*)return ;
if(m== && s==){
strcpy(s1,"");
strcpy(s2,"");
return ;
}
int t=s;
s1[]='';
t--;
int i;
FORD(i,m-,){
if(t){
int q=min(,t);
s1[i]=''+q;
t-=q;
}else s1[i]='';
}
if(t)s1[]+=t; t=s;
FOR(i,,m-){
if(t){
int q=min(,t);
s2[i]=''+q;
t-=q;
}else s2[i]='';
}
return ;
} int main(){
RD2(m,s);
if(farm())
printf("%s %s\n",s1,s2);
else puts("-1 -1");
return ;
}
D:
//#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
#define mz(array) memset(array, 0, sizeof(array))
#define mf1(array) memset(array, -1, sizeof(array))
#define minf(array) memset(array, 0x3f, sizeof(array))
#define REP(i,n) for(i=0;i<(n);i++)
#define FOR(i,x,n) for(i=(x);i<=(n);i++)
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define WN(x) printf("%d\n",x);
#define RE freopen("D.in","r",stdin)
#define WE freopen("huzhi.txt","w",stdout)
#define mp make_pair
#define pb push_back
#define pf push_front
#define ppf pop_front
#define ppb pop_back
typedef long long ll;
typedef unsigned long long ull; const double pi=acos(-1.0);
const double eps=1e-; const int maxn=;
const int maxm=; int n,m; struct Edge{
int v,next;
}e[maxm];
int head[maxn],en; inline void add(const int &x,const int &y){
e[en].v=y;
e[en].next=head[x];
head[x]=en++;
} ll ans; int a[maxn][maxn];
int gf; void dfs(int x,int y){
if(y==){
a[gf][x]++;
return;
}
int i;
for(i=head[x]; i!=-; i=e[i].next){
if(e[i].v!=gf)dfs(e[i].v, y-);
}
} void farm(){
int i,j;
ans=;
mz(a);
FOR(i,,n){
gf=i;
dfs(i,);
}
FOR(i,,n){
FOR(j,,n){
if(i!=j){
if(a[i][j]>=){
ans+= a[i][j]*(a[i][j]-)/ ;
}
}
}
}
} int main(){
int i,j;
int x,y;
RD2(n,m);
en=;
mf1(head);
REP(i,m){
RD2(x,y);
add(x,y);
}
farm();
printf("%I64d",ans);
return ;
}
F:
//#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
#define mz(array) memset(array, 0, sizeof(array))
#define mf1(array) memset(array, -1, sizeof(array))
#define minf(array) memset(array, 0x3f, sizeof(array))
#define REP(i,n) for(i=0;i<(n);i++)
#define FOR(i,x,n) for(i=(x);i<=(n);i++)
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define WN(x) printf("%d\n",x);
#define RE freopen("D.in","r",stdin)
#define WE freopen("huzhi.txt","w",stdout)
#define mp make_pair
#define pb push_back
#define pf push_front
#define ppf pop_front
#define ppb pop_back
typedef long long ll;
typedef unsigned long long ull; const double pi=acos(-1.0);
const double eps=1e-; const int maxn=; int n,m,mod; int a[maxn][maxn]; int r[maxn],c[maxn]; ll f[maxn][maxn]; inline ll gank(const int &w1, const int &w0){
//printf("%d,%d\n",w1,w0);
if(f[w1][w0] != -)return f[w1][w0];
ll re=;
if(w0>){
re+=w0*(w0-)/ * gank(w1+,w0-);
re%=mod;
}
if(w0> && w1>){
re+=w0*w1 * gank(w1,w0-);
re%=mod;
}
if(w1>){
re+=w1*(w1-)/ * gank(w1-,w0);
re%=mod;
}
f[w1][w0]=re;
return re;
} ll farm(){
int i,j,k;
// REP(i,n){
// REP(j,n)printf("%d ",a[i][j]);
// puts("");
// }
mz(r);
mz(c);
REP(i,m)REP(j,n){
if(a[i][j]){
r[i]++;
c[j]++;
}
}
REP(i,n){
if(r[i]> || c[i]>)return ;
}
REP(i,m) if(r[i]!=)return ;
int ww[]={};
REP(i,n){
ww[c[i]]++;
}
ll ans=;
mf1(f);
f[][]=;
ans = gank(ww[], ww[]);
return ans;
} int main(){
char c;
int i,j;
RD3(n,m,mod);
mf1(a);
REP(i,m){
REP(j,n){
do{c=getchar();}while(c!='' && c!='');
a[i][j] = c-'';
}
}
printf("%I64d\n",farm());
return ;
}
Codeforces Round #277.5 (Div. 2) ABCDF的更多相关文章
- Codeforces Round #277.5 (Div. 2)
题目链接:http://codeforces.com/contest/489 A:SwapSort In this problem your goal is to sort an array cons ...
- Codeforces Round #277.5 (Div. 2) --E. Hiking (01分数规划)
http://codeforces.com/contest/489/problem/E E. Hiking time limit per test 1 second memory limit per ...
- Codeforces Round #277.5 (Div. 2)-D. Unbearable Controversy of Being
http://codeforces.com/problemset/problem/489/D D. Unbearable Controversy of Being time limit per tes ...
- Codeforces Round #277.5 (Div. 2)-C. Given Length and Sum of Digits...
http://codeforces.com/problemset/problem/489/C C. Given Length and Sum of Digits... time limit per t ...
- Codeforces Round #277.5 (Div. 2)-B. BerSU Ball
http://codeforces.com/problemset/problem/489/B B. BerSU Ball time limit per test 1 second memory lim ...
- Codeforces Round #277.5 (Div. 2)-A. SwapSort
http://codeforces.com/problemset/problem/489/A A. SwapSort time limit per test 1 second memory limit ...
- Codeforces Round #277.5 (Div. 2) A,B,C,D,E,F题解
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud A. SwapSort time limit per test 1 seco ...
- Codeforces Round #277.5 (Div. 2)-D
题意:求该死的菱形数目.直接枚举两端的点.平均意义每一个点连接20条边,用邻接表暴力计算中间节点数目,那么中间节点任选两个与两端可组成的菱形数目有r*(r-1)/2. 代码: #include< ...
- Codeforces Round #277.5 (Div. 2)B——BerSU Ball
B. BerSU Ball time limit per test 1 second memory limit per test 256 megabytes input standard input ...
随机推荐
- Node.js 命令行程序开发教程
nodejs开发命令行程序非常方便,具体操作方式查看下面几篇文章 http://www.ruanyifeng.com/blog/2015/05/command-line-with-node.html ...
- js快速判断IE浏览器(兼容IE10与IE11)
在很多时候,我们一般采用navigator.userAgent和正则表达来判断IE浏览器版本,下面介绍用IE浏览器中不同特性来判断IE浏览器 1 判断IE浏览器与非IE 浏览器 IE浏览器与非IE ...
- Centos6.5下设置静态IP
1.编辑网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0 设置网卡eth0的IPV4信息,需要注意的是,设置的IPADDR需要和局域网中其他机器处 ...
- 1、策略模式(Strategy)
//抽象接口 class ReplaceAlgorithm { public: ; }; //三种具体的替换算法 class LRU_ReplaceAlgorithm : public Replace ...
- 谈谈Java中的ThreadLocal
什么是ThreadLocal ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本.通过ThreadLocal可以将对象的 ...
- JS控制div跳转到指定的位置的解决方案总结
总结一下自己在写这个需求遇到的问题,相信大家应该是经常遇到的.即要求滚轮滚动到指定的位置.先看下基本的解决方案. 1.给链接a加个#的方式来实现跳转.(锚点方法)这里直接贴下代码: html页面: & ...
- sqlite常用查询
做的小工具用到了sqlite,在查询上较sqlserver还是稍有差异,将常用操作汇总一下,慢慢收集和整理. --查询版本SELECT sqlite_version() AS 'SQLite Vers ...
- 【C#】【Thread】BackgroundWorker的使用
BackgroundWorker 可以用于启动后台线程. 主要的事件及参数: 1.DoWork --当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递Do ...
- Android的setVisibility(View.GONE)无效的问题及原因分析(转)
出现这种情况很可能是因为设置了animation,并且调用了setFillAfter(true),这就会导致setVisibility无效,只需要调用一下clearAnimation()方法或者去掉s ...
- mysql的sql_mode模式
在oracle或sqlserver中,如果某个表的字段设置成not null,insert或update时不给这个字段赋值,比如下面这样: 表t_test(id,name)中id,name都不允许为空 ...