NOIP 2023 游记
day -6(11.11)
双十一打模拟赛。
挂分。
电脑抽搐,并且旁边两个大神一起压制我。
day -2(11.15)
考完期中了,数学最后一题超纲太离谱了吧。
CSP 榜还没出来就 NOIP 了。有点紧张。
不过其实没什么,想想我 J 第一二题都挂到了 90 的好成绩,肯定 RP 转移了。
SX 有无面基?
晚上打 NFLS-S,前四题 AK,第一次 AK 普及赛。
day -1(11.16)
做了道紫题。
学校跳蚤市场了,还挺好玩的。
day 0(11.17)
运势大吉。
写题解,求 RP++。
day 1(11.18)
早晨 7:10 出发。
去了之后真的好冷啊。进楼以后碰见了同学。
开始前略,写了快读和文件输入输出。
先看 T1,发现好像可做。
明显的,一个串的最小字典序如果比任意另一个串的最大字典序还大,就不可能为字典序最小的串。
所以就写出来了。
看 T2。明显并查集,但是写了一半意识到了一个问题:如果一个更新了,那么与以前在一个集合的变量就有可能不在一个集合了啊!废了,看 T3T4。
T3 一眼就是神秘数据结构,T4 B 性质还行,写了一下。
随后想到了 T1 可以开桶加速字典序比较,所以扭头写 T1。侧大样例 573ms。应该很稳吧。
随后又看见了 T4T2 小数据可以二进制枚举,于是写了些,最后死磕 T3,没收获。
预估 100+20+0+16~100+25+5+21,没拉爆 xsy。
总结:挺满意的,前 20 问题稍大,估计进不了初中前三。不过 S6 级勾已经很爽了。
upd on 2024.8.15:实际 100+20+0+8=128,挂了一些分但是在接受范围内。
#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
int x=0,f=1;char c=getchar();
while(c<48||c>57){if(c=='-')f=-1;c=getchar();}
while(c>47&&c<58)x=(x<<1)+(x<<3)+c-48,c=getchar();
return f?x:-x;
}
char str[3005];
int n,m;
struct node{
int cnt[27];
}dic[3005];
bool p(int x,int y){
int strx,stry;
rep(i,0,25)
if(dic[x].cnt[i]){
strx=i;
break;
}
rep(i,0,25)
if(dic[y].cnt[25-i]){
stry=25-i;
break;
}
if(strx>=stry) return 1;
else return 0;
}
int main(){
freopen("dict.in","r",stdin);
freopen("dict.out","w",stdout);
n=read(),m=read();
rep(i,1,n){
scanf("%s",str);
rep(j,0,m-1) dic[i].cnt[str[j]-97]++;
}
rep(i,1,n){
bool fl=1;
rep(j,1,n)
if(j!=i&&p(i,j)){
fl=0;
break;
}
putchar(fl+48);
}
return 0;
}
/*
Name: T1
Copyright: 100
Author: zgy_123
Date: 18/11/23 12:37
Description: None
*/
#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return f?x:-x;
}
int main(){
freopen("expand.in","r",stdin);
freopen("expand.out","w",stdout);
int q=read();
rep(i,1,q) cout<<"1";
return 0;
}
/*
Name: T3
Copyright: 0
Author: zgy_123
Date: 18/11/23 12:37
Description: None
*/
#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return f?x:-x;
}
struct node{
int x,y,v;
}a[1005];
int day_[20];
void worksub1(int n,int m,int k,int d){
rep(i,1,m) cin>>a[i].x>>a[i].y>>a[i].v;
long long ans=0;
rep(i,0,(1<<n)-1){
long long tot=0;
rep(j,0,n-1) day_[j+1]=(day_[j]+1)*(i&(1<<j));
rep(j,0,n-1) tot-=d*(i&(1<<j));
rep(i,1,m) if(day_[a[i].x]>=a[i].y) tot+=a[i].v;
ans=max(ans,tot);
}
cout<<ans<<endl;
}
void worksub2(int n,int m,int k,int d){
long long ans=0;
while(m--){
int x=read(),y=read(),v=read();
if(y<=k) ans+=max(0ll,v-1ll*y*d);
}
cout<<ans<<endl;
}
int main(){
freopen("run.in","r",stdin);
freopen("run.out","w",stdout);
int t=read();t=read();
while(t--){
int n=read(),m=read(),k=read(),d=read();
if(n<=18) worksub1(n,m,k,d);
else worksub2(n,m,k,d);
}
return 0;
}
/*
Name: T4
Copyright: 16
Author: zgy_123
Date: 18/11/23 12:36
Description: None
*/
#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return f?x:-x;
}
struct node{
char op;
int x,y;
}a[15];
int val[15],val2[15];
void worksub1(int n,int m){
int ans=2e9;
rep(tf,0,(1<<n)-1){
for(int t=tf;;t=(t-1)&tf){
int cnt=0;
rep(i,0,n-1){
if((tf&(1<<i))==0) val[i+1]=0,cnt++;
else if(t&(1<<i)) val[i+1]=1;
else val[i+1]=-1;
}
rep(i,1,n) val2[i]=val[i];
rep(i,1,m)
if(a[i].op=='T') val2[a[i].x]=1;
else if(a[i].op=='F') val2[a[i].x]=-1;
else if(a[i].op=='U') val2[a[i].x]=0;
else if(a[i].op=='+') val2[a[i].x]=val2[a[i].y];
else val2[a[i].x]=-val2[a[i].y];
bool fl=0;
rep(i,1,n) if(val[i]!=val2[i]) fl=1;
if(fl==0) ans=min(ans,cnt);
if(t==0) break;
}
}
cout<<ans<<endl;
}
int main(){
freopen("tribool.in","r",stdin);
freopen("tribool.out","w",stdout);
int t=read();t=read();
while(t--){
int n=read(),m=read();
rep(i,1,m){
cin>>a[i].op>>a[i].x;
if(a[i].op=='-'||a[i].op=='+') cin>>a[i].y;
}
worksub1(n,m);
}
return 0;
}
/*
Name: T2
Copyright: 20
Author: zgy_123
Date: 18/11/23 12:37
Description: None
*/
听说 xsy CE 了?祝好,但是才一年半就考 NOIplus,拉爆我。我一年半还在学树,他一年半学线段树和摩尔投票。。。