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 ...
随机推荐
- Identity角色管理四(删除角色)
角色删除方法 [HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> Delete(string id) ...
- Deprecated: __autoload() is deprecated, use spl_autoload_register()
Deprecated: __autoload() is deprecated, use spl_autoload_register() 解决:可能原因PHP版本过高,亲测discuz3.4版本使用ph ...
- SourceTree使用详解-摘录收藏
前言: 非原创,好文收录,原创作者:追逐时光者 俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的.目前市面上比较流行的Git可视化管理工具有SourceTree.Gi ...
- Jmeter系列(8)- 参数化:JSON提取器、全局参数化、CSV文件导入
JSON提取器 同一个响应结果需要提取多个参数进行参数化,下方输入项用分号(;)进行间隔.请求引用时${变量名} 全局参数化 此处全局参数化用的是用户自定义的变量 CSV文件导入
- Shell条件判断(6)- 多重条件判断
多重条件判断 多个条件判断一起使用 测试选项 作用 判断1 -a 判断2 逻辑与,判断1和判断2都成立,最终的结果才为真 判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最终的结果就为真 ! ...
- JMeter脚本开发
什么是jmeter脚本 用户操作系统的动作流程 用户操作系统的请求 类似演戏的剧本 怎么快速开发漂亮的jmeter脚本 准确 快速 漂亮,脚本逻辑清晰,维护性高 脚本开发方案 代理 http代理服务器 ...
- [转载]SELinux 环境下网络服务设置,配置 Apache 、Samba、NFS
原文地址:http://www.ibm.com/developerworks/cn/linux/l-cn-selinux-services1/index.html?ca=drs- 引言 SELinux ...
- [转载]CentOS 下安装LEMP服务(Nginx、MariaDB/MySQL和PHP)
LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用.正如其名称所暗示的, LEMP 包是由 Linux.nginx.MariaDB/MySQL 和 P ...
- Loj#2880-「JOISC 2014 Day3」稻草人【CDQ分治,单调栈,二分】
正题 题目链接:https://loj.ac/problem/2880 题目大意 给出平面上的\(n\)个点,然后求有多少个矩形满足 左下角和右上角各有一个点 矩形之间没有其他点 \(1\leq n\ ...
- P3273-[SCOI2011]棘手的操作【线段树,并查集】
正题 题目链接:https://www.luogu.com.cn/problem/P3273 题目大意 \(n\)个点有权值,要求支持操作 连接两个点 单点加权 联通块加权 全图加权 单点询问 联通块 ...