Mutual Training for Wannafly Union #2
codeforces 298A. Snow Footprints
分类讨论三种情况:
①..RRRRRR…
②..LLLLLLL…
③..RRRLLLL..
//AC by lwq:
#include<stdio.h>
#include<algorithm>
#include<string>
#include<string.h>
using namespace std; int main()
{
int n;
scanf("%d",&n);
char ss[];
scanf("%s",ss);
int len=strlen(ss);
int i;
int begin,end;
for(i=;i<len;i++)
{
if(ss[i]=='.')
continue;
else if(ss[i]=='R')
{
begin=i;
break;
}
else if(ss[i]=='L')
{
end=i;
break;
}
}
if(ss[begin]=='R')
{
for(i=begin+;i<len;i++)
{
if(ss[i]=='.')
{
end=i;
break;
}
else if(ss[i]=='L')
{
end=i-;
break;
}
else
continue;
}
printf("%d %d",begin+,end+);
}
else if(ss[begin]=='L')
{
for(i=len-;i>=;i--)
{
if(ss[i]=='L')
{
begin=i;
break;
}
else
{
continue;
}
}
printf("%d %d",begin+,end);
}
return ;
}
模拟。水题。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char q[];
int main()
{
int t,sx,sy,ex,ey;
scanf("%d %d %d %d %d",&t,&sx,&sy,&ex,&ey);
scanf("%s",q);
int ans=;
bool f=false;
for(int i=;i<t;i++)
{
ans++;
if(q[i]=='E')
{
if(sx<ex)
sx++;
}
else if(q[i]=='S')
{
if(sy>ey)
sy--;
}
else if(q[i]=='W')
{
if(sx>ex)
sx--;
}
else if(q[i]=='N')
{
if(sy<ey)
sy++;
}
if(sx==ex&&sy==ey)
{
f=true;
break;
}
}
if(f)
printf("%d\n",ans);
else
printf("-1\n");
return ;
}
codeforces 382C. Arithmetic Progression
分类讨论:
先考虑特例:n = 1时,有无数组解,答案为 -1
然后根据存在的公差d的数量进行分类:
①d只有一种:
1.若d1 = 0,答案只有一种,输出a[1]
2.若d1为偶数并且只有两个数(n=2),则答案有三种:a[1] - d1, a[1]+d1/2, a[n] + d1 , 例如:2 4 -> 0 3 6
3.其他情况:答案有两种:a[1] – d1, a[n] + d1,例如:1 4 7 –> –2 10
②d有两种:d1, d2(设d2 > d1)
1.若d2 = 2 * d1 并且 cnt(d2) = 1(d2的数量只有一个),则答案只有一种:
根据d1, d2的顺序再分两小类:
(1)a[k]-d1(k为出现第二种公差的位置),例如:1 3 5 9 –> 7
(2)a[k-1]-d1,例如:-1 1 2 3 –> 0
2.其他情况:无解,答案为0
③d有三种以上:无解,答案为0
//AC by lyy:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<cmath>
#include<queue>
#include<limits.h>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long ll;
const int mod = 1e9+;
const int N = 1e5+;
const int inf = 0x3f3f3f3f; int n;
ll a[N]; int main() {
int i, j;
ll d1 , d2; ll k; scanf("%d", &n);
for(i = ; i <= n; ++i) {
scanf("%lld", &a[i]);
}
sort(a+, a++n);
int t;
if(n == ) {printf("-1\n"); return ;} int cnt1 = , cnt2 = ;//d1,d2数量 d1 = d2 = a[] - a[];
int f = ;//只有d1 for(i = ; i <= n; ++i) {
if(f == ) { printf("0\n"); return ; }//有三个以上d
t = a[i] - a[i-];
if(t == d1) cnt1++;
else if(t == d2) cnt2++;
else if(t != d1 && f == ) { cnt2++; d2 = t; f = ; k = i;}//有d2
else if(t != d1 && t != d2 && f == ) { f = ; }
}
int ff = ;
if(d1 > d2) { ff = ; swap(d1, d2); swap(cnt1, cnt2); } //d2 > d1 if(f == ) {
if(d1 == ) {printf("1\n%lld\n", a[]);}
else if((d1 % == ) && n == ) { printf("3\n%lld %lld %lld\n", a[]-d1, a[]+d1/, a[n]+d1); }
else { printf("2\n%lld %lld\n", a[]-d1, a[n]+d1); }
}
else { //f = 2
if(d2 == *d1 && cnt2 == ) {
if(ff == )
printf("1\n%lld\n", a[k]-d1);
else printf("1\n%lld\n", a[k-]-d1);
}
else printf("0\n");
}
return ;
}
codeforces 450D. Jzzhu and Cities 【SPFA】
题意:有n个城市,编号1~n,已知有m条公路和k条铁轨, 保证从1号城市到其他城市距离最短,问可以关闭多少条铁轨。
题解:最短路,看着还有重边,想想SPFA的复杂度E log V,看着数据范围可以就直接用了。
将铁轨进行标记,对d数组进行初始化,并先入队列(刚开始想先求只有公路的最短路,最后考虑铁轨的思路 错误,因为可能有的城市最短路要经过铁路),然后SPFA啦,若是铁路的边被松弛,则对其进行标记,关闭这条铁轨。最后统计判断存在的铁轨数,将原铁轨数减去它就行了。
//yy:最近习惯用链式前向星,结果TLE了,想了想不对劲复杂度没问题啊,,后来经过各种折磨,换成vector存图就AC了,好气啊、姿势老错。。
//补题: AC by lyy
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<cmath>
#include<queue>
#include<limits.h>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long ll;
const int mod = 1e9+;
const int N = 1e5+;
const int M = 3e5+;
const ll inf = 0x3f3f3f3f3f3f3f3f;
struct node {
int v;
int w;
}E[*M];
vector<node> ve[N]; int n, m, k; ll d[N];
bool vis[N];
bool train[N];//是否为铁路 queue<int> q;
void spfa() {
while(!q.empty()) {
int u = q.front(); q.pop();
vis[u] = ;
for(int i = ; i < ve[u].size(); ++i) {
int v = ve[u][i].v;
int w = ve[u][i].w;
if(d[v] >= d[u] + w) {
d[v] = d[u] + w;
if(train[v]) {
train[v] = false;//关闭这个铁轨
}
if(!vis[v]) {
vis[v] = true;
q.push(v);
}
}
}
}
}
int main() {
CLR(vis, );
CLR(train, );
int i, j;
int u, v, w;
scanf("%d%d%d", &n, &m, &k);
for(i = ; i <= n; ++i) {
d[i] = inf;
}
d[] = ; vis[] = ;
q.push(); for(i = ; i <= m; i ++) {
scanf("%d%d%d", &u, &v, &w);
ve[u].push_back(node{v, w});
ve[v].push_back(node{u, w});
} for(i = ; i <= k; ++i) {
scanf("%d%d", &v, &w);
train[v] = true;
if(d[v] > w) {
d[v] = w;
if(!vis[v]) {
q.push(v);
vis[v] = true;
}
} }
spfa();
for(i = ; i <= n; ++i) {
if(train[i]) k--;
}
printf("%d\n", k);
return ;
}
其他题都还做不出来,补都补不动orz
Mutual Training for Wannafly Union #2的更多相关文章
- 【Mutual Training for Wannafly Union #1 】
		
