Noip模拟57 2021.9.20
规律总结:联考必爆炸
T1 2A
没$A$掉的大水题,但是是真的不知道$000$前面的$00$也算先导$0$,以后要长记性,这种东西不能再错了
再打三遍:
$000$前面的$00$也算先导$0$
$000$前面的$00$也算先导$0$
$000$前面的$00$也算先导$0$

1 #include<bits/stdc++.h>
2 #define int long long
3 using namespace std;
4 const int NN=100,inf=0x3fffffff;
5 int n,stk[NN],top,len,tmp[NN][NN],dian;
6 char s[NN];
7 bool check=0;
8
9 namespace WSN{
10 inline short main(){
11 freopen("ip.in","r",stdin);
12 freopen("ip.out","w",stdout);
13 scanf("%s",s+1);n=strlen(s+1);
14
15 for(int i=1;i<=n;i++){
16 int j=i,num=0,pw=1; bool f=0; top=0;
17 while(j<=n&&'0'<=s[j]&&s[j]<='9'){
18 stk[++top]=s[j]-'0';
19 ++j;
20 }
21 for(int k=top;k;k--){
22 num+=pw*stk[k];pw*=10;
23 if(num>255){f=1;break;}//>255
24 if(stk[1]==0&&top>1){f=1;break;}//pre of 0
25 }
26 if(f){check=1;puts("NO");break;}
27 if(j<=n&&s[j]!='.'&&(s[j]>'9'||s[j]<'0')){check=1;puts("NO");break;}//rest of char
28 if(s[j]=='.'){++dian;}
29 if(dian>3){puts("NO");check=1;break;}//'.'>3
30 i=j;
31 }
32 if(!check){puts("YES");return 0;}
33
34 int tim=0;len=0;
35 for(int i=1;i<=n;i++){
36 int j=i,num=0,pw=1; top=0; bool f=0;
37 while('0'<=s[j]&&s[j]<='9'){
38 stk[++top]=s[j]-'0';
39 ++j;
40 }
41 if(top){
42 ++tim;
43 for(int k=top;k;k--){
44 num+=pw*stk[k]; pw*=10;
45 if(num>255){
46 tmp[tim][1]=2; tmp[tim][2]=5; tmp[tim][3]=5; tmp[tim][0]=3;
47 f=1; break;
48 }
49 if(stk[1]==0&&top>1){
50 int u=1;while(stk[u]==0&&u<=top) ++u;
51 if(u==top+1){
52 tmp[tim][1]=0; tmp[tim][0]=1;
53 f=1; break;
54 }
55 for(;u<=top;u++) tmp[tim][++tmp[tim][0]]=stk[u];
56 f=1; break;
57 }
58 }
59 if(!f) for(int k=1;k<=top;k++) tmp[tim][k]=stk[k],tmp[tim][0]++;
60 }
61 i=j;
62 }
63 for(int i=1;i<=tim;i++){
64 for(int j=1;j<=tmp[i][0];j++) printf("%lld",tmp[i][j]);
65 if(i!=tim) printf(".");
66 } puts("");
67 return 0;
68 }
69 }
70 signed main(){return WSN::main();}
T2 2B
看成了$dp$,去打了$T3$,十分钟冲了一发暴力走人了(貌似这是我考场上第二次把大水题看成$dp$,上次好像还是联考?)
贪心的考虑删$AP$肯定最后剩的少,实在不行的时候再删$PP$

1 #include<bits/stdc++.h>
2 #define int long long
3 using namespace std;
4 const int NN=1e4+5,inf=0x3fffffff;
5 int n,a1,a2;
6 char s[NN];
7
8 namespace WSN{
9 inline short main(){
10 freopen("apstr.in","r",stdin);
11 freopen("apstr.out","w",stdout);
12 scanf("%s",s+1); n=strlen(s+1);
13 for(int i=1;i<=n;i++){
14 if(s[i]=='A') ++a1;
15 else{
16 if(!a1) a2++;
17 else a1--;
18 }
19 }
20 if(a2&1) cout<<a1+1<<endl;
21 else cout<<a1<<endl;
22 return 0;
23 }
24 }
25 signed main(){return WSN::main();}
T3 2C
第一,二种情况直接可以用$\textit{unordered_map}$搞过,考虑菱形的时候
使用$bitset$记录一下每个节点的所有的爹,然后枚举当前节点$x$的任意两个直接爹取交集
不为空就证明之前肯定是一个有菱形的形状,但是还要看看两个爹之间是否有连边,如果没有就是真菱形
其实所有的判断条件题目里面都给了,就是看代码实现细节,(比如不合法要清零。。。。)

