欢乐纪中某B组赛【2018.12.15】

版权声明:原创,未经作者允许禁止转载 https://blog.csdn.net/Mr_wuyongcong/article/details/85014360

前言

题目还好,都是装作很难,其实都不考高深算法。
某位A组dalao来水了个AK。
而且题号都很诡异


成绩

R a n k Rank 是有算别人的

R a n k Rank P e r s o n Person S c o r e Score A A B B C C
3 3 2017 m y s e l f 2017myself 220 220 100 100 100 100 20 20
6 6 2017 x j q 2017xjq 200 200 100 100 100 100 0 0
6 6 2017 x x y 2017xxy 200 200 100 100 100 100 0 0
14 14 2017 l r z 2017lrz 140 140 100 100 40 40 0 0
14 14 2017 h z b 2017hzb 140 140 100 100 40 40 0 0
20 20 2017 z y c 2017zyc 120 120 100 100 0 0 20 20
20 20 2017 h j q 2017hjq 120 120 100 100 20 20 0 0
32 32 2017 l w 2017lw 80 80 80 80 0 0 0 0

正题


T 1 : j z o j 100046 T1:jzoj100046- 收集卡片【暴力】

快乐签到题
博客链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/85014087


T 2 : j z o j 100047 T2:jzoj100047- 基因变异【位运算 , b f s ,bfs

竟然也有位运算快乐题
博客链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/85014177


T 3 : j z o j 100044 a b c d T3:jzoj100044-abcd 【多重背包 , , 二进制压缩 , d p ,dp

进击の多重背包
博客链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/85014240


s o m e   o f   c o d e some\ of\ code


T1 暴力

#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 500010
#define Z 60
using namespace std;
int n,ans,num,k;
char c,a[N];
bool v[Z];
int p(char x)
{
	if(x>='a') return x-'a'+27;
	else return x-'A'+1;
}
int main()
{
	freopen("data.in","r",stdin);
	freopen("data.out","w",stdout);
	scanf("%d",&n);c=getchar();
	for(int i=1;i<=n;i++)
	{
	  	a[i]=getchar();
	  	if(!v[p(a[i])]) num++;
		v[p(a[i])]=true;
	}
	ans=2147483647;
	for(int i=1;i<=n;i++)
	{
	  memset(v,0,sizeof(v));k=0;
	  for(int j=i;j<=n;j++)
	  {
	  	  if(!v[p(a[j])]) k++;
	  	  v[p(a[j])]=true;
	  	  if(k==num)
	  	  {
	  	      ans=min(ans,j-i+1);
	  	      break;
	  	  }
	  }
	}
	printf("%d",ans);
}

T1 随机数据

#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
	freopen("data.in","w",stdout);
	srand(time(0));
	printf("500000\n");
	for(int i=1;i<=500000;i++)
	{
		if(rand()%2) printf("%c",'A'+rand()%26);
		else printf("%c",'a'+rand()%26);
	}
}

T1 对拍

#include<windows.h>
#include<cstdio>
using namespace std;
int main()
{
	while(1)
	{
		system("data.exe");
		system("BL.exe");
		system("MPY.exe");
		if(system("fc data.out data.ans")) return 0;
	}
}

T2 随机数据

#include<cstdio>
#include<cstdlib>
#include<ctime>
#define random(x) rand()*rand()%x
using namespace std;
int main()
{
	srand(time(0));
	freopen("data.in","w",stdout);
	printf("20 100000\n");
	for(int i=1;i<=20;i++)
	  printf("%d ",random(1000001));
	printf("\n");
	for(int i=1;i<=100000;i++)
	  printf("%d %d\n",random(1000001),random(1000001));
}

T3 暴力

