完了,看来上一次的flag要应验了,我大概是真的要掉成pupil了吧。。

A - Connect Three

这个就是找到x的中间值,y的中间值,然后切一下,然后把所有的点挂到这条边上。但是我做的还是太慢了啊,还WA了一次,具体原因就是把\(sort(x,x+3)\)写成了\(sort(x,x+2)\)。。。然后就多花了十分钟。凉凉的前兆。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<cmath>
#include<cctype>
using namespace std; typedef long long ll;
const int Maxn=410000; int x[10],y[10],a[10],b[10],num;
int ansx[Maxn],ansy[Maxn],bj[1100][1100]; int main() {
scanf("%d%d%d%d%d%d",&x[0],&y[0],&x[1],&y[1],&x[2],&y[2]);
memcpy(a,x,sizeof(a));
memcpy(b,y,sizeof(b));
sort(x,x+3);sort(y,y+3);
int xx=x[1],yy=y[1];
for(int i=x[0];i<=x[2];i++) bj[i][yy]=1;
for(int i=b[0];i<=yy;i++) bj[a[0]][i]=1;
for(int i=yy;i<=b[0];i++) bj[a[0]][i]=1;
for(int i=b[1];i<=yy;i++) bj[a[1]][i]=1;
for(int i=yy;i<=b[1];i++) bj[a[1]][i]=1;
for(int i=b[2];i<=yy;i++) bj[a[2]][i]=1;
for(int i=yy;i<=b[2];i++) bj[a[2]][i]=1;
for(int i=0;i<=1000;i++)
for(int j=0;j<=1000;j++)
if(bj[i][j]) ansx[++num]=i,ansy[num]=j;
printf("%d\n",num);
for(int i=1;i<=num;i++)
printf("%d %d\n",ansx[i],ansy[i]);
return 0;
}

B - Minimum Diameter Tree

这个有一个结论,最后有权值的边都是入度为1的点连出去的边,因为如果不是入度为1的点连出去的边,那么一定可以把他的权值下放给入度为1的边,这样一定不会更差。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<cmath>
#include<cctype>
using namespace std; typedef long long ll;
const int Maxn=410000; int d[Maxn]; int main() {
int n,s,u,v;
scanf("%d%d",&n,&s);
for(int i=1;i<n;i++) {
scanf("%d%d",&u,&v);
d[u]++;d[v]++;
}
int sum=0;
for(int i=1;i<=n;i++)
if(d[i]==1) sum++;
printf("%.8lf",2.0*s/sum);
return 0;
}

C - Vasya and Templates

这个本质上是傻逼题,但是我太急了,所以就写崩了:

然后我考完试之后看了看数据,然后把一个很简单的特判改了一下就RE了,又一看是数组开小了,再改上就A了。。然而直接把这个特判删掉也能对。我。。。

好吧,这个题就是说如果a和b相等,那就直接挨着赋值,如果不行那就不行了。

如果不相等,那么从前往后看,如果这一位可以赋成两个中间的值,那剩下的随便赋就好了。

如果这一位那两个相等,那肯定要赋成这个值,如果不行那就不行了。

如果不相等,那就枚举赋成那个,另一个就不用考虑了。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<cmath>
#include<cctype>
using namespace std; typedef long long ll;
const int Maxn=1010000; int lens,k;
char s[Maxn],a[Maxn],b[Maxn];
int ans[31],vis[31],tmp[31],tmp2[31]; int sola(int x); int solb(int x); int main() {
// freopen("test.in","r",stdin);
int t;scanf("%d",&t);
while(t--) {
scanf("%d",&k);
scanf("%s%s%s",s,a,b);
memset(ans,-1,sizeof(ans));
memset(vis,-1,sizeof(vis));
lens=strlen(s);
int flag=0,bj=0;
for(int i=0;i<lens;i++) s[i]-='a',a[i]-='a',b[i]-='a';
for(int i=0;i<lens;i++)
if(b[i]<a[i]) {//对,没错,就是这个特判,我也是不知道怎么想的,还要判a是否小于b,但是他保证了这一点了吧。。
puts("NO");
bj=1;
break;
}
else if(b[i]>a[i]) break;
if(bj) continue;
for(int i=0;i<lens;i++)
if(a[i]!=b[i]) {
flag=1;
break;
}
if(flag) {
for(int i=0;i<lens;i++) {
if(~ans[s[i]]) {
if(ans[s[i]]>a[i]&&ans[s[i]]<b[i]) break;
if(ans[s[i]]<a[i]||ans[s[i]]>b[i]) {
puts("NO");
bj=1;break;
}
if(a[i]!=b[i]) {
if(ans[s[i]]==a[i]) if(sola(i+1)) break;
if(ans[s[i]]==b[i]) if(solb(i+1)) break;
puts("NO");
bj=1;
break;
}
}
else {
for(int j=a[i]+1;j<b[i];j++)
if(vis[j]==-1) {
ans[s[i]]=j;
vis[j]=s[i];
goto solve;
}
if(a[i]!=b[i]) {
memcpy(tmp,ans,sizeof(tmp));
memcpy(tmp2,vis,sizeof(tmp2));
if(vis[a[i]]==-1) {
ans[s[i]]=a[i],vis[a[i]]=s[i];
if(sola(i+1)) break;
}
memcpy(ans,tmp,sizeof(ans));
memcpy(vis,tmp2,sizeof(vis));
if(vis[b[i]]==-1) {
ans[s[i]]=b[i],vis[b[i]]=s[i];
if(solb(i+1)) break;
}
puts("NO");
bj=1;break;
}
else {
if(~vis[a[i]]) {
puts("NO");
bj=1;
break;
}
ans[s[i]]=a[i];
vis[a[i]]=s[i];
}
}
}
}
else {
for(int i=0;i<lens;i++)
if(ans[s[i]]==-1) {
if(vis[a[i]]==-1)
ans[s[i]]=a[i],vis[a[i]]=s[i];
else {
puts("NO");
bj=1;
break;
}
}
else
if(ans[s[i]]!=a[i]) {
puts("NO");
bj=1;
break;
}
}
solve:;
if(bj) continue;
int temp=0;
for(int i=0;i<k;i++) if(ans[i]==-1) {
while(~vis[temp]) temp++;
ans[i]=temp;vis[temp]=1;
}
puts("YES");
for(int i=0;i<k;i++) printf("%c",ans[i]+'a');
putchar('\n');
}
return 0;
} int sola(int x) {
for(int i=x;i<lens;i++) {
if(~ans[s[i]]) {
if(ans[s[i]]>a[i]) return 1;
if(ans[s[i]]<a[i]) return 0;
}
else {
for(int j=a[i]+1;j<k;j++) if(vis[j]==-1) {
ans[s[i]]=j;
vis[j]=s[i];
return 1;
}
if(vis[a[i]]==-1) {
ans[s[i]]=a[i];
vis[a[i]]=s[i];
continue;
}
return 0;
}
}
return 1;
} int solb(int x) {
for(int i=x;i<lens;i++) {
if(~ans[s[i]]) {
if(ans[s[i]]<b[i]) return 1;
if(ans[s[i]]>b[i]) return 0;
}
else {
for(int j=0;j<b[i];j++) if(vis[j]==-1) {
ans[s[i]]=j;
vis[j]=s[i];
return 1;
}
if(vis[b[i]]==-1) {
ans[s[i]]=b[i];
vis[b[i]]=s[i];
continue;
}
return 0;
}
}
return 1;
}

