我饿死了,于是写写博客安慰一下即将退役的自己。

ZJ:

T1。

三种颜色,想到一道神奇的‘天空龙’。

于是觉得此题可做。

那好了。

于是切掉,还拿了一个暴力对拍。疯狂A。

啊dfs慢的要死了

T2一眼拓扑裸题。

但是读入很××。

于是拿出 getline(cin,st); 但是死了。

因为输入太……

后来一番倒饬过了样例。

T3丢了一个大暴力,然后发现根本不是图论题,是序列题=。=

然后就不会了。

最后T2就死了

为什么考输入啊????

30
Miemeng 100

00:00:03
0

00:00:04
20

00:00:05
120

00:00:05

TJ解:

T1:

这题我是贪心思路,但是可以证明是正确的。(但是我不想,所以大家感性理解吧)

首先将三种颜色一个一个一个卡在一起。

非常棒

然后一定会剩两种颜色(或是一种)

那么如果有两种,就用多的少的$2:1$加入锅中组合

好好看

然后就考虑剩下的了。

如果剩下的是比较多的那种,那么就可以每三个多的和一个三元的交换来使答案$++$

如果是比较少的那种,就可以将每三个和前面匹配的两种交换。

有个细节,如果多的那个剩一个,可以和下面的两个少的相结合也挺好的。

//decorate

#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; int r,b,y;
void getsort(int &x,int &y,int &z){
if(x<y)swap(x,y);
if(y<z)swap(y,z);
if(x<y)swap(x,y);
}
int main(){
#ifndef LOCAL
freopen("decorate.in" ,"r",stdin);
freopen("decorate.out","w",stdout);
#endif
// while(cin>>r>>y>>b,getsort(r,y,b),cout<<r<<" "<<y<<" "<<b<<endl);
int T;
cin>>T;
while(T--){
scanf("%d%d%d",&r,&b,&y);
getsort(r,b,y);
// cout<<"Start:"<<r<<" "<<b<<" "<<y<<endl; int n_3=y;
r-=n_3,b-=n_3,y-=n_3;
// cout<<"3th_:"<<r<<" "<<b<<" "<<y<<endl; int n_2=min(r/2,b);
r-=n_2*2,b-=n_2; // cout<<"2th_:"<<r<<" "<<b<<" "<<y<<endl;
int swn=0;
if(b==0){
swn=min(n_3,r/3);
}
else if(r==1){
if(b>=2){
b-=2,r--;
swn++;
if(b>0){
swn+=min(n_2+n_3,b/3);
}
}
}
else{//b!=0 && r==0.
swn=min(n_2+n_3,b/3);
}
// cout<<n_3<<"+"<<n_2<<"+"<<swn<<endl;
cout<<n_3+n_2+swn<<endl;
}
}

T2

只考输入的题。

//dependency

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#define N 333333
#define M 3333333 using namespace std;
const int Mod=5131111,Upbit=2411;//5477777
int id[Mod];
string st;
char dat[20]; struct SR{
int f,t,next;
}rs[M];
int pcnt,ecnt,fl[N],pn; struct Myqueue{
int A[M*5];
int f,b;
Myqueue(){f=b=0;}
void clear(){f=b=0;}
bool empty(){return f==b;}
void push(const int k){A[b++]=k;}
void pop(){f++;}
int front(){return A[f];}
}q;
int deg[N];
string thes;
int read(){
getline(cin,thes);
int d=0,n=0;
while((thes[d]<'0' || thes[d]>'9') && d<(int)thes.length())d++;
while(thes[d]>='0' && thes[d]<='9' && d<(int)thes.length()){
n=n*10+thes[d]-'0';
d++;
}
return n;
}
void add(int f,int t){
// cout<<f<<"->"<<t<<endl;
rs[ecnt].f=f;
rs[ecnt].t=t;
rs[ecnt].next=fl[f];
fl[f]=ecnt++;
}
bool topsort(){
q.clear();
for(int i=1;i<=pcnt;i++){
if(deg[i]==0){
q.push(i);
}
}
while(!q.empty()){
int f=q.front();q.pop();
for(int i=fl[f];i!=-1;i=rs[i].next){
int t=rs[i].t;
deg[t]--;
if(deg[t]==0){
q.push(t);
}
}
}
for(int i=1;i<=pcnt;i++)
if(deg[i]!=0)return 1;
return 0;
}
void prerun(){
pcnt=0,ecnt=0;
memset(id , 0,sizeof id );
memset(deg, 0,sizeof deg);
memset(fl ,-1,sizeof fl );
}
int main(){
#ifndef LOCAL
freopen("dependency.in" ,"r",stdin);
freopen("dependency.out","w",stdout);
#endif
// freopen("2.in","r",stdin);
ios_base::sync_with_stdio(false);
int T;
T=read();
while(T--){
prerun();
pn=read();
for(int i=1;i<=pn;i++){
getline(cin,st);
st+=" ";
int f=0,len=st.length();
long long hsn=0;
for(int j=0;j<len;j++){
if(st[j]=='\r')continue;
if((st[j]>='A'&&st[j]<='Z')||(st[j]>='0' && st[j]<='9'))
hsn=(hsn*Upbit+st[j])%Mod;
else{
if(id[hsn]==0)id[hsn]=++pcnt;
int sid=id[hsn];
if(f==0) f=sid;
else {
add(f,sid);
deg[sid]++;
}
hsn=0;
}
}
}
cout<<(topsort()?"Yes":"No")<<endl;
}
}

