2023/4/4总结

Posted lxh0113

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023/4/4总结相关的知识,希望对你有一定的参考价值。

题解:

Problem ​​​​​​ A - Codeforces

1.这道题目我们需要判断。

2.如果是奇数,亦或出来的总值不为0,那么每一个数字再去亦或任何一个数字,都不会为0。

3.如果是偶数并且亦或总值为0,那么我们亦或的总值不满足条件,我们需要构造一个数字,这个数字不会影响它们最终为0。我构造的数字是与上所有的值这个是不会改变的。

4.如果是其他情况就是最后亦或的总值。

#include<stdio.h>
#define N 1010
int a[N];
int main()

	int t,n,i,sum,k;
	scanf("%d",&t);
	while(t--)
	
		sum=0;
		k=0;
		scanf("%d",&n);
		for(i=0;i<n;i++)
		
			scanf("%d",&a[i]);
			sum^=a[i];
			k=k|a[i];
		
		if(sum!=0&&n%2==0)
		
			puts("-1");
		
		else if(sum==0&&n%2==0)
		
			printf("%d\\n",k);
		
		else printf("%d\\n",sum);
	
	return 0;

Problem - B - Codeforces

1.这个题目 其实就是出现得最小得字母,把它放在前面。因为字典序最小嘛。

#include<stdio.h>
#include<math.h>
#include<string.h>
#define N 100010
char a[N],b[N];
int main()
  
    int t,c,k,n,i;
    scanf("%d",&t);
    while(t--)
    
        c='z';
        k=-1;
        scanf("%d",&n);
        scanf("%s",a);
        for(i=strlen(a)-1;i>=1;i--)
        
            if(a[i]<c)
            
                c=a[i];
                k=i;
            
        
        if(k>=1&&c<=a[0])
        
            printf("%c",c);
            strcpy(b,a+k+1);
            a[k]=0;
            printf("%s",a);
            printf("%s",b);
        
        else printf("%s",a);
        printf("\\n");
    

线段树OR树状数组 - Virtual Judge (vjudge.net)

1.这道题目我刚开始的想法是,排序,去重,离散化,然后从后面的海报开始贴起来,往前推,如果这个节点已经贴过就不贴,因为在前面的肯定会被覆盖。

2.然后好不容易写出来,TLE了(按理说应该不会这样的)。

3. 然后老老实实从前面开始贴,计数。

4.离散化有一点需要注意,如果数据是

1 10

1 3

6 10

这是三个海报,但是如果离散化,就会变成2个海报。导致出错,我看了别人的博客,建议是初始值的时候右边坐标全部+1,访问的时候离散化的值减去1即可。

代码如下:

#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#define N 10005
#define maxn 20000

using namespace std;

int T,n,cnt,num,ans;
int l[N],r[N];
bool t[maxn];

int mark[4*maxn];
struct node

    int num,id,p;
a[2*N];
bool cmp(node x,node y)

    if (x.num!=y.num) return x.num<y.num;
    else return x.id<y.id;

void change(int v,int l,int r,int x,int y,int k)

    if (l==x&&r==y)
	
        mark[v]=k;
        return;
    
    if (mark[v]>0)
	
        mark[v<<1]=mark[v];
        mark[1+(v<<1)]=mark[v];
        mark[v]=0;
    
    int mid=(l+r)>>1;
    if (mid>=y) change(v<<1,l,mid,x,y,k); 
	else if (x>mid) change(1+(v<<1),mid+1,r,x,y,k); 
	else
	
        change(v<<1,l,mid,x,mid,k);
        change(1+(v<<1),mid+1,r,mid+1,y,k);
    

void find(int v,int l,int r)

    int mid=(l+r)>>1;
    if (l==r)
	
        if (!t[mark[v]])
		
            t[mark[v]]=true;
            ans++;
        
        return;
    
    if (mark[v]>0)
	
        mark[v<<1]=mark[v];
        mark[1+(v<<1)]=mark[v];
        mark[v]=0;
    
    find(v<<1,l,mid);
    find(1+(v<<1),mid+1,r);

 int main()
 
 	int i,s;
    scanf("%d",&T);
    while (T--)
	
        memset(mark,0,sizeof(mark));
        memset(t,0,sizeof(t));
        cnt=0;
        scanf("%d",&n);
        for (i=1;i<=n;i++)
		
            scanf("%d%d",&l[i],&r[i]);
            a[++cnt].num=l[i]; a[cnt].id=i; a[cnt].p=cnt;
            a[++cnt].num=r[i]; a[cnt].id=i; a[cnt].p=cnt;
        
        sort(a+1,a+1+cnt,cmp);
        num=1;
        for (i=2;i<=cnt;i++)
		
            s=a[i-1].id;
            if (a[i-1].p%2) l[s]=num;
            else r[s]=num;
            if (a[i].num!=a[i-1].num) num++;
       	 
        s=a[cnt].id;
        if (a[cnt].p%2) l[s]=num;
    	else r[s]=num;
        for (i=1;i<=n;i++)
        change(1,1,num,l[i],r[i],i);
       	ans=0;
       	find(1,1,num);
       	printf("%d\\n",ans);
    
    return 0;

JavaFX

学习了javafx的scene builder一点知识

stage表示窗口

scene表示场景

然后还有各种按钮之类的。

id表示名称

on Action表示行为(这俩个我觉得是很重要的点)

但是做出来的界面,不能结束进程。因为不会在controller类之间互转。然后其他功能,比如提交没写,还有就是忘记密码啥的也没搞,其实就是一个界面,也还没完善。

然后就是不小心把登录和注册写反了。(一定要注意文件路径,吃了大亏)

 

 

 

 

打算接下来学习mysql和maven。

Python学习总结

Python 总结

以上是关于2023/4/4总结的主要内容,如果未能解决你的问题,请参考以下文章

每日随笔2023/4/4

2023.4.4心情随笔

Java数据结构和算法总结-字符串及高频面试题算法

Java数据结构和算法总结-冒泡排序选择排序插入排序算法分析

常见数据结构与算法整理总结(上)

常见数据结构与算法整理总结(上)