前言

又是卡在了T4 , 总分 100 + 200 + 300 = 600pts rank 2449。以后还是要多积累比赛经验。

A

输出a+b,a-b,a*b中最大的数,还要多简单?不挂代码了

题目描述

  • 数字线上有2000001块石头。这些石头的坐标是- 1000000,- 999999 ,- 999998 ,... ,999999 ,1000000。其中,一些ķ连续的石头涂成黑色,其他石头涂成白色。另外,我们知道坐标X处的石头黑色的。打印所有可能包含黑色石头的坐标,按升序排列。

数据范围

  • 1 ≤ ķ ≤ 100
  • 0 ≤ X ≤ 100
  • 输入中的所有值都是整数。

看不懂?(我也看不懂) 还是看样例算了(我是看样例懂的)

样例输入 3 7

样例输出 5 6 7 8 9

解释: 我们知道有三块石头漆成黑色,坐标7处的石头漆成黑色。有三种可能的情况:\(567\),\(678\),\(789\) ,故56789

题解

这下懂了吧?

以x为原点,向左延伸k格,向右延伸k格,输出这个区间。

Code

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#define N 1000000
using namespace std;
inline 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<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
int k,x;
int main()
{
k = read() ,x = read();
int l = max(-N , x-k+1);
int r = min(N , x+k-1);
for(int i=l;i<=r;++i)
printf("%d ",i);
return 0;
}

C

题目描述

给定\(n(2<=n<=10^5)\)个字符串,问有多少对字符串本质是一样的(即组成的字母一样)?

killbunnybunnykill本质是一样的,所以他们构成一对本质一样的字符串(题目保证全是小写且字符串长度均为10)。

题解

想到了把每种本质相同的字符串变成一样的

或者直接说每个字符串排一下序,如 bbbcccaaad 变成 aaabbbcccd (按字典序),就解决本质相同的字符串了

用map来处理本质相同字符串有多少个,然后考虑每个本质相同的字符串的贡献

举例 : 如果本质都是 killbunny 的字符串有3个,这中间就能两两连线连出 2 + 1条线,脑补一下,不难发现,如果本质都是killbunny的字符串有4个,两两配对就能有3 + 2 + 1条线。 故有本质相同的字符串m个,就有n-1 + n-2 + ... + 2 + 1条线,也就是有多少对。根据公式可以快速算这个结果。

Code

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
#define int long long
using namespace std;
inline 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<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
const int N = 1e5+7;
map<string,int> mp;
string name[N];
int n,cnt,ans;
signed main()
{
cin>>n;
int len = 10;
for(int i=1;i<=n;++i) {
char s[15];
cin>>s;
sort(s,s+strlen(s));
if(!mp[s]) name[++cnt] = s;
mp[s]++;
}
for(int i=1;i<=cnt;++i) {
int num = mp[name[i]];
num--; ans += ( (1+num)*num ) / 2;
}
printf("%lld\n",ans);
return 0;
}

D

贪心 + (堆?)

题目描述:

数据范围

题解

贪心策略:按时间将任务排序,把 \(i\) 时刻能做的任务都扔进堆里 , 因为任务是一次性的,所以每个任务放进去过就不再放入了。然后每个时刻看一下堆里面有没有数,有的话就取堆顶出来,而且每个时刻只能取一次。正确性显然。

#include<bits/stdc++.h>
using namespace std;
inline 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<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x*f;
}
const int N=1e5+7;
int n,m,ans;
struct Node{
int a,b;
bool operator < (const Node &x)const {
return a < x.a;
}
}t[N];
priority_queue<int>q;
int main()
{
n=read() ,m=read();
for(int i=1;i<=n;++i) {
t[i].a=read(),t[i].b=read();
}
sort(t+1,t+1+n);
for(int i=1,j=1;i<=m;++i) {
for(;j<=n;++j) {
if(i<t[j].a) break;
q.push(t[j].b);
}
if(!q.empty()) {
ans += q.top();
q.pop();
}
}
printf("%d",ans);
return 0;
}

E

题目描述