1 #include<bits/stdc++.h>
2 #define int long long
3 using namespace std;
4 int n,tim,cnt;
5 string s,t[1005];
6 unordered_map<string,int> mp;
7 bitset<1005> vis[1005];
8 namespace WSN{
9 inline short main(){
10 freopen("class.in","r",stdin);
11 freopen("class.out","w",stdout);
12 cin>>n;
13 for(int w=1;w<=n;w++){
14 cin>>s; char c; cin>>c; bool f=0;
15 tim=0; if(mp[s]!=0) f=1;
16 while(1){
17 cin>>t[++tim];if(t[tim][0]==';') break;
18 if(f==0&&mp[t[tim]]==0) f=1;
19 } --tim;
20 if(f){puts("greska");continue;}
21 mp[s]=++cnt; int x=mp[s]; f=0;
22 for(int i=1;i<tim;i++){
23 for(int j=i+1;j<=tim;j++){
24 int y=mp[t[i]],z=mp[t[j]];
25 bitset<1005> t=vis[y]&vis[z];
26 if(!t.none()&&!vis[y][z]&&!vis[z][y]){f=1;break;}
27 } if(f) break;
28 }
29 if(f){puts("greska");mp[s]=0;--cnt;continue;}
30 for(int i=1;i<=tim;i++)
31 vis[x]|=vis[mp[t[i]]],vis[x][mp[t[i]]]=1;
32 puts("ok");
33 }
34 return 0;
35 }
36 }
37 signed main(){return WSN::main();}
T4 2D

按照题解上的做,然后就是处理$vis$数组的时候有细节
要记录一个$part$数组表示值域开始不同的分界,然后处理$vis$的时候维护$part$数组即可