A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如 ...
 - Mutual Training for Wannafly Union #1解题报告
		
---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...
 - Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)
		
题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...
 - Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
		
Mr.BG is very busy person. So you have been given enough time (1000 milliseconds) to help him. Mr. B ...
 - Mutual Training for Wannafly Union #9
		
A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成 ...
 - Mutual Training for Wannafly Union #6
		
A =w= B QvQ C 题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c& ...
 - Mutual Training for Wannafly Union #5
		
A(UVA12336) 题意:给一个n*m(n,m<=1e5)的棋盘,棋盘上有一些障碍点不能放棋子,现在要在棋盘上放4个棋子,满足A->B->C->D->A,其中走的规则 ...
 - Wannafly Union Goodbye 2016
		
A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...
 - Wannafly Union#1
		
题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开 ...
 
随机推荐
- Bash编程(2) 循环与分支
			
Shell中有三种类型的循环:for, until, while,具有3种类型的条件语句:if, case, 条件操作符(&&, ||). 1. 结束码 命令的结束码可以在命令运行完后 ...
 - [Visual studio code 常见问题解决] ——中文乱码、
			
中文乱码问题解决 描述:刚开始安装VScode要打开含中文的文件,都会出现乱码,这时只要点击右下方的“UTF-8”改成“GB2312”即可.但每次都改是很麻烦的,所以要使得VScode默认支持GB23 ...
 - IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述
			
本主题概述 ASP.NET 应用程序的生命周期,列出了重要的生命周期事件,并描述了您编写的代码将如何适应于应用程序生命周期.本主题中的信息适用于 IIS 5.0 和 IIS 6.0.有关 IIS 7. ...
 - MySQL函数库
			
MySQL函数库,这个函数库是一个外部函数库!这个函数提供了对于MySQL数据库进行操作的常用函数,如连接MySQL服务器.打开数据库.执行SQL语句等.所以这个函数库的功能对于我们来说是非常重要的! ...
 - C#基础笔记 转自wojiushigelg
			
笔记如下: 概念:.net与c# .net/dontnet:一般指.net framework框架,一种平台,一种技术 c#(charp):一种编程语言,可以开发基于.net的应用. *java既是一 ...
 - [android] android通信协议
			
1.数据区分 手机端:常量存储 服务器端:数据库建表存储 2.数据来源 android,ios,pc,wap 3.数据采集,数据挖掘 IMEI:设备编号 IMSI:SIM卡编号 4.数据加密 4.1R ...
 - Java Object类的toString()方法
			
Java只要定义一个类,那么它都在继承,没有说明它在继承哪个类的时候,则默认继承java.lang.Object类,也就是说Object类是所有类的父类.看下面一段代码. public class O ...
 - async await基本使用
			
//——<ES6经典入门到进阶>牧码人-Strive 学习笔记//express示例 const fs = require('fs'); //简单封装 fs封装成一个promise con ...
 - JS判断浏览器类型,JS判断客户端操作系统
			
JS判断浏览器类型 function judge(){ var browser = { versions: function() { var u = navigator.userAgent, app ...
 - centos jdk8 install
			
0. 装了好多遍jdk 以前一直是 vi /etc/profile文件 追加 环境变量 ,仔细一看 profile文件提示 尽量不要修改!!! so... 1. 下载jdk8.tar.gz 2. 卸载 ...