T3

可以证明将处理出的数组排序然后切开就是优的。

然后有个决策单调性,即转移点是从$i-\frac{i}{j}$到$i$的

那么就可以了(水题使我快乐)

//assignment

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#define N 5555
#define M 55555
#define LL long long using namespace std; int pn,cn,pron,edn;
LL vals[N],pre[N];
LL dp[N][N],
siz[N];
int apppn=0; typedef pair<LL,int> pli;
struct SR{
int f,t,next;
int v;
};
priority_queue<pli,vector<pli>,greater<pli> >q;
struct MAPS{
SR rs[M];
int fl[N];
int cnt;
LL dis[N];
bool is_v[N];
MAPS(){
memset(fl,-1,sizeof fl);
cnt=0;
}
void add(int f,int t,int v){
rs[cnt].f=f;
rs[cnt].t=t;
rs[cnt].v=v;
rs[cnt].next=fl[f];
fl[f]=cnt++;
}
void dij(int st){
memset(dis,0x3f,sizeof dis);
dis[st]=0;
q.push(make_pair(0,st));
while(!q.empty()){
int f=q.top().second;q.pop();
if(is_v[f])continue;
is_v[f]=1;
for(int i=fl[f];i!=-1;i=rs[i].next){
int t=rs[i].t;
if(dis[t]>dis[f]+rs[i].v){
dis[t]=dis[f]+rs[i].v;
q.push(make_pair(dis[t],t));
}
}
}
}
}am,bm; int main(){
#ifndef LOCAL
freopen("assignment.in" ,"r",stdin);
freopen("assignment.out","w",stdout);
#endif
int a,b,v;
scanf("%d%d%d%d",&pn,&cn,&pron,&edn);
for(int i=1;i<=edn;i++){
scanf("%d%d%d",&a,&b,&v);
am.add(a,b,v);
bm.add(b,a,v);
}
am.dij(cn+1);
bm.dij(cn+1);
for(int i=1;i<=cn;i++){
vals[i]=am.dis[i]+bm.dis[i];
// cout<<vals[i]<<" ";
}
// cout<<endl;
sort(vals+1,vals+cn+1);
for(int i=1;i<=cn;i++)
pre[i]=pre[i-1]+vals[i];
memset(dp,0x3f,sizeof dp);
for(int i=1;i<=cn;i++){
dp[i][1]=pre[i]*(i-1);
}
for(int i=1;i<=cn;i++){
for(int j=2;j<=pron;j++){
for(int k=i-i/j;k<i;k++){
dp[i][j]=min(dp[i][j],dp[k][j-1]+(pre[i]-pre[k])*(i-k-1));
}
}
}
// cout<<dp[cn-1][pron-1]<<endl;
cout<<dp[cn][pron]<<endl;
}