1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long LL;
4 namespace AE86{
5 inline int read(){
6 int x=0,f=1;char ch=getchar();
7 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
8 while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;
9 }inline void write(LL x,char opt='\n'){
10 char ch[20];int len=0;if(x<0)x=~x+1,putchar('-');
11 do{ch[len++]=x%10+(1<<5)+(1<<4);x/=10;}while(x);
12 for(register int i=len-1;i>=0;--i)putchar(ch[i]);putchar(opt);}
13 }using namespace AE86;
14
15 const int NN=1e6+5;
16 int n,m,M,N,B,deg[NN],fa[NN];
17 vector<int> e[NN];
18 struct SNOW{int id,d;}p[NN],a[NN];
19 int rk[NN],bin[NN],part[NN],vis[NN];
20 LL ansk,ans=-1e18;
21 inline int getfa(int x){return fa[x]=((fa[x]==x)?x:getfa(fa[x]));}
22 inline void pre(){
23 for(int i=1;i<=n;i++) p[i].id=i,p[i].d=deg[i];
24 for(int i=1;i<=n;i++) ++bin[p[i].d];
25 for(int i=1;i<=n;i++) bin[i]+=bin[i-1];
26 for(int i=n;i;i--) rk[i]=bin[p[i].d]--;
27 for(int i=1;i<=n;i++) a[rk[i]]=p[i];
28 for(int i=1;i<=n-1;i++) if(a[i].d!=a[i+1].d) part[a[i].d]=i;
29 for(int i=1;i<=n;i++) for(auto y:e[a[i].id]) if(a[rk[y]].d>a[i].d){
30 --a[rk[y]].d; int pos=part[a[rk[y]].d]+1;
31 part[a[rk[y]].d]++;int id=a[pos].id;
32 swap(a[rk[id]],a[rk[y]]); swap(rk[id],rk[y]);
33 }
34 for(int i=1;i<=n;i++) vis[a[i].id]=a[i].d;
35 // for(int i=1;i<=n;i++) cout<<vis[i]<<endl;
36 }
37 int ns[NN],ds[NN],ms[NN];
38 inline void get(){
39 for(int i=1;i<=n;i++) bin[i]=0,rk[i]=0;
40 for(int i=1;i<=n;i++) ++bin[vis[i]];
41 for(int i=1;i<=n;i++) bin[i]+=bin[i-1];
42 for(int i=n;i;i--) rk[i]=bin[vis[i]]--;
43 for(int i=1;i<=n;i++) bin[rk[i]]=i;
44 for(int i=1;i<=n;i++) ns[i]=1,ds[i]=deg[i];
45 // for(int i=1;i<=n;i++) cout<<ns[i]<<" "<<ds[i]<<endl;
46 for(int i=1;i<=n;i++) fa[i]=i;
47 }
48
49 namespace WSN{
50 inline short main(){
51 freopen("kdgraph.in","r",stdin);
52 freopen("kdgraph.out","w",stdout);
53 n=read(); m=read(); M=read(); N=read(); B=read();
54 for(int i=1;i<=m;i++){
55 int u=read(),v=read(); ++deg[u]; ++deg[v];
56 e[u].push_back(v); e[v].push_back(u);
57 }
58 pre(); get();
59 for(int i=n;i;i--){
60 int x=bin[i],X=getfa(x);
61 for(auto y:e[x]) if(rk[y]>=rk[x]){
62 int Y=getfa(y);
63 if(X!=Y){
64 if(ns[X]<=ns[Y]) swap(X,Y);
65 ns[X]+=ns[Y]; ds[X]+=ds[Y]; ms[X]+=ms[Y]; fa[Y]=X;
66 } ms[X]++;
67 }
68 if(vis[x]!=vis[bin[i-1]]){
69 for(int j=i;j<=n&&vis[x]==vis[bin[j]];j++){
70 int FA=getfa(bin[j]);
71 LL val=1ll*M*ms[FA]-1ll*N*ns[FA]+1ll*B*(ds[FA]-(ms[FA]<<1));
72 if(val>ans){ ans=val; ansk=1ll*vis[x]; }
73 }
74 }
75 }
76 write(ansk,' ');write(ans);
77 return 0;
78 }
79 }
80 signed main(){return WSN::main();}
Noip模拟57 2021.9.20的更多相关文章
- Noip模拟81 2021.10.20
T1 语言 比较简单的题,然后就瞎写了,所以考场上就我一个写了线段树的,所以我的常数.... 所以就枚举动词的位置,找前面后面有没有出现$4$即可 1 #include<bits/stdc++. ...
- 2021.9.20考试总结[NOIP模拟57]
(换个编辑器代码就SB地不自动折叠了.. T1 2A 考察快读的写法. $code:$ T1 #include<bits/stdc++.h> #define scanf SCANF=sca ...
- Noip模拟70 2021.10.6
T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列, ...
- Noip模拟76 2021.10.14
T1 洛希极限 上来一道大数据结构或者单调队列优化$dp$ 真就没分析出来正解复杂度 正解复杂度$O(q+nm)$,但是据说我的复杂度是假的 考虑一个点转移最优情况是从它上面的一个反$L$形转移过来 ...
- Noip模拟69 2021.10.5
考场拼命$yy$高精度结果没学好$for$循环痛失$50pts$,当场枯死 以后一定打对拍,要不考后会... T1 石子游戏 首先要知道典型的$NIM$博弈,就是说如果所有堆石子个数的异或和为$0$则 ...
- Noip模拟63 2021.9.27(考场惊现无限之环)
T1 电压机制 把题目转化为找那些边只被奇数环包含. 这样的话直接$dfs$生成一棵树,给每个点附上一个深度,根据其他的非树边都是返祖边 可以算出环内边的数量$dep[x]-dep[y]+1$,然后判 ...
- Noip模拟61 2021.9.25
T1 交通 考场上想了一个$NPC$.应该吧,是要求出图里面的所有可行的不重复欧拉路 无数种做法都无法解出,时间也都耗在这个上面的,于是就考的挺惨的 以后要是觉得当前思路不可做,就试着换一换思路,千万 ...
- Noip模拟59 2021.9.22
新机房首模拟变倒数 T1 柱状图 关于每一个点可以做出两条斜率分别为$1,-1$的直线, 然后题意转化为移动最少的步数使得所有点都在某一个点的两条直线上 二分出直线的高度,判断条件是尽量让这条直线上部 ...
- Noip模拟52 2021.9.13
T1 异或 比较稳的切掉 观察数据范围,无法线性筛啥的,根号复杂度也会死,于是只能考虑$log$级 然后打表 发现当$n$为$2^i$时的答案是一个可递归数列: $1,3,7,15,31,63,127 ...
随机推荐
- 【第二篇】- Git 安装配置之Spring Cloud直播商城 b2b2c电子商务技术总结
Git 安装配置 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://g ...
- centos7 下安装 mysql5.7
由于CentOS7的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件. 下载命令: wget https://dev.mysql.com/get/mysql57-commu ...
- 机器学习——softmax回归
softmax回归 前面介绍了线性回归模型适用于输出为连续值的情景.在另一类情景中,模型输出可以是一个像图像类别这样的离散值.对于这样的离散值预测问题,我们可以使用诸如 softmax 回归在内的分类 ...
- mybatis一对多联表查询的两种常见方式
1.嵌套结果查询(部分代码如下) sql语句接上: 注释:class表(c别名),student表teacher(t别名)teacher_id为class表的字段t_id为teacher表的字段,因为 ...
- php处理url的rawurlencode:可处理空格加号
(PHP 4, PHP 5, PHP 7) rawurlencode - 按照 RFC 3986 对 URL 进行编码 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号( ...
- 数组转为unicode字符编码字符串
json_encode($data, JSON_UNESCAPED_UNICODE)在创建微信卡券,发送数据时需要这个
- (转载https://segmentfault.com/a/1190000016313947)了解RestFul Api架构风格设计
最近几年REST API越来越流行,特别是随着微服务的概念被广泛接受和应用,很多Web Service都使用了REST API. REST是HTTP规范主要编写者之一的Roy Fielding提出的, ...
- Docker系列(27)- 容器互联--link
思考 思考一个场景,我们编写了一个微服务,database url=IP:,项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以使用名字来进行访问容器吗 实践 [root@localhost ...
- 压测中的QPS与TPS区别
原文来自:https://www.cnblogs.com/fkkk/p/11957566.html QPS(每秒查询率)=并发数/平均响应时间 TPS(每秒处理事务数)=请求数/时间(秒) TPS的过 ...
- [转载]提升SQLite数据插入效率低、速度慢的方法
转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...