给你一张有权有向图(权值叫做硬币),初始在1节点,有0硬币,每走一条路花费p硬币,到达n节点可以选择结束或者不结束,问可否有权值最大,有就输出,没有就输出-1。

n<=2500 m<=5000

题解

遇到这种题目可以先把每条边减去p,这样就是经过这条边可获得的权值了。

如果从某个点u到v可更新权值,那么就更新一下。

如果更新了n次还能更新就说明形成了可以无限更新的环,则置为INF

Code (如果有那位大佬理解得更透彻欢迎评论解释一下)

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#define N 2507
#define M 5007
#define int long long
using namespace std;
inline 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<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
const int INF = 1e18; //longlong的INF不是0x3f3f3f
int n,m,p;
int f[N];
struct Edge {
int u,v,d;
}E[M];
signed main()
{
n = read() ,m = read() ,p = read();
for(int i=1,u,v,d;i<=m;++i) {
u = read() ,v = read() ,d = read();
E[i] = (Edge){u,v,d-p};
}
for(int i=1;i<=n;++i) f[i] = -INF;
f[1] = 0;
for(int i=1;i<=n*2;++i) {
for(int j=1;j<=m;++j) {
int u = E[j].u ,v = E[j].v ,d = E[j].d;
if(f[u]==-INF) continue;
if(f[u]+d > f[v]) {
f[v] = i<=n ? f[u]+d : INF;
}
}
}
if(f[n]==INF) puts("-1");
else if(f[n]<0) puts("0");
else printf("%lld\n",f[n]);
return 0;
}

F

先挖坑,待会去学怎么做

AtCoder Beginner Contest 137的更多相关文章

  1. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  2. AtCoder Beginner Contest 137 D题【贪心】

    [题意]一共有N个任务和M天,一个人一天只能做一个任务,做完任务之后可以在这一天之后的(Ai-1)天拿到Bi的工资,问M天内最多可以拿到多少工资. 链接:https://atcoder.jp/cont ...

  3. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  4. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  5. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  6. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  7. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  8. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  9. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

随机推荐

  1. 【转】Java MySQL数据类型对照

    Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.S ...

  2. php部署调优

    转自Laravel学院,  作者:学院君 最近刚好看到一些php.ini优化问题处理. 很多文章都是把配置全部翻译. (内容翻译太多和流程结构写的不是很清晰,看起来也头大.但是建议全部内容看几遍了解一 ...

  3. angular ajax

    在使用angular 发送ajax的时候,状态信息是正常的,状态码200,返回的参数是使用@responsebody转换后返回的字串.在前端却总是在调用错误的回调函数,也拿不到正确的反馈信息. 回调函 ...

  4. Netflow elasticflow

    http://itfish.net/article/27660.html https://github.com/robcowart/elastiflow/tree/master

  5. 10.1 ‘The server's host key is not cached in the registry’

    10.1 ‘The server's host key is not cached in the registry’ This error message occurs when PuTTY conn ...

  6. <<Effective Java>> 第四十三条

    <<Effective Java>> 第四十三条:返回零长度的数组或者集合,而不是null 如果一个方法的返回值类型是集合或者数组 ,如果在方法内部需要返回的集合或者数组是零长 ...

  7. 三十一、python中urllib和requests包详解

    A.urllibimport urllibimport urllib.requestimport json '''1.loads,dumpsjson.loads():将字符串转化成python的基础数 ...

  8. FutureTask的用法以及两种常用的使用场景

    参考博客:https://blog.csdn.net/linchunquan/article/details/22382487 FutureTask可用于异步获取执行结果或取消执行任务的场景.通过传入 ...

  9. MVC 源码系列之控制器激活(二)之GetControllerType和GetcontrollerInstance

    GetControllerType和GetcontrollerInstance GetControllerType protected internal virtual Type GetControl ...

  10. Java ——修饰符 包 Bean

    本节重点思维导图 Bean 是一个类,类中所有的属性都是私有化的,所有的属性都有相应的getter/setter方法 对于boolean类型的成员变量来说,它的getter方法是:isXxxx() 详 ...