这场也体现出了一些缺陷,比如看题太过急躁,代码能力还是较弱,调试能力太差,做题状态不佳,这些可能是与平常练习的方式有关,最近要努力了,争取能再上回去,当然能上橙更好啊。

Codeforces Round #528 div1的更多相关文章

  1. Codeforces Round #543 Div1题解(并不全)

    Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下 ...

  2. Codeforces Round #545 Div1 题解

    Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...

  3. Codeforces Round #539 Div1 题解

    Codeforces Round #539 Div1 题解 听说这场很适合上分QwQ 然而太晚了QaQ A. Sasha and a Bit of Relax 翻译 有一个长度为\(n\)的数组,问有 ...

  4. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

  5. [Codeforces Round #254 div1] C.DZY Loves Colors 【线段树】

    题目链接:CF Round #254 div1 C 题目分析 这道题目是要实现区间赋值的操作,同时还要根据区间中原先的值修改区间上的属性权值. 如果直接使用普通的线段树区间赋值的方法,当一个节点表示的 ...

  6. Codeforces Round #253 DIV1 C 馋

    http://codeforces.com/contest/442/problem/C 题意非常easy,基本上肯定有坑坑洼洼的样子.看题目案例,从第三个跟第二个没有凹的案例来看的话,多写几个以及多画 ...

  7. (AB)Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round

    A. Right-Left Cipher time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】

    传送门:http://codeforces.com/contest/1087/problem/C C. Connect Three time limit per test 1 second memor ...

  9. Codeforces Round #413 (Div1 + Div. 2) C. Fountains(树状数组维护最大值)

    题目链接:https://codeforces.com/problemset/problem/799/C 题意:有 c 块硬币和 d 块钻石,每种喷泉消耗硬币或钻石中的一种,每个喷泉有一个美丽值,问建 ...

随机推荐

  1. 怎样在 Ubuntu 上使用 ZFS 文件系统 | Linux 中国

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79329762 http://mmbiz ...

  2. MySQL中MyISAM与InnoDB区别及选择,mysql添加外键

    InnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE 表时,是一行一行的删除InnoDB 把数据和索引存放在表空间 ...

  3. [kx]人眼结构&凹/凸透镜成像及生活应用

    物理学中的lamba光谱: http://www.cnblogs.com/iiiiiher/diary/2018/04/05/8724339.html 思路: 电磁光谱-->可见光-->人 ...

  4. 实习培训——Servlet(7)

    实习培训——Servlet(7) 1  Servlet 异常处理 当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类 ...

  5. [LeetCode] 877. Stone Game == [LintCode] 396. Coins in a Line 3_hard tag: 区间Dynamic Programming, 博弈

    Alex and Lee play a game with piles of stones.  There are an even number of piles arranged in a row, ...

  6. EXTJS 4:在renderer中如何控制一个CheckColumn的行为,如显示,只读等属性

    在编写grid下的column时,大家肯定会经常用到renderer这个方法来改变文字的呈现形式,那么如果该column是一个特殊的column,比如CheckColumn时,该方法应该怎样写呢?官方 ...

  7. iOS开发--UILabel根据内容自动调整高度

    写法一:对象方法,传入:字体/最大尺寸. 即可得到宽高, 最大尺寸主要限制宽度,如果是一行就给个{MAXFLOAT,MAXFLOAT};如果是多行就限制X值,Y值随便给 - (CGSize)sizeW ...

  8. vs2010用NuGet(程序包管理)安装EF失败之解决办法

    今天用程序包管理控制台安装EF.报错.如下

  9. pdo sqlserver

    PHP代码如果想要用以上的方式兼容linux服务器和windows服务器,那么大概的示例代码是这样的. <?php header("Content-type: text/html; c ...

  10. python利用WMI监控windows状态如CPU、内存、硬盘

    安装pywin32库 下载地址: https://sourceforge.net/projects/pywin32/files%2Fpywin32/选择对应python版本的文件.下载后在window ...