19-11-12-Aftern-℘的更多相关文章

  1. NOIp 11.11/12

    最后一场比较正式的NOIp模拟赛,写一发小总结.题目没什么好说的,大部分很简单,先贴一下代码. 1111 T1 //string //by Cydiater //2016.11.11 #include ...

  2. Java面试题:n=2\n1*2*5*6\n--3*4\n\nn=3\n1*2*3*10*11*12\n--4*5*8*9\n----6*7\n如何实现如上结构的数据

    今天学长在面试的时候遇到了一道题,然后让大家做一做. 在不看下面的答案之前,悠闲的朋友们一起来抖动一下大脑吧! 以下是我的想法: import java.util.Scanner;public cla ...

  3. 在CentOS7中安装scala-2.11.12

    从官网下载scala的相关版本 https://www.scala-lang.org/download/2.11.12.html 解压安装包 tar zxf scala-.tgz -C /usr/sc ...

  4. 11:12:21.924 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.

    11:12:21.924 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class or ...

  5. 第24次Scrum会议(11/12)【欢迎来怼】

    一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/12 17:05~17:32,总计27min. 地 ...

  6. TeamWork#3,Week5,Scrum Meeting 11.6, 11.7, 11.11, 11.12

    11.6:到目前为止基本已完成相关知识的学习,各方面工作都开始进行,一开始进行比较慢. 11.7:项目遇到困难,需要补充相关知识,进度慢了下来. 11.11:各方面工作进展比较顺利,没有什么大问题. ...

  7. ZT --- extern "C"用法详解 2010-08-21 19:14:12

    extern "C"用法详解 2010-08-21 19:14:12 分类: C/C++ 1.前言: 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus ...

  8. atitit.Oracle 9 10 11 12新特性attilax总结

    atitit.Oracle 9  10 11  12新特性 1. ORACLE 11G新特性 1 1.1. oracle11G新特性 1 1.2. 审计 1 1.3. 1.   审计简介 1 1.4. ...

  9. Memory+SLES 11/12 OS Tuning & Optimization

    https://www.suse.com/documentation/sles11/book_sle_tuning/data/sec_util_memory.html SLES 11/12 OS Tu ...

  10. Update 19.11 for Azure Sphere

    今天,微软发布了面向Azure Sphere的19.11更新,其主要亮点就是加入了对开发工具Visual Studio Code和Linux开发环境的支持.具体来讲,本次更新包含3个部分: 1. Az ...

随机推荐

  1. python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程

    python学习7—函数定义.参数.递归.作用域.匿名函数以及函数式编程 1. 函数定义 def test(x) # discription y = 2 * x return y 返回一个值,则返回原 ...

  2. Palindrome Partition CodeForces - 932G 回文树+DP+(回文后缀的等差性质)

    题意: 给出一个长度为偶数的字符串S,要求把S分成k部分,其中k为任意偶数,设为a[1..k],且满足对于任意的i,有a[i]=a[k-i+1].问划分的方案数. n<=1000000 题解: ...

  3. Unity实现Android端视频播放

    本文只讲Android短的视频播放 实现方式 使用Handheld.PlayFullScreenMovie(),这个函数实现.具体如下: 1.创建StreamingAssets文件夹,此文件夹放入视频 ...

  4. codis 使用

    1:Jedis与Redisson对比 2.1. 概况对比 Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持:Redisson实现了分布式和可扩展的Java数据 ...

  5. vue sChart组件使用页面一片空白问题及示例

    参考:https://www.ctolib.com/mip/lin-xin-vue-schart.html 在网上其他示例里,我试验后发现:渲染到<canvas id="myChart ...

  6. IDEA与Tomcat的相关配置说明

    1.IDEA会为每个Tomcat部署的项目单独建立一份配置文件 查看控制台的log输出:Using CATAINA_BASE 2.工作空间项目和Tomcat部署的web项目 WEB-INF:内的资源不 ...

  7. SQL链接EXCEL操作

    Sub CopyData_5() Set Cnn = CreateObject("ADODB.Connection")With Cnn.Provider = "micro ...

  8. Font Awesome (Mark)

    Font Awesome为您提供可缩放的矢量图标,您可以使用CSS所提供的所有特性对它们进行更改,包括:大小.颜色.阴影或者其它任何支持的效果. 一个字库,675个图标 仅一个Font Awesome ...

  9. INSTALL_FAILED_TEST_ONLY oppor11p 安装时出现的问题

      刚开始出现这个问题 我很懵逼, 因为我之前一直运行都好好的  !!我在网上查了好多资料 试了好几种办法 我先说下我成功的办法       方法1: Android Studio 3.0会在debu ...

  10. Kubernetes的包管理工具Helm的安装和使用

    1.源码安装 [root@master ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.0-linux-amd64 ...