nenu contest3 The 5th Zhejiang Provincial Collegiate Programming Contest
ZOJ Problem Set - 2965 Accurately Say "CocaCola"! http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2965
打表。求含有7或者是7的倍数的数。题目输入p,输出第一个连续出现p个满足条件的头。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=;
bool vis[M];
bool isgood(int x){
while(x){
if(x%==) return true;
x/=;
}
return false;
}
int ans[M];
int main(){
mt(vis,);
for(int i=;i<M;i++){
if(isgood(i)||!(i%)){
vis[i]=true;
}
}
for(int i=;i<=;i++){
ans[i]=M;
}
int s=,t=;
for(int i=;i<M;i++){
if(!vis[i]){
s=t=i;
}
else{
t++;
ans[t-s]=min(ans[t-s],s+);
}
}
int n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return ;
}
ZOJ Problem Set - 2966 Build The Electric System http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2966
最小生成树 prim
#include<cstdio>
const int inf=0x3f3f3f3f;
class Prim { ///最小生成树(无向图)o(MV^2)要保证图连通
typedef int typec;///边权的类型
static const int MV=;///点的个数
int n,i,j,k,pre[MV];///pre[]返回树的构造,用父结点表示,根节点(第一个)pre值为-1
bool vis[MV];
typec mat[MV][MV],dist[MV],res;
public:
void init(int tn) { ///传入点数,点下标0开始
n=tn;
for(i=; i<n; i++)
for(j=; j<n; j++)
mat[i][j]=i==j?:inf;///不相邻点边权inf
}
void add(int u,int v,typec w) {
if(mat[u][v]>w) {
mat[u][v]=w;
mat[v][u]=w;
}
}
typec solve() { ///返回最小生成树的长度
for(res=i=; i<n; i++) {
dist[i]=inf;
vis[i]=false;
pre[i]=-;
}
for(dist[j=]=; j<n; j++) {
for(k=-,i=; i<n; i++) {
if(!vis[i]&&(k==-||dist[i]<dist[k])) {
k=i;
}
}
for(vis[k]=true,res+=dist[k],i=; i<n; i++) {
if(!vis[i]&&mat[k][i]<dist[i]) {
dist[i]=mat[pre[i]=k][i];
}
}
}
return res;
}
}gx;
int main(){
int t,n,m,u,v,w;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
gx.init(n);
while(m--){
scanf("%d%d%d",&u,&v,&w);
gx.add(u,v,w);
}
printf("%d\n",gx.solve());
}
return ;
}
Kruskal
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int inf=0x3f3f3f3f;
class Kruskal { ///最小生成树(无向图)o(ME*logME)
typedef int typec;///边权的类型
static const int ME=*;///边的个数
static const int MV=;///点的个数
class UnionFindSet { ///并查集
int par[MV];
public:
void init() {
mt(par,-);
}
int getroot(int x) {
int i=x,j=x,temp;
while(par[i]>=) i=par[i];
while(j!=i) {
temp=par[j];
par[j]=i;
j=temp;
}
return i;
}
bool unite(int x,int y) {
int p=getroot(x);
int q=getroot(y);
if(p==q)return false;
if(par[p]>par[q]) {
par[q]+=par[p];
par[p]=q;
} else {
par[p]+=par[q];
par[q]=p;
}
return true;
}
} f;
struct E {
int u,v;
typec w;
friend bool operator < (E a,E b) {
return a.w<b.w;
}
} e[ME];
int le,num,n;
typec res;
public:
void init(int tn){///传入点的个数
n=tn;
le=res=;
f.init();
num=;
}
void add(int u,int v,typec w) {
e[le].u=u;
e[le].v=v;
e[le].w=w;
le++;
}
typec solve(){///返回-1不连通
sort(e,e+le);
for(int i=; i<le&&num<n; i++) {
if(f.unite(e[i].u,e[i].v)) {
num++;
res+=e[i].w;
}
}
if(num<n) res=-;
return res;
}
}gx;
int main(){
int t,n,m,u,v,w;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
gx.init(n);
while(m--){
scanf("%d%d%d",&u,&v,&w);
gx.add(u,v,w);
}
printf("%d\n",gx.solve());
}
return ;
}
ZOJ Problem Set - 2969 Easy Task http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1968
给式子的系数,求导完输出系数,如果全为零输出零,否则从第一个不为零的开始输出。
#include<cstdio>
#include<algorithm>
using namespace std;
const int M=;
int a[M];
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=n;i>=;i--){
scanf("%d",&a[i]);
}
int id=-;
for(int i=n;i>=;i--){
a[i]*=i;
if(a[i]){
id=max(id,i);
}
}
if(id==-){
puts("");
continue;
}
for(int i=id;i>=;i--){
if(i!=id) printf(" ");
printf("%d",a[i]);
}
puts("");
}
return ;
}
ZOJ Problem Set - 2970 Faster, Higher, Stronger http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1969
f就找最小,其他找最大。
#include<cstdio>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int main(){
int t,n,a;
scanf("%d",&t);
char op[];
while(t--){
scanf("%s%d",op,&n);
bool sma=false;
int ans=-inf;
if(op[]=='F'){
sma=true;
ans=inf;
}
for(int i=;i<n;i++){
scanf("%d",&a);
if(sma){
ans=min(ans,a);
}
else{
ans=max(ans,a);
}
}
printf("%d\n",ans);
}
return ;
}
ZOJ Problem Set - 2971 Give Me the Number http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1970
3个3个处理,然后加起来。
#include<cstdio>
#include<cstring>
const int M=;
char a[M*M],b[M][M];
int ans[M],val[M];
char gewei[M][M]={"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
char shiwei[M][M]={"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
char jishi[M][M]={"twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
int main(){
int t;
scanf("%d",&t);
getchar();
while(t--){
gets(a);
int cnt=,lb=;
for(int i=;a[i];i++){
if(a[i]==' '){
b[cnt][lb]=;
cnt++;
lb=;
}
else{
b[cnt][lb++]=a[i];
}
}
b[cnt][lb]=;
cnt++;
for(int i=;i<=;i++){
ans[i]=;
val[i]=;
}
int sta=;
for(int i=cnt-;i>=;i--){
if(!strcmp(b[i],"and")) continue;
int now=-;
for(int j=;j<;j++){
if(!strcmp(b[i],gewei[j])){
now=j;
break;
}
}
if(now==-){
for(int j=;j<;j++){
if(!strcmp(b[i],shiwei[j])){
now=j+;
break;
}
}
}
if(now==-){
for(int j=;j<;j++){
if(!strcmp(b[i],jishi[j])){
now=(j+)*;
break;
}
}
}
if(~now){
ans[sta]+=now*val[sta];
}
else{
if(!strcmp(b[i],"hundred")){
val[sta]=;
continue;
}
if(!strcmp(b[i],"thousand")){
sta=;
continue;
}
if(!strcmp(b[i],"million")){
sta=;
continue;
}
}
}
int sum=;
for(int i=;i<=;i++){
sum*=;
sum+=ans[i];
}
printf("%d\n",sum);
}
return ;
}
ZOJ Problem Set - 2972 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1971
dp i j 表示第 i 个位置 还剩 j 的体力 能获得的最小时间,有三种方式转移,根据题目输入来转移。用t1就要浪费f1 用t2不变, 用t3还能挣点体力,注意体力上限m
#include<cstdio>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
const int M=;
struct G{
int T1,T2,T3,F1,F2;
}sta[M];
int dp[M][M];
int main(){
int t,n,m;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d%d%d%d%d",&sta[i].T1,&sta[i].T2,&sta[i].T3,&sta[i].F1,&sta[i].F2);
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
dp[i][j]=inf;
}
}
dp[][m]=;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(j>=sta[i+].F1){
dp[i+][j-sta[i+].F1]=min(dp[i+][j-sta[i+].F1],dp[i][j]+sta[i+].T1);
}
dp[i+][j]=min(dp[i+][j],dp[i][j]+sta[i+].T2);
dp[i+][min(m,j+sta[i+].F2)]=min(dp[i+][min(m,j+sta[i+].F2)],dp[i][j]+sta[i+].T3);
}
}
int ans=inf;
for(int j=;j<=m;j++){
ans=min(ans,dp[n][j]);
}
printf("%d\n",ans);
}
return ;
}
ZOJ Problem Set - 2975 Kinds of Fuwas http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1974
求四个角相等的矩形个数。n^3的做法。枚举两列n^2,on枚举这两列有几对一样的,然后他们可以组成C n选2 种矩形。
#include<cstdio>
typedef long long LL;
const int M=;
char a[M][M];
char cp[]={'B','J','H','Y','N'};
int main(){
int t,n,m;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%s",a[i]);
}
LL ans=;
for(int k=;k<;k++){
for(int x=;x<m;x++){
for(int y=x+;y<m;y++){
LL sum=;
for(int i=;i<n;i++){
if(cp[k]==a[i][x]&&cp[k]==a[i][y]){
sum++;
}
}
ans+=sum*(sum-)/;
}
}
}
printf("%lld\n",ans);
}
return ;
}
ZOJ Problem Set - 2976 Light Bulbs http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1975
因为是格点,整点,所以200*200枚举点,对每个点枚举灯算总和。4*10^6*case
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int M=;
struct point3 {
double x,y,z,I;
} p[M],now;
double Distance(point3 p1,point3 p2) {
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)+(p1.z-p2.z)*(p1.z-p2.z));
}
int main() {
int t,n;
scanf("%d",&t);
while(t--) {
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lf%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z,&p[i].I);
}
double ans=;
for(int x=-;x<=;x++){
for(int y=-;y<=;y++){
now.x=x;
now.y=y;
now.z=;
double sum=;
for(int i=;i<n;i++){
double dist=Distance(now,p[i]);
sum+=p[i].I*p[i].z/dist/dist/dist;
}
ans=max(ans,sum);
}
}
printf("%.2f\n",ans);
}
return ;
}
end
nenu contest3 The 5th Zhejiang Provincial Collegiate Programming Contest的更多相关文章
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest May Day Holiday
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5500 The 12th Zhejiang Provincial ...
- 140 - The 12th Zhejiang Provincial Collegiate Programming Contest(第二部分)
Floor Function Time Limit: 10 Seconds Memory Limit: 65536 KB a, b, c and d are all positive int ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Capture the Flag
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5503 The 12th Zhejiang Provincial ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Team Formation
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5494 The 12th Zhejiang Provincial ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Beauty of Array
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5496 The 12th Zhejiang Provincial ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Lunch Time
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5499 The 12th Zhejiang Provincial ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Convert QWERTY to Dvorak
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5502 The 12th Zhejiang Provincial ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Demacia of the Ancients
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5504 The 12th Zhejiang Provincial ...
- zjuoj The 12th Zhejiang Provincial Collegiate Programming Contest Ace of Aces
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5493 The 12th Zhejiang Provincial ...
随机推荐
- .NET使用QRCodeEncoder生成二维码
ThoughtWorks.QRCode.dll版本 1.0.2774.19990 代码如下: /// <summary> /// 生成二维码图片 /// </summary> ...
- .NET XML文件增删改查
查询 采用的是DataSet 的 ReadXML方法. DataSet ds = new System.Data.DataSet(); ds.ReadXml("bdc.xml"); ...
- 开始写自己的iOS技术博客了
2015-09-26 中秋节前夕,开始写自己的iOS开发相关的技术博客,还请广大专业的人士批评指教!欢迎纠错和交流! 在来到北京的第二家公司艾亿新融资本管理的子公司——资配易.由于基本没有加班,也算有 ...
- linux交叉编译裁剪内核记录
刚开始学习嵌入式内核编译,因为要修改内核的默认配置,因此这里把自己的学习记录写下来,方便以后查阅,也给别人一个参考,有什么写的不对的或者更好的方法,请指正~ 开发板有usb从口,现在想要让开发板作为一 ...
- HDU 5093 Battle ships(二分图最大匹配)
题意:一个m行n列的图由#.*.o三种符号组成,分别代表冰山.海域.浮冰,问最多可放的炮舰数(要求满足以下条件) 1.炮舰只可放在海域处 2.两个炮舰不能放在同一行或同一列(除非中间隔着一个或多个冰山 ...
- sicily 1027 MJ, Nowhere to Hide 字符串匹配与排序
1027. MJ, Nowhere to Hide Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description On BBS, th ...
- Linux 静态库和动态库 使用说明
Linux下程序运行中,有两种库,静态库和动态库. 静态库:名字一般为libxxx.a,编译时会整合到可执行程序中,优点是运行时不需要外部函数库支持,缺点是编译后程序较大,一旦静态库改 ...
- 使用DriverManager获取数据库连接的一个小改进
由于使用DriverManager获取数据库连接时,由于DriverManager实现类中有一段静态代码块,可以直接注册驱动,且可以同时管理多个驱动程序 所以当换数据库连接时需要指定不同的数据库,那么 ...
- 《NFS文件共享服务的搭建》RHEL
首先要清楚一点:NFS服务的共享是建立在linux和linux之间的. 配置任何服务之前我们要做的2件事: iptables -F setenforce 0 NFS服务内核防火墙影响不大,主要 ...
- Windows Server 2008 R2(x64) IIS7+PHP5(FastCGI)环境搭建
相关软件下载: 1.PHP下载地址: http://windows.php.net/downloads/releases/php-5.4.4-nts-Win32-VC9-x86.zip 如果是win2 ...