#include<cstdio>
#include<algorithm>
using namespace std;
int n,ans,a[210],b[210],c[210],d[210];
void dfs(int dep,int sc,int sum)
{
	if(dep>n&&sc==0)
		ans=max(ans,sum);
	if(dep>n) return;
	for(int i=a[dep];i<=b[dep];i++)
	  dfs(dep+1,sc+i*c[dep],sum+i*d[dep]);
}
int main()
{
	freopen("data.in","r",stdin);
	freopen("data.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	  scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
	ans=-2147483647;
	dfs(1,0,0);
	printf("%d",ans);
}

T3 随机数据

#include<cstdio>
#include<cstdlib>
#include<ctime>
#define random(x) rand()*rand()%x
using namespace std;
int main()
{
	srand(time(0));
	freopen("data.in","w",stdout);
	printf("200\n");
	for(int i=1;i<=200;i++)
	  printf("%d %d %d %d\n",-25,25,1+random(20),1+random(100000));
}

T3 对拍

#include<windows.h>
#include<cstdio>
using namespace std;
int main()
{
	while(1)
	{
		system("data.exe");
		system("BL.exe");
		system("abcd.exe");
		if(system("fc data.out data.ans")) return 0;
	}
}

T3 60分code

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
%:pragma GCC optimize("-fgcse")
%:pragma GCC optimize("-fgcse-lm")
%:pragma GCC optimize("-fipa-sra")
%:pragma GCC optimize("-ftree-pre")
%:pragma GCC optimize("-ftree-vrp")
%:pragma GCC optimize("-fpeephole2")
%:pragma GCC optimize("-ffast-math")
%:pragma GCC optimize("-fsched-spec")
%:pragma GCC optimize("unroll-loops")
%:pragma GCC optimize("-falign-jumps")
%:pragma GCC optimize("-falign-loops")
%:pragma GCC optimize("-falign-labels")
%:pragma GCC optimize("-fdevirtualize")
%:pragma GCC optimize("-fcaller-saves")
%:pragma GCC optimize("-fcrossjumping")
%:pragma GCC optimize("-fthread-jumps")
%:pragma GCC optimize("-funroll-loops")
%:pragma GCC optimize("-fwhole-program")
%:pragma GCC optimize("-freorder-blocks")
%:pragma GCC optimize("-fschedule-insns")
%:pragma GCC optimize("inline-functions")
%:pragma GCC optimize("-ftree-tail-merge")
%:pragma GCC optimize("-fschedule-insns2")
%:pragma GCC optimize("-fstrict-aliasing")
%:pragma GCC optimize("-fstrict-overflow")
%:pragma GCC optimize("-falign-functions")
%:pragma GCC optimize("-fcse-skip-blocks")
%:pragma GCC optimize("-fcse-follow-jumps")
%:pragma GCC optimize("-fsched-interblock")
%:pragma GCC optimize("-fpartial-inlining")
%:pragma GCC optimize("no-stack-protector")
%:pragma GCC optimize("-freorder-functions")
%:pragma GCC optimize("-findirect-inlining")
%:pragma GCC optimize("-fhoist-adjacent-loads")
%:pragma GCC optimize("-frerun-cse-after-loop")
%:pragma GCC optimize("inline-small-functions")
%:pragma GCC optimize("-finline-small-functions")
%:pragma GCC optimize("-ftree-switch-conversion")
%:pragma GCC optimize("-foptimize-sibling-calls")
%:pragma GCC optimize("-fexpensive-optimizations")
%:pragma GCC optimize("-funsafe-loop-optimizations")
%:pragma GCC optimize("inline-functions-called-once")
%:pragma GCC optimize("-fdelete-null-pointer-checks")
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int ac=100000,N=260;
int n,a[N],b[N],c[N],d[N],f[2][ac*2+10];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	  scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
	for(int j=0;j<=2*ac;j++)
	  f[0][j]=-2147483647/2;
	f[0][ac]=0;
	for(int i=1;i<=n;i++)
	{
	  for(int j=0;j<=2*ac;j++)
	  	f[i&1][j]=-2147483647/2;
	  for(int j=0;j<=2*ac;j++)
	    for(int k=a[i];k<=b[i];k++)
	      if(j+k*c[i]<=2*ac&&j+k*c[i]>=0)
	      {
	  		  f[i&1][j+k*c[i]]=max(f[i&1][j+k*c[i]],f[(i-1)&1][j]+k*d[i]);
	  	  }
	}
	printf("%d",f[n&1][ac]);
}

尾声

之前第3题拿到过60分,结果又交了一个20分的QAQ。

猜你喜欢

转载自blog.csdn.net/Mr_wuyongcong/article/details/85014360
